Hello,
I am implementing a PKCS#11 module and have just implemented
C_GenerateKeyPair. For this purpose, I have set up a html page with the
"keygen" tag which sends the form data to my php script to write back to
me what was sent.
Now, everything works perfectly. It generates the key pair, then sets
the CKA_ID attribute of both keys, asks for some more attributes, then
it signs some md5 hashed data with the newly generated private key and
closes the session.
Lastly, C_GetAttributeValue is called to see if the public key (handle
0x03) is a token object. It indeed is so I provide the value.
The problem is, that is the last thing Firefox does. When closing it, it
forgets to call C_CloseAllSessions and then C_Finalize, as Thunderbird
does. So the next time I open Firefox, C_Initialize fails because the
device is already initialized. Is this a bug or am I missing something?
I am attaching a pkcs11-spy log (with unneccessary info stripped out) if
it is needed.
Thanks in advance,
M. Kurpel
----------------------------- pkcs11-spy log begin
----------------------------------
7: C_GetMechanismList
[in] slotID = 0x0
[out] pMechanismList[2]:
Count is 2
Returned: 0 CKR_OK
8: C_GetMechanismList
[in] slotID = 0x0
[out] pMechanismList[2]:
CKM_RSA_PKCS
CKM_RSA_PKCS_KEY_PAIR_GEN
Returned: 0 CKR_OK
9: C_OpenSession
[in] slotID = 0x0
[in] flags = 0x4
pApplication=06CA5400
Notify=5D5EA378
[out] *phSession = 0x1
Returned: 0 CKR_OK
10: C_FindObjectsInit
[in] hSession = 0x1
[in] pTemplate[1]:
CKA_CLASS CKO_NETSCAPE_BUILTIN_ROOT_LIST
Returned: 19 CKR_ATTRIBUTE_VALUE_INVALID
11: C_GetMechanismInfo
[in] slotID = 0x0
CKM_RSA_PKCS
[out] pInfo:
CKM_RSA_PKCS : min:256 max:4096 flags:0xA01 Returned:
0 CKR_OK
12: C_OpenSession
[in] slotID = 0x0
[in] flags = 0x6
pApplication=06CA5400
Notify=5D5EA378
[out] *phSession = 0x2
Returned: 0 CKR_OK
13: C_GenerateKeyPair
[in] hSession = 0x2
pMechanism->type=CKM_RSA_PKCS_KEY_PAIR_GEN
[in] pPublicKeyTemplate[8]:
CKA_MODULUS_BITS [size : 0x4 (4)]
00040000
CKA_PUBLIC_EXPONENT [size : 0x3 (3)]
010001
CKA_TOKEN True
CKA_DERIVE False
CKA_WRAP False
CKA_VERIFY False
CKA_VERIFY_RECOVER False
CKA_ENCRYPT False
[in] pPrivateKeyTemplate[7]:
CKA_TOKEN True
CKA_PRIVATE True
CKA_SENSITIVE True
CKA_DERIVE False
CKA_UNWRAP False
CKA_SIGN True
CKA_DECRYPT True
[out] hPublicKey = 0x3
[out] hPrivateKey = 0x4
Returned: 0 CKR_OK
14: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x3
[in] pTemplate[1]:
CKA_CLASS requested with 4 buffer
[out] pTemplate[1]:
CKA_CLASS CKO_PUBLIC_KEY
Returned: 0 CKR_OK
15: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x3
[in] pTemplate[4]:
CKA_CLASS requested with 4 buffer
CKA_KEY_TYPE requested with 4 buffer
CKA_MODULUS requested with 0 buffer
CKA_PUBLIC_EXPONENT requested with 0 buffer
[out] pTemplate[4]:
CKA_CLASS CKO_PUBLIC_KEY
CKA_KEY_TYPE CKK_RSA
CKA_MODULUS has size 128
CKA_PUBLIC_EXPONENT has size 3
Returned: 0 CKR_OK
16: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x3
[in] pTemplate[4]:
CKA_CLASS requested with 4 buffer
CKA_KEY_TYPE requested with 4 buffer
CKA_MODULUS requested with 128 buffer
CKA_PUBLIC_EXPONENT requested with 3 buffer
[out] pTemplate[4]:
CKA_CLASS CKO_PUBLIC_KEY
CKA_KEY_TYPE CKK_RSA
CKA_MODULUS [size : 0x80 (128)]
B3906CBA 83B28918 CDC1EFB3 E4A93367 CF6C0674 6A40ED7E 1758DFDE C740AA97
FD6AE7F7 033BA8FE 3329BDBE 2AA00242 7CA82A47 F6B5E15F AC16400F 35D5033E
28B4BA6B 67C35BB2 A49A9CD9 1CC701EF 0984CE38 34ABAA5E 01F92EA2 0488C3AE
E48A7C4B 01667D1C 4FFAE1D2 3A86CAEB 64489E1B 01456657 249E9593 3C2B5D95
CKA_PUBLIC_EXPONENT [size : 0x3 (3)]
010001
Returned: 0 CKR_OK
17: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x3
[in] pTemplate[1]:
CKA_TOKEN requested with 1 buffer
[out] pTemplate[1]:
CKA_TOKEN True
Returned: 0 CKR_OK
18: C_SetAttributeValue
[in] hSession = 0x2
[in] hObject = 0x4
[in] pTemplate[1]:
CKA_ID [size : 0x14 (20)]
FEA653BE 4BD2BD65 272F2102 49833397 3AB3F67B
Returned: 0 CKR_OK
19: C_SetAttributeValue
[in] hSession = 0x2
[in] hObject = 0x3
[in] pTemplate[1]:
CKA_ID [size : 0x14 (20)]
FEA653BE 4BD2BD65 272F2102 49833397 3AB3F67B
Returned: 0 CKR_OK
20: C_CloseSession
[in] hSession = 0x2
Returned: 0 CKR_OK
21: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x4
[in] pTemplate[1]:
CKA_PRIVATE requested with 1 buffer
[out] pTemplate[1]:
CKA_PRIVATE True
Returned: 0 CKR_OK
22: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x4
[in] pTemplate[1]:
CKA_MODULUS requested with 0 buffer
[out] pTemplate[1]:
CKA_MODULUS has size 128
Returned: 0 CKR_OK
23: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x4
[in] pTemplate[1]:
CKA_MODULUS requested with 128 buffer
[out] pTemplate[1]:
CKA_MODULUS [size : 0x80 (128)]
B3906CBA 83B28918 CDC1EFB3 E4A93367 CF6C0674 6A40ED7E 1758DFDE C740AA97
FD6AE7F7 033BA8FE 3329BDBE 2AA00242 7CA82A47 F6B5E15F AC16400F 35D5033E
28B4BA6B 67C35BB2 A49A9CD9 1CC701EF 0984CE38 34ABAA5E 01F92EA2 0488C3AE
E48A7C4B 01667D1C 4FFAE1D2 3A86CAEB 64489E1B 01456657 249E9593 3C2B5D95
Returned: 0 CKR_OK
24: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x4
[in] pTemplate[1]:
CKA_PRIVATE requested with 1 buffer
[out] pTemplate[1]:
CKA_PRIVATE True
Returned: 0 CKR_OK
25: C_OpenSession
[in] slotID = 0x0
[in] flags = 0x4
pApplication=06CA5400
Notify=5D5EA378
[out] *phSession = 0x2
Returned: 0 CKR_OK
26: C_SignInit
[in] hSession = 0x2
pMechanism->type=CKM_RSA_PKCS
[in] hKey = 0x4
Returned: 0 CKR_OK
27: C_Sign
[in] hSession = 0x2
[in] pData[ulDataLen] [size : 0x22 (34)]
3020300C 06082A86 4886F70D 02050500 041078FC 99F7CC96 0B51B1EA F7FF4D0D
7D55
[out] pSignature[*pulSignatureLen] [size : 0x80 (128)]
52237EAF 9CA447B8 22CAF509 FAC68481 1957ADA8 7585E92E 60342DCB E5806F38
C6A774B6 82FD032B 1CE25264 7B9227CB 028496D4 22CA6EC5 47314F3A 89F05CB2
ED2F8936 B13ED1E6 355E88FC 64854588 231FDA18 5B07466C 2F02CB54 093DF569
2D5BAF61 23563AB2 44570977 0DBCA843 4CC93A73 AC3E2D13 79D1AFCD 783CA6E6
Returned: 0 CKR_OK
28: C_CloseSession
[in] hSession = 0x2
Returned: 0 CKR_OK
29: C_GetAttributeValue
[in] hSession = 0x1
[in] hObject = 0x3
[in] pTemplate[1]:
CKA_TOKEN requested with 1 buffer
[out] pTemplate[1]:
CKA_TOKEN True
Returned: 0 CKR_OK
----------------------------- pkcs11-spy log end
----------------------------------
--
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto