diff options
author | mcgreer%netscape.com <devnull@localhost> | 2000-09-29 16:38:11 +0000 |
---|---|---|
committer | mcgreer%netscape.com <devnull@localhost> | 2000-09-29 16:38:11 +0000 |
commit | b68d781e44a218afebcb0241fb0be436bbfac0ea (patch) | |
tree | 31052364c2b4bce43558f3f33ac2d705c415e03e /security/nss/lib/smime/cmsutil.c | |
parent | 7c27aba7cb4cca8b1f1b559caf0266e212d7da64 (diff) | |
download | nss-hg-b68d781e44a218afebcb0241fb0be436bbfac0ea.tar.gz |
add a shortcut encoder routine.
Diffstat (limited to 'security/nss/lib/smime/cmsutil.c')
-rw-r--r-- | security/nss/lib/smime/cmsutil.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/security/nss/lib/smime/cmsutil.c b/security/nss/lib/smime/cmsutil.c index c71d144f6..77f79b4d3 100644 --- a/security/nss/lib/smime/cmsutil.c +++ b/security/nss/lib/smime/cmsutil.c @@ -360,3 +360,31 @@ NSS_CMSUtil_VerificationStatusToString(NSSCMSVerificationStatus vs) default: return "Unknown"; } } + +SECStatus +NSS_CMSDEREncode(NSSCMSMessage *cmsg, SECItem *input, SECItem *derOut, + PLArenaPool *arena) +{ + NSSCMSEncoderContext *ecx; + SECStatus rv = SECSuccess; + if (!cmsg || !derOut || !arena) { + PORT_SetError(SEC_ERROR_INVALID_ARGS); + return SECFailure; + } + ecx = NSS_CMSEncoder_Start(cmsg, 0, 0, derOut, arena, 0, 0, 0, 0, 0, 0); + if (!ecx) { + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); + return SECFailure; + } + if (input) { + rv = NSS_CMSEncoder_Update(ecx, input->data, input->len); + if (rv) { + PORT_SetError(SEC_ERROR_BAD_DATA); + } + } + rv |= NSS_CMSEncoder_Finish(ecx); + if (rv) { + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); + } + return rv; +} |