SECStatus crmf_template_add_public_key(PLArenaPool *poolp, CERTSubjectPublicKeyInfo **dest, CERTSubjectPublicKeyInfo *pubKey) { CERTSubjectPublicKeyInfo *spki; SECStatus rv; *dest = spki = (poolp == NULL) ? PORT_ZNew(CERTSubjectPublicKeyInfo) : PORT_ArenaZNew (poolp, CERTSubjectPublicKeyInfo); if (spki == NULL) { goto loser; } rv = SECKEY_CopySubjectPublicKeyInfo (poolp, spki, pubKey); if (rv != SECSuccess) { goto loser; } return SECSuccess; loser: if (poolp == NULL && spki != NULL) { SECKEY_DestroySubjectPublicKeyInfo(spki); } *dest = NULL; return SECFailure; }
SECStatus CRMF_CertRequestGetCertTemplatePublicKey(CRMFCertRequest *inCertReq, CERTSubjectPublicKeyInfo *destPublicKey) { PORT_Assert(inCertReq != NULL); if (inCertReq == NULL) { return SECFailure; } if (CRMF_DoesRequestHaveField(inCertReq, crmfPublicKey)) { return SECKEY_CopySubjectPublicKeyInfo(NULL, destPublicKey, inCertReq->certTemplate.publicKey); } return SECFailure; }