  | HsOpenSSL-0.3: (Part of) OpenSSL binding for Haskell | Contents | Index |  
  | 
 | 
 | 
 | 
 | 
| Description | 
| An interface to PKCS#7 structure and S/MIME message.
 | 
 | 
| Synopsis | 
 | 
 | 
 | 
 | 
| Types
 | 
 | 
| data Pkcs7  | 
| Pkcs7 represents an abstract PKCS#7 structure. The concrete
 type of structure is hidden in the object: such polymorphism isn't
 very haskellish but please get it out of your mind since OpenSSL is
 written in C.
 |  
  | 
 | 
| data Pkcs7Flag  | 
| Pkcs7Flag is a set of flags that are used in many operations
 related to PKCS#7.
 |  | Constructors |  | Pkcs7Text |  |  | Pkcs7NoCerts |  |  | Pkcs7NoSigs |  |  | Pkcs7NoChain |  |  | Pkcs7NoIntern |  |  | Pkcs7NoVerify |  |  | Pkcs7Detached |  |  | Pkcs7Binary |  |  | Pkcs7NoAttr |  |  | Pkcs7NoSmimeCap |  |  | Pkcs7NoOldMimeType |  |  | Pkcs7CRLFEOL |  |  
  |    Instances |   |  
  | 
 | 
| data Pkcs7VerifyStatus  | 
| Pkcs7VerifyStatus represents a result of PKCS#7
 verification. See pkcs7Verify.
 |  | Constructors |  | Pkcs7VerifySuccess (Maybe String) | Nothing if the PKCS#7
   signature was a detached
   signature, and Just content
   if it wasn't.
 |  | Pkcs7VerifyFailure |  |  
  |    Instances |   |  
  | 
 | 
| Encryption and Signing
 | 
 | 
| pkcs7Sign | 
| :: X509 | certificate to sign with
 |  | -> PKey | corresponding private key
 |  | -> [X509] | optional additional set of certificates
   to include in the PKCS#7 structure (for
   example any intermediate CAs in the
   chain)
 |  | -> String | data to be signed
 |  | -> [Pkcs7Flag] | An optional set of flags:
 - Pkcs7Text
 -  Many S/MIME clients
   expect the signed content to include
   valid MIME headers. If the Pkcs7Text
   flag is set MIME headers for type
   "text/plain" are prepended to the
   data.
 - Pkcs7NoCerts
 -  If Pkcs7NoCerts is
   set the signer's certificate will not be
   included in the PKCS#7 structure, the
   signer's certificate must still be
   supplied in the parameter though. This
   can reduce the size of the signature if
   the signer's certificate can be obtained
   by other means: for example a previously
   signed message.
 - Pkcs7Detached
 -  The data being signed
   is included in the PKCS#7 structure,
   unless Pkcs7Detached is set in which
   case it is ommited. This is used for
   PKCS#7 detached signatures which are
   used in S/MIME plaintext signed message
   for example.
 - Pkcs7Binary
 -  Normally the supplied
   content is translated into MIME
   canonical format (as required by the
   S/MIME specifications) but if
   Pkcs7Binary is set no translation
   occurs. This option should be uesd if
   the supplied data is in binary format
   otherwise the translation will corrupt
   it.
 - Pkcs7NoAttr
 - 
 - Pkcs7NoSmimeCap
 -  The signedData
   structure includes several PKCS#7
   authenticatedAttributes including the
   signing time, the PKCS#7 content type
   and the supported list of ciphers in an
   SMIMECapabilities attribute. If
   Pkcs7NoAttr is set then no
   authenticatedAttributes will be used. If
   Pkcs7NoSmimeCap is set then just the
   SMIMECapabilities are omitted.
 
  |  | -> IO Pkcs7 |  |  | pkcs7Sign creates a PKCS#7 signedData structure.
 |  
  | 
 | 
