|
sipxtacklib
Version 3.3
|
class to contain an PKCS7 (S/MIME) body More...
#include <SmimeBody.h>


Public Types | |
| enum | ContentEncoding { SMIME_ENODING_UNKNOWN = 0, SMIME_ENODING_BINARY, SMIME_ENODING_BASE64 } |
Public Types inherited from HttpBody | |
| enum | BodyClassTypes { UNKNOWN_BODY_CLASS = 0, HTTP_BODY_CLASS, SMIME_BODY_CLASS, SDP_BODY_CLASS, PIDF_BODY_CLASS, DIALOG_EVENT_BODY_CLASS } |
Public Member Functions | |
| SmimeBody () | |
| default constructor More... | |
| SmimeBody (const char *bytes, int length, const char *contentEncodingValueString) | |
| Construct an SmimeBody from a bunch of bytes. More... | |
| SmimeBody (const SmimeBody &rSmimeBody) | |
| Copy constructor. More... | |
| virtual | ~SmimeBody () |
| Destructor. More... | |
| SmimeBody & | operator= (const SmimeBody &rhs) |
| Assignment operator. More... | |
| UtlBoolean | decrypt (const char *derPkcs12, int derPkcs12Length, const char *pkcs12password, const char *certDbPassword, const char *signerCertDER, int signerCertDERLength, ISmimeNotifySink *pSink=NULL) |
| Decrypt this body using the given private key and cert. contained in the pkcs12 package. More... | |
| UtlBoolean | encrypt (HttpBody *bodyToEncrypt, int numRecipients, const char *derPublicKeyCerts[], int derPubliceKeyCertLengths[], const char *szMyCertNickname, const char *szCertDbPassword, ISmimeNotifySink *pSink=NULL) |
| Encrypt the given body for the given list of recipients. More... | |
| const HttpBody * | getDecryptedBody () const |
| Gets the decrypted form of this body if available. More... | |
| UtlBoolean | isDecrypted () const |
| Query if this body has been decrypted. More... | |
Public Member Functions inherited from HttpBody | |
| HttpBody (const char *bytes=NULL, int length=-1, const char *contentType=NULL) | |
| HttpBody (const char *contentType) | |
| HttpBody (const HttpBody &rHttpBody) | |
| virtual | ~HttpBody () |
| HttpBody & | operator= (const HttpBody &rhs) |
| void | appendBodyPart (const HttpBody &body, const UtlDList ¶meters) |
| Append a multipart body part to an existing multiparty body. More... | |
| virtual int | getLength () const |
| virtual void | getBytes (const char **bytes, int *length) const |
| virtual void | getBytes (UtlString *bytes, int *length) const |
| virtual const char * | getBytes () const |
| UtlBoolean | getMultipartBytes (int partIndex, const char **bytes, int *length, int *start) const |
| const MimeBodyPart * | getMultipart (int partIndex) const |
| int | getMultipartCount () const |
| BodyClassTypes | getClassType () const |
| const char * | getMultipartBoundary () const |
| Get the multipart boundary string. More... | |
| const char * | getContentType () const |
| Get the content type string. More... | |
| UtlBoolean | isMultipart () const |
Static Public Member Functions | |
| static UtlBoolean | nssSmimeEncrypt (int numRecipientCerts, const char *derPublicKeyCerts[], int derPublicKeyCertLengths[], const char *szMyCertNickname, const char *szCertDbPassword, const char *dataToEncrypt, int dataToEncryptLength, UtlBoolean encryptedDataInBase64Format, UtlString &encryptedData, ISmimeNotifySink *pSmimeSink) |
| static UtlBoolean | nssSmimeDecrypt (const char *derPkcs12, int derPkcs12Length, const char *pkcs12Password, const char *certDbPassword, const char *signerCertDER, int signerCertDERLength, UtlBoolean dataIsInBase64Format, const char *dataToDecrypt, int dataToDecryptLength, UtlString &decryptedData, ISmimeNotifySink *pSmimeSink) |
| static UtlBoolean | opensslSmimeEncrypt (int numRecipientCerts, const char *derPublicKeyCerts[], int derPublicKeyCertLengths[], const char *dataToEncrypt, int dataToEncryptLength, UtlBoolean encryptedDataInBase64Format, UtlString &encryptedData) |
| static UtlBoolean | opensslSmimeDecrypt (const char *derPkcs12, int derPkcs12Length, const char *pkcs12Password, UtlBoolean dataIsInBase64Format, const char *dataToDecrypt, int dataToDecryptLength, UtlString &decryptedData) |
| static UtlBoolean | convertPemToDer (UtlString &pemData, UtlString &derData) |
| Utility to convert PEM format data to DER format. More... | |
| static bool | importPKCS12Object (const char *derPkcs12, int derPkcs12Length, const char *pkcs12Password, const char *certDbLocation, const char *certDbPassword) |
Static Public Member Functions inherited from HttpBody | |
| static HttpBody * | copyBody (const HttpBody &sourceBody) |
| Copy the source HttpBody using the correct derived class constructor. More... | |
| static HttpBody * | createBody (const char *bodyBytes, int bodyBytesLength, const char *contentType, const char *contentEncoding) |
| Pseudo body factory. More... | |
Protected Attributes | |
| HttpBody * | mpDecryptedBody |
| enum ContentEncoding | mContentEncoding |
Protected Attributes inherited from HttpBody | |
| int | bodyLength |
| UtlString | mBody |
| UtlString | mMultipartBoundary |
| int | mBodyPartCount |
| MimeBodyPart * | mpBodyParts [MAX_HTTP_BODY_PARTS] |
| BodyClassTypes | mClassType |
class to contain an PKCS7 (S/MIME) body
This class can be used to create an encrypted S/MIME body as well as to decrypt an encrypted body.
| enum ContentEncoding |
| SmimeBody | ( | ) |
default constructor
| SmimeBody | ( | const char * | bytes, |
| int | length, | ||
| const char * | contentEncodingValueString | ||
| ) |
Construct an SmimeBody from a bunch of bytes.
|
virtual |
Destructor.
| UtlBoolean decrypt | ( | const char * | derPkcs12, |
| int | derPkcs12Length, | ||
| const char * | pkcs12password, | ||
| const char * | certDbPassword, | ||
| const char * | signerCertDER, | ||
| int | signerCertDERLength, | ||
| ISmimeNotifySink * | pSink = NULL |
||
| ) |
Decrypt this body using the given private key and cert. contained in the pkcs12 package.
Decrypts this body using the derPkcs12PrivateKey.
| derPkcs12 | - DER format pkcs12 container for the private key and public key/Certificate for a recipent who is allowed to decrypt this pkcs7 (S/MIME) encapsulated body. |
| derPkcs12Length | - length in bytes of derPkcs12PrivateKey |
| pkcs12Password | - symetric key (password) used to protect (encrypt) the derPkcs12PrivateKey (the private key is contained in a pkcs12 in an encrypted format to protect it from theft). Must be NULL terminated string. |
| UtlBoolean encrypt | ( | HttpBody * | bodyToEncrypt, |
| int | numRecipients, | ||
| const char * | derPublicKeyCerts[], | ||
| int | derPubliceKeyCertLengths[], | ||
| const char * | szMyCertNickname, | ||
| const char * | szCertDbPassword, | ||
| ISmimeNotifySink * | pSink = NULL |
||
| ) |
Encrypt the given body for the given list of recipients.
| bodyToEncrypt | - Body to encrypt, note bodyToEncrypt will be attached to and deleted with this SmimeBody. bodyToEncrypt can be retrieved after invoking decrypt using the getDecyptedBody method. |
| numRecipients | - number of recipients for which bodyToEncrypt will be encrypted. For each recipient an element in derPublicKeyCerts and derPubliceKeyCertLengths must be given. |
| derPublicKeyCerts | - array containing a DER format certificate (containing the public key) for each recipient. |
| derPubliceKeyCertLengths | - length in bytes of the corresponding element in derPublicKeyCerts. |
|
static |
Encrypts the given data for the recipients represented by the array of certificates containing the public keys.
| numRecipientCerts | the number of recipient certificates in the derPublicKeyCerts array. |
| derPublicKeyCerts | - array containing DER format certificates. |
| derPublicKeyCertLengths | - array containing the length of the corresponding certificate DER data. |
| dataToEncrypt | - raw data to encrypt using PKCS7 S/MIME format |
| dataToEncryptLength | length in bytes of dataToEncrypt |
| encryptedDataInBase64Format | - TRUE: output encrypted data in base64 format, FALSE: output data in raw binary format. Typically for SIP one should send in binary format. |
| encryptedData | - string containing the encrypted result. |
|
static |
Decrypts this body using the derPkcs12PrivateKey.
| derPkcs12 | - DER format pkcs12 container for the private key and public key/Certificate for a recipent who is allowed to decrypt this pkcs7 (S/MIME) encapsulated body. |
| derPkcs12Length | - length in bytes of derPkcs12PrivateKey |
| pkcs12Password | - symetric key (password) used to protect (encrypt) the derPkcs12PrivateKey (the private key is contained in a pkcs12 in an encrypted format to protect it from theft). Must be NULL terminated string. |
| dataIsInBase64Format | - TRUE: encrypted data is in base64 format, FALSE: encrypted data is in binary format. |
| dataToDecrypt | - raw data to be decrypted. Must be in binary or base64 format. Does NOT need to be NULL terminated. |
| dataToDecryptLength | - length of the data in dataToDecrypt to be decrypted. |
| decryptedData | - string to contain the resulting decrypted data. |
|
static |
Encrypts the given data for the recipients represented by the array of certificates containing the public keys.
| numRecipientCerts | the number of recipient certificates in the derPublicKeyCerts array. |
| derPublicKeyCerts | - array containing DER format certificates. |
| derPublicKeyCertLengths | - array containing the length of the corresponding certificate DER data. |
| dataToEncrypt | - raw data to encrypt using PKCS7 S/MIME format |
| dataToEncryptLength | length in bytes of dataToEncrypt |
| encryptedDataInBase64Format | - TRUE: output encrypted data in base64 format, FALSE: output data in raw binary format. Typically for SIP one should send in binary format. |
| encryptedData | - string containing the encrypted result. |
|
static |
Decrypts this body using the derPkcs12PrivateKey.
| derPkcs12 | - DER format pkcs12 container for the private key and public key/Certificate for a recipent who is allowed to decrypt this pkcs7 (S/MIME) encapsulated body. |
| derPkcs12Length | - length in bytes of derPkcs12PrivateKey |
| pkcs12Password | - symetric key (password) used to protect (encrypt) the derPkcs12PrivateKey (the private key is contained in a pkcs12 in an encrypted format to protect it from theft). Must be NULL terminated string. |
| dataIsInBase64Format | - TRUE: encrypted data is in base64 format, FALSE: encrypted data is in binary format. |
| dataToDecrypt | - raw data to be decrypted. Must be in binary or base64 format. Does NOT need to be NULL terminated. |
| dataToDecryptLength | - length of the data in dataToDecrypt to be decrypted. |
| decryptedData | - string to contain the resulting decrypted data. |
|
static |
Utility to convert PEM format data to DER format.
|
static |
| const HttpBody * getDecryptedBody | ( | ) | const |
Gets the decrypted form of this body if available.
| UtlBoolean isDecrypted | ( | ) | const |
Query if this body has been decrypted.
|
protected |
|
protected |