summaryrefslogtreecommitdiff
path: root/security/nss/lib/smime/cmsutil.c
diff options
context:
space:
mode:
authormcgreer%netscape.com <devnull@localhost>2000-09-29 16:38:11 +0000
committermcgreer%netscape.com <devnull@localhost>2000-09-29 16:38:11 +0000
commitb68d781e44a218afebcb0241fb0be436bbfac0ea (patch)
tree31052364c2b4bce43558f3f33ac2d705c415e03e /security/nss/lib/smime/cmsutil.c
parent7c27aba7cb4cca8b1f1b559caf0266e212d7da64 (diff)
downloadnss-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.c28
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;
+}