| pkcs7Verify | 
| :: Pkcs7 | A PKCS#7 structure to verify.
 |  | -> [X509] | Set of certificates in which to
   search for the signer's
   certificate.
 |  | -> X509Store | Trusted certificate store (used
   for chain verification).
 |  | -> Maybe String | Signed data if the content is not
   present in the PKCS#7 structure
   (that is it is detached).
 |  | -> [Pkcs7Flag] | An optional set of flags:
 - Pkcs7NoIntern
 -  If
   Pkcs7NoIntern is set the
   certificates in the message itself
   are not searched when locating the
   signer's certificate. This means
   that all the signers certificates
   must be in the second argument
   ([X509]).
 - Pkcs7Text
 -  If the Pkcs7Text
   flag is set MIME headers for type
   "text/plain" are deleted from
   the content. If the content is not
   of type "text/plain" then an
   error is returned.
 - Pkcs7NoVerify
 -  If
   Pkcs7NoVerify is set the
   signer's certificates are not
   chain verified.
 - Pkcs7NoChain
 -  If Pkcs7NoChain
   is set then the certificates
   contained in the message are not
   used as untrusted CAs. This means
   that the whole verify chain (apart
   from the signer's certificate)
   must be contained in the trusted
   store.
 - Pkcs7NoSigs
 -  If Pkcs7NoSigs
   is set then the signatures on the
   data are not checked.
 
  |  | -> IO Pkcs7VerifyStatus |  |  | pkcs7Verify verifies a PKCS#7 signedData structure.
 |  
  | 
 | 
| pkcs7Encrypt | 
| :: [X509] | A list of recipient certificates.
 |  | -> String | The content to be encrypted.
 |  | -> Cipher | The symmetric cipher to use.
 |  | -> [Pkcs7Flag] | An optional set of flags:
 - Pkcs7Text
 -  If the Pkcs7Text flag
   is set MIME headers for type
   "text/plain" are prepended to the
   data.
 - Pkcs7Binary
 -  Normally the supplied
   content is translated into MIME
   canonical format (as required by the
   S/MIME specifications) if
   Pkcs7Binary is set no translation
   occurs. This option should be used if
   the supplied data is in binary format
   otherwise the translation will
   corrupt it. If Pkcs7Binary is set
   then Pkcs7Text is ignored.
 
  |  | -> IO Pkcs7 |  |  | pkcs7Encrypt creates a PKCS#7 envelopedData structure.
 |  
  | 
 | 
| pkcs7Decrypt | 
| :: Pkcs7 | The PKCS#7 structure to decrypt.
 |  | -> PKey | The private key of the recipient.
 |  | -> X509 | The recipient's certificate.
 |  | -> [Pkcs7Flag] | An optional set of flags:
 - Pkcs7Text
 -  If the Pkcs7Text flag
   is set MIME headers for type
   "text/plain" are deleted from the
   content. If the content is not of
   type "text/plain" then an error is
   thrown.
 
  |  | -> IO String | The decrypted content.
 |  | pkcs7Decrypt decrypts content from PKCS#7 envelopedData
 structure.
 |  
  | 
 | 
| S/MIME
 | 
 | 
| writeSmime | 
| :: Pkcs7 | A PKCS#7 structure to be written.
 |  | -> Maybe String | If cleartext signing
   (multipart/signed) is being used then
   the signed data must be supplied here.
 |  | -> [Pkcs7Flag] | An optional set of flags:
 - Pkcs7Detached
 -  If Pkcs7Detached
   is set then cleartext signing will be
   used, this option only makes sense for
   signedData where Pkcs7Detached is
   also set when pkcs7Sign is also
   called.
 - Pkcs7Text
 -  If the Pkcs7Text flag
   is set MIME headers for type
   "text/plain" are added to the
   content, this only makes sense if
   Pkcs7Detached is also set.
 
  |  | -> IO String | The result S/MIME message.
 |  | writeSmime writes PKCS#7 structure to S/MIME message.
 |  
  | 
 | 
| readSmime | 
| :: String | The message to be read.
 |  | -> IO (Pkcs7, Maybe String) | (The result PKCS#7
   structure, Just content
   if the PKCS#7 structure was
   a cleartext signature and
   Nothing if it wasn't.)
 |  | readSmime parses S/MIME message.
 |  
  | 
 | 
| Produced by Haddock version 0.8 |