618
618
* Return all of the CAs that are "trusted" for SSL.
621
CERT_DupDistNames(CERTDistNames *orig)
624
CERTDistNames *names;
628
/* allocate an arena to use */
629
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
631
PORT_SetError(SEC_ERROR_NO_MEMORY);
635
/* allocate the header structure */
636
names = (CERTDistNames *)PORT_ArenaAlloc(arena, sizeof(CERTDistNames));
641
/* initialize the header struct */
642
names->arena = arena;
644
names->nnames = orig->nnames;
647
/* construct the array from the list */
649
names->names = (SECItem*)PORT_ArenaNewArray(arena, SECItem,
651
if (names->names == NULL) {
654
for (i = 0; i < orig->nnames; i++) {
655
rv = SECITEM_CopyItem(arena, &names->names[i], &orig->names[i]);
656
if (rv != SECSuccess) {
664
PORT_FreeArena(arena, PR_FALSE);
621
669
CERT_GetSSLCACerts(CERTCertDBHandle *handle)
623
671
PRArenaPool *arena;
730
CERT_DistNamesFromCertList(CERTCertList *certList)
732
CERTDistNames * dnames = NULL;
734
CERTCertListNode *node = NULL;
735
SECItem * names = NULL;
736
int listLen = 0, i = 0;
738
if (certList == NULL) {
739
PORT_SetError(SEC_ERROR_INVALID_ARGS);
743
node = CERT_LIST_HEAD(certList);
744
while ( ! CERT_LIST_END(node, certList) ) {
746
node = CERT_LIST_NEXT(node);
749
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
750
if (arena == NULL) goto loser;
751
dnames = PORT_ArenaZNew(arena, CERTDistNames);
752
if (dnames == NULL) goto loser;
754
dnames->arena = arena;
755
dnames->nnames = listLen;
756
dnames->names = names = PORT_ArenaZNewArray(arena, SECItem, listLen);
757
if (names == NULL) goto loser;
759
node = CERT_LIST_HEAD(certList);
760
while ( ! CERT_LIST_END(node, certList) ) {
761
CERTCertificate *cert = node->cert;
762
SECStatus rv = SECITEM_CopyItem(arena, &names[i++], &cert->derSubject);
763
if (rv == SECFailure) {
766
node = CERT_LIST_NEXT(node);
771
PORT_FreeArena(arena, PR_FALSE);
682
777
CERT_DistNamesFromNicknames(CERTCertDBHandle *handle, char **nicknames,