PRBool CRMF_DoesRequestHaveField (CRMFCertRequest *inCertReq, CRMFCertTemplateField inField) { PORT_Assert(inCertReq != NULL); if (inCertReq == NULL) { return PR_FALSE; } switch (inField) { case crmfVersion: return inCertReq->certTemplate.version.data != NULL; case crmfSerialNumber: return inCertReq->certTemplate.serialNumber.data != NULL; case crmfSigningAlg: return inCertReq->certTemplate.signingAlg != NULL; case crmfIssuer: return inCertReq->certTemplate.issuer != NULL; case crmfValidity: return inCertReq->certTemplate.validity != NULL; case crmfSubject: return inCertReq->certTemplate.subject != NULL; case crmfPublicKey: return inCertReq->certTemplate.publicKey != NULL; case crmfIssuerUID: return inCertReq->certTemplate.issuerUID.data != NULL; case crmfSubjectUID: return inCertReq->certTemplate.subjectUID.data != NULL; case crmfExtension: return CRMF_CertRequestGetNumberOfExtensions(inCertReq) != 0; } return PR_FALSE; }
CRMFCertExtension * CRMF_CertRequestGetExtensionAtIndex(CRMFCertRequest *inCertReq, int index) { int numExtensions; PORT_Assert(inCertReq != NULL); numExtensions = CRMF_CertRequestGetNumberOfExtensions(inCertReq); if (index >= numExtensions || index < 0) { return NULL; } return crmf_copy_cert_extension(NULL, inCertReq->certTemplate.extensions[index]); }