case rsaKey:
case lowRSAKey:
add_key_to_list(DBT *key, DBT *data, void *arg){    keyList *keylist;    pk11keyNode *node;    void *keydata;    SECKEYLowPrivateKey *privKey = NULL;        keylist = (keyList *)arg;    privKey = SECKEY_DecryptKey(key, keylist->slot->password,				SECKEY_GetDefaultKeyDB());    if ( privKey == NULL ) {	goto loser;    }    /* allocate the node struct */    node = (pk11keyNode*)PORT_ArenaZAlloc(keylist->arena, sizeof(pk11keyNode));    if ( node == NULL ) {	goto loser;    }        /* allocate room for key data */    keydata = PORT_ArenaZAlloc(keylist->arena, key->size);    if ( keydata == NULL ) {	goto loser;    }    /* link node into list */    node->next = keylist->head;    keylist->head = node;        node->privKey = privKey;    switch (privKey->keyType) {      case rsaKey:	node->pubItem = &privKey->u.rsa.modulus;	break;      case dsaKey:	node->pubItem = &privKey->u.dsa.publicValue;	break;      default:	break;    }        return(SECSuccess);loser:    if ( privKey ) {	SECKEY_LowDestroyPrivateKey(privKey);    }    return(SECSuccess);}