diff --git a/mozilla/security/nss/lib/smime/cms.h b/mozilla/security/nss/lib/smime/cms.h index 92b25590173..70e358ffec1 100644 --- a/mozilla/security/nss/lib/smime/cms.h +++ b/mozilla/security/nss/lib/smime/cms.h @@ -34,7 +34,7 @@ /* * Interfaces of the CMS implementation. * - * $Id: cms.h,v 1.4 2000-06-20 16:28:56 chrisk%netscape.com Exp $ + * $Id: cms.h,v 1.5 2000-09-15 06:38:32 mcgreer%netscape.com Exp $ */ #ifndef _CMS_H_ @@ -532,6 +532,14 @@ extern SECStatus NSS_CMSSignedData_VerifySignerInfo(NSSCMSSignedData *sigd, int i, CERTCertDBHandle *certdb, SECCertUsage certusage); +/* + * NSS_CMSSignedData_VerifyCertsOnly - verify the certs in a certs-only message +*/ +extern SECStatus +NSS_CMSSignedData_VerifyCertsOnly(NSSCMSSignedData *sigd, + CERTCertDBHandle *certdb, + SECCertUsage usage); + extern SECStatus NSS_CMSSignedData_AddCertList(NSSCMSSignedData *sigd, CERTCertificateList *certlist); diff --git a/mozilla/security/nss/lib/smime/cmssigdata.c b/mozilla/security/nss/lib/smime/cmssigdata.c index 6de80cbf0af..c2c65320fd8 100644 --- a/mozilla/security/nss/lib/smime/cmssigdata.c +++ b/mozilla/security/nss/lib/smime/cmssigdata.c @@ -34,7 +34,7 @@ /* * CMS signedData methods. * - * $Id: cmssigdata.c,v 1.7 2000-09-14 17:14:44 mcgreer%netscape.com Exp $ + * $Id: cmssigdata.c,v 1.8 2000-09-15 06:38:33 mcgreer%netscape.com Exp $ */ #include "cmslocal.h" @@ -516,6 +516,32 @@ NSS_CMSSignedData_VerifySignerInfo(NSSCMSSignedData *sigd, int i, return NSS_CMSSignerInfo_Verify(signerinfo, digest, contentType); } +/* + * NSS_CMSSignedData_VerifyCertsOnly - verify the certs in a certs-only message + */ +SECStatus +NSS_CMSSignedData_VerifyCertsOnly(NSSCMSSignedData *sigd, + CERTCertDBHandle *certdb, + SECCertUsage usage) +{ + CERTCertificate *cert; + SECStatus rv = SECSuccess; + int i; + + if (!sigd || !certdb) { + PORT_SetError(SEC_ERROR_INVALID_ARGS); + return SECFailure; + } + + for (i=0; i < NSS_CMSArray_Count((void**)sigd->certs); i++) { + cert = sigd->certs[i]; + rv |= CERT_VerifyCert(certdb, cert, PR_TRUE, usage, PR_Now(), + NULL, NULL); + } + + return rv; +} + /* * NSS_CMSSignedData_HasDigests - see if we have digests in place */