cryptonite-0.3: Cryptography Primitives sink

LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
Stabilityexperimental
PortabilityGood
Safe HaskellNone
LanguageHaskell2010

Crypto.PubKey.RSA.Types

Description

 

Synopsis

Documentation

data Error Source

error possible during encryption, decryption or signing.

Constructors

MessageSizeIncorrect

the message to decrypt is not of the correct size (need to be == private_size)

MessageTooLong

the message to encrypt is too long

MessageNotRecognized

the message decrypted doesn't have a PKCS15 structure (0 2 .. 0 msg)

SignatureTooLong

the message's digest is too long

InvalidParameters

some parameters lead to breaking assumptions.

Instances

data Blinder Source

Blinder which is used to obfuscate the timing of the decryption primitive (used by decryption and signing).

Constructors

Blinder !Integer !Integer 

Instances

data PublicKey Source

Represent a RSA public key

Constructors

PublicKey 

Fields

public_size :: Int

size of key in bytes

public_n :: Integer

public p*q

public_e :: Integer

public exponant e

data PrivateKey Source

Represent a RSA private key.

Only the pub, d fields are mandatory to fill.

p, q, dP, dQ, qinv are by-product during RSA generation, but are useful to record here to speed up massively the decrypt and sign operation.

implementations can leave optional fields to 0.

Constructors

PrivateKey 

Fields

private_pub :: PublicKey

public part of a private key (size, n and e)

private_d :: Integer

private exponant d

private_p :: Integer

p prime number

private_q :: Integer

q prime number

private_dP :: Integer

d mod (p-1)

private_dQ :: Integer

d mod (q-1)

private_qinv :: Integer

q^(-1) mod p

newtype KeyPair Source

Represent RSA KeyPair

note the RSA private key contains already an instance of public key for efficiency

Constructors

KeyPair PrivateKey 

toPublicKey :: KeyPair -> PublicKey Source

Public key of a RSA KeyPair

toPrivateKey :: KeyPair -> PrivateKey Source

Private key of a RSA KeyPair

private_size :: PrivateKey -> Int Source

get the size in bytes from a private key

private_n :: PrivateKey -> Integer Source

get n from a private key

private_e :: PrivateKey -> Integer Source

get e from a private key