diff options
-rw-r--r-- | security/nss/lib/smime/cms.h | 6 | ||||
-rw-r--r-- | security/nss/lib/smime/cmsrecinfo.c | 15 | ||||
-rw-r--r-- | security/nss/lib/smime/smime.def | 1 |
3 files changed, 22 insertions, 0 deletions
diff --git a/security/nss/lib/smime/cms.h b/security/nss/lib/smime/cms.h index f6b806fa3..0538f1a37 100644 --- a/security/nss/lib/smime/cms.h +++ b/security/nss/lib/smime/cms.h @@ -903,6 +903,12 @@ NSS_CMSRecipientInfo_GetVersion(NSSCMSRecipientInfo *ri); extern SECItem * NSS_CMSRecipientInfo_GetEncryptedKey(NSSCMSRecipientInfo *ri, int subIndex); +/* + * NSS_CMSRecipientInfo_Encode - encode an NSS_CMSRecipientInfo as ASN.1 + */ +SECStatus NSS_CMSRecipientInfo_Encode(PRArenaPool* poolp, + const NSSCMSRecipientInfo *src, + SECItem* returned); extern SECOidTag NSS_CMSRecipientInfo_GetKeyEncryptionAlgorithmTag(NSSCMSRecipientInfo *ri); diff --git a/security/nss/lib/smime/cmsrecinfo.c b/security/nss/lib/smime/cmsrecinfo.c index 7e706ae7f..ac460f5bd 100644 --- a/security/nss/lib/smime/cmsrecinfo.c +++ b/security/nss/lib/smime/cmsrecinfo.c @@ -716,3 +716,18 @@ SECStatus NSS_CMSRecipientInfo_GetCertAndKey(NSSCMSRecipientInfo *ri, return rv; } + +SECStatus NSS_CMSRecipientInfo_Encode(PRArenaPool* poolp, + const NSSCMSRecipientInfo *src, + SECItem* returned) +{ + extern const SEC_ASN1Template NSSCMSRecipientInfoTemplate[]; + SECStatus rv = SECFailure; + if (!src || !returned) { + PORT_SetError(SEC_ERROR_INVALID_ARGS); + } else if (SEC_ASN1EncodeItem(poolp, returned, src, + NSSCMSRecipientInfoTemplate)) { + rv = SECSuccess; + } + return rv; +} diff --git a/security/nss/lib/smime/smime.def b/security/nss/lib/smime/smime.def index 9cdeb658f..ac0bbd408 100644 --- a/security/nss/lib/smime/smime.def +++ b/security/nss/lib/smime/smime.def @@ -234,6 +234,7 @@ NSS_CMSRecipientInfo_UnwrapBulkKey; ;+ global: NSS_CMSRecipientInfo_CreateNew; NSS_CMSRecipientInfo_CreateFromDER; +NSS_CMSRecipientInfo_Encode; NSS_CMSRecipientInfo_GetCertAndKey; ;+ local: ;+ *; |