mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-14 20:22:00 +00:00
Function to read PQG params from the key.
This commit is contained in:
parent
adf57d19ba
commit
71b1a77b4d
@ -640,6 +640,7 @@ PK11_DeleteTokenPrivateKey;
|
||||
PK11_DeleteTokenPublicKey;
|
||||
PK11_DeleteTokenSymKey;
|
||||
PK11_GetSymKeyNickname;
|
||||
PK11_GetPQGParamsFromPrivateKey;
|
||||
PK11_GetPublicKeyNickname;
|
||||
PK11_GetPrivateKeyNickname;
|
||||
PK11_SetSymKeyNickname;
|
||||
|
@ -374,6 +374,7 @@ SECKEYPrivateKeyList* PK11_ListPrivKeysInSlot(PK11SlotInfo *slot,
|
||||
char *nickname, void *wincx);
|
||||
SECKEYPublicKeyList* PK11_ListPublicKeysInSlot(PK11SlotInfo *slot,
|
||||
char *nickname);
|
||||
SECKEYPQGParams *PK11_GetPQGParamsFromPrivateKey(SECKEYPrivateKey *privKey);
|
||||
/* depricated */
|
||||
SECKEYPrivateKeyList* PK11_ListPrivateKeysInSlot(PK11SlotInfo *slot);
|
||||
|
||||
|
@ -4893,3 +4893,48 @@ PK11_SetPublicKeyNickname(SECKEYPublicKey *pubKey, const char *nickname)
|
||||
return PK11_SetObjectNickname(pubKey->pkcs11Slot,
|
||||
pubKey->pkcs11ID,nickname);
|
||||
}
|
||||
|
||||
SECKEYPQGParams *
|
||||
PK11_GetPQGParamsFromPrivateKey(SECKEYPrivateKey *privKey)
|
||||
{
|
||||
CK_ATTRIBUTE pTemplate[] = {
|
||||
{ CKA_PRIME, NULL, 0 },
|
||||
{ CKA_SUBPRIME, NULL, 0 },
|
||||
{ CKA_BASE, NULL, 0 },
|
||||
};
|
||||
int pTemplateLen = sizeof(pTemplate)/sizeof(pTemplate[0]);
|
||||
PRArenaPool *arena = NULL;
|
||||
SECKEYPQGParams *params;
|
||||
CK_RV crv;
|
||||
|
||||
|
||||
arena = PORT_NewArena(2048);
|
||||
if (arena == NULL) {
|
||||
goto loser;
|
||||
}
|
||||
params=(SECKEYPQGParams *)PORT_ArenaZAlloc(arena,sizeof(SECKEYPQGParams));
|
||||
if (params == NULL) {
|
||||
goto loser;
|
||||
}
|
||||
|
||||
crv = PK11_GetAttributes(arena, privKey->pkcs11Slot, privKey->pkcs11ID,
|
||||
pTemplate, pTemplateLen);
|
||||
if (crv != CKR_OK) {
|
||||
PORT_SetError( PK11_MapError(crv) );
|
||||
goto loser;
|
||||
}
|
||||
|
||||
params->arena = arena;
|
||||
params->prime.data = pTemplate[0].pValue;
|
||||
params->prime.len = pTemplate[0].ulValueLen;
|
||||
params->subPrime.data = pTemplate[1].pValue;
|
||||
params->subPrime.len = pTemplate[1].ulValueLen;
|
||||
params->base.data = pTemplate[2].pValue;
|
||||
params->base.len = pTemplate[2].ulValueLen;
|
||||
|
||||
return params;
|
||||
|
||||
loser:
|
||||
PORT_FreeArena(arena,PR_FALSE);
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user