HsOpenSSL-0.11.2.2: Partial OpenSSL binding for Haskell

Safe HaskellNone
LanguageHaskell2010

OpenSSL.RSA

Contents

Description

An interface to RSA public key generator.

Synopsis

Type

class RSAKey k where Source #

RSAKey a is either RSAPubKey or RSAKeyPair.

Minimal complete definition

withRSAPtr, peekRSAPtr, absorbRSAPtr

Methods

rsaSize :: k -> Int Source #

rsaSize key returns the length of key.

rsaN :: k -> Integer Source #

rsaN key returns the public modulus of the key.

rsaE :: k -> Integer Source #

rsaE key returns the public exponent of the key.

withRSAPtr :: k -> (Ptr RSA -> IO a) -> IO a Source #

peekRSAPtr :: Ptr RSA -> IO (Maybe k) Source #

absorbRSAPtr :: Ptr RSA -> IO (Maybe k) Source #

Generating keypair

type RSAGenKeyCallback = Int -> Int -> IO () Source #

RSAGenKeyCallback represents a callback function to get informed the progress of RSA key generation.

  • callback 0 i is called after generating the i-th potential prime number.
  • While the number is being tested for primality, callback 1 j is called after the j-th iteration (j = 0, 1, ...).
  • When the n-th randomly generated prime is rejected as not suitable for the key, callback 2 n is called.
  • When a random p has been found with p-1 relatively prime to e, it is called as callback 3 0.
  • The process is then repeated for prime q with callback 3 1.

generateRSAKey Source #

Arguments

:: Int

The number of bits of the public modulus (i.e. key size). Key sizes with n < 1024 should be considered insecure.

-> Int

The public exponent. It is an odd number, typically 3, 17 or 65537.

-> Maybe RSAGenKeyCallback

A callback function.

-> IO RSAKeyPair

The generated keypair.

generateRSAKey generates an RSA keypair.

generateRSAKey' Source #

Arguments

:: Int

The number of bits of the public modulus (i.e. key size). Key sizes with n < 1024 should be considered insecure.

-> Int

The public exponent. It is an odd number, typically 3, 17 or 65537.

-> IO RSAKeyPair

The generated keypair.

A simplified alternative to generateRSAKey

Exploring keypair

rsaD :: RSAKeyPair -> Integer Source #

rsaD privKey returns the private exponent of the key.

rsaP :: RSAKeyPair -> Integer Source #

rsaP privkey returns the secret prime factor p of the key.

rsaQ :: RSAKeyPair -> Integer Source #

rsaQ privkey returns the secret prime factor q of the key.

rsaDMP1 :: RSAKeyPair -> Maybe Integer Source #

rsaDMP1 privkey returns d mod (p-1) of the key.

rsaDMQ1 :: RSAKeyPair -> Maybe Integer Source #

rsaDMQ1 privkey returns d mod (q-1) of the key.

rsaIQMP :: RSAKeyPair -> Maybe Integer Source #

rsaIQMP privkey returns q^-1 mod p of the key.

rsaCopyPublic :: RSAKey key => key -> IO RSAPubKey Source #

Make a copy of the public parameters of the given key.

DER encoding

fromDERPub :: ByteString -> Maybe RSAPubKey Source #

Parse a public key from ASN.1 DER format

toDERPub :: RSAKey k => k -> ByteString Source #

Dump a public key to ASN.1 DER format