SECStatus CERT_EncodeInfoAccessExtension(PRArenaPool *arena, CERTAuthInfoAccess **info, SECItem *dest) { SECItem *dummy; int i; PORT_Assert(info != NULL); PORT_Assert(dest != NULL); if (info == NULL || dest == NULL) { return SECFailure; } for (i = 0; info[i] != NULL; i++) { if (CERT_EncodeGeneralName(info[i]->location, &(info[i]->derLocation), arena) == NULL) /* Note that this may leave some of the locations filled in. */ return SECFailure; } dummy = SEC_ASN1EncodeItem(arena, dest, &info, CERTAuthInfoAccessTemplate); if (dummy == NULL) { return SECFailure; } return SECSuccess; }
SECStatus CMMF_POPODecKeyChallContentSetNextChallenge (CMMFPOPODecKeyChallContent *inDecKeyChall, long inRandom, CERTGeneralName *inSender, SECKEYPublicKey *inPubKey, void *passwdArg) { CMMFChallenge *curChallenge; PRArenaPool *genNamePool = NULL, *poolp; SECStatus rv; SECItem *genNameDER; void *mark; PORT_Assert (inDecKeyChall != NULL && inSender != NULL && inPubKey != NULL); if (inDecKeyChall == NULL || inSender == NULL || inPubKey == NULL) { return SECFailure; } poolp = inDecKeyChall->poolp; mark = PORT_ArenaMark(poolp); genNamePool = PORT_NewArena(CRMF_DEFAULT_ARENA_SIZE); genNameDER = CERT_EncodeGeneralName(inSender, NULL, genNamePool); if (genNameDER == NULL) { rv = SECFailure; goto loser; } if (inDecKeyChall->challenges == NULL) { inDecKeyChall->challenges = PORT_ArenaZNewArray(poolp, CMMFChallenge*,(CMMF_MAX_CHALLENGES+1)); inDecKeyChall->numAllocated = CMMF_MAX_CHALLENGES; }