/* allocates memory if type != CERT */ static char* getObjectNick(void *obj, TokenObjectType type) { switch(type) { case PRIVKEY: /* NOTE: this function allocates memory for the nickname */ return PK11_GetPrivateKeyNickname((SECKEYPrivateKey*)obj); case SYMKEY: /* NOTE: this function allocates memory for the nickname */ return PK11_GetSymKeyNickname((PK11SymKey*)obj); case PUBKEY: /* NOTE: this function allocates memory for the nickname */ return PK11_GetPublicKeyNickname((SECKEYPublicKey*)obj); case CERT: return ((CERTCertificate*)obj)->nickname; default: PR_ASSERT(PR_FALSE); return NULL; } }
void PrintKey(PK11SymKey *symKey) { char *name = PK11_GetSymKeyNickname(symKey); int len = PK11_GetKeyLength(symKey); int strength = PK11_GetKeyStrength(symKey, NULL); SECItem *value = NULL; CK_KEY_TYPE type = PK11_GetSymKeyType(symKey); (void) PK11_ExtractKeyValue(symKey); value = PK11_GetKeyData(symKey); printf("%-20s %3d %4d %10s ", name ? name: " ", len, strength, GetStringFromKeyType(type)); if (value && value->data) { printBuf(value->data, value->len); } else { printf("<restricted>"); } printf("\n"); }