if (!rv) { rv = CERT_VerifySignedDataWithPubKeyInfo(&signedData, &certReq->subjectPublicKeyInfo, NULL ); }
GetCertRequest(PRFileDesc *inFile, PRBool ascii){    CERTCertificateRequest *certReq = NULL;    CERTSignedData signedData;    PRArenaPool *arena = NULL;    SECItem reqDER;    SECStatus rv;    reqDER.data = NULL;    do {	arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);	if (arena == NULL) {	    GEN_BREAK (SECFailure);	}	 	rv = SECU_ReadDERFromFile(&reqDER, inFile, ascii);	if (rv) 	    break;        certReq = (CERTCertificateRequest*) PORT_ArenaZAlloc		  (arena, sizeof(CERTCertificateRequest));        if (!certReq) 	    break;	certReq->arena = arena;	/* Since cert request is a signed data, must decode to get the inner	   data	 */	PORT_Memset(&signedData, 0, sizeof(signedData));	rv = SEC_ASN1DecodeItem(arena, &signedData, 		SEC_ASN1_GET(CERT_SignedDataTemplate), &reqDER);	if (rv)	    break;	        rv = SEC_ASN1DecodeItem(arena, certReq, 		SEC_ASN1_GET(CERT_CertificateRequestTemplate), &signedData.data);   } while (0);   if (rv) {       PRErrorCode  perr = PR_GetError();       fprintf(stderr, "%s: unable to decode DER cert request (%s)\n", progName,               SECU_Strerror(perr));   }   return (certReq);}