|
1 Load nsscapi.dll |
|
2 C_Initialize NULL |
|
3 C_GetSlotList false NULL slotCount |
|
4 NewArray slotList CK_ULONG slotCount |
|
5 C_GetSlotList false slotList slotCount |
|
6 #change the following to the appropriate slot id |
|
7 set slotID 1 |
|
8 #set slotID slotList[0] |
|
9 C_GetSlotInfo slotID slotInfo |
|
10 C_GetTokenInfo slotID tokenInfo |
|
11 C_OpenSession slotID CKF_SERIAL_SESSION session |
|
12 # |
|
13 #uncomment the following line and include the correct password |
|
14 #C_Login session CKU_USER 0000 4 |
|
15 # |
|
16 # build the search template |
|
17 # |
|
18 NewTemplate search CKA_CLASS |
|
19 SetTemplate search 0 CKO_CERTIFICATE |
|
20 NewArray certID CK_ULONG 10 |
|
21 C_FindObjectsInit session search 1 |
|
22 C_FindObjects session certID sizeA(certID) count |
|
23 C_FindObjectsFinal session |
|
24 # |
|
25 # now read the cert out |
|
26 # |
|
27 #NewTemplate derCert CKA_VALUE |
|
28 #NewTemplate certName CKA_LABEL,CKA_VALUE |
|
29 #C_GetAttributeValue session certID[0] certName sizeA(certName) |
|
30 #BuildTemplate certName |
|
31 #C_GetAttributeValue session certID[0] certName sizeA(certName) |
|
32 #print certName[0] |
|
33 Set countm1 count |
|
34 Decrement countm1 1 |
|
35 LoopRun pLabel1 i 0 countm1 1 |
|
36 Set i 1 |
|
37 run pLabel1 |
|
38 NewTemplate id CKA_CLASS,CKA_ID |
|
39 C_GetAttributeValue session certID[i] id sizeA(id) |
|
40 BuildTemplate id |
|
41 C_GetAttributeValue session certID[i] id sizeA(id) |
|
42 SetTemplate id 0 CKO_PRIVATE_KEY |
|
43 NewArray keyID CK_ULONG 10 |
|
44 C_FindObjectsInit session id sizeA(id) |
|
45 C_FindObjects session keyID sizeA(keyID) count |
|
46 C_FindObjectsFinal session |
|
47 |
|
48 NewMechanism rsaParams CKM_RSA_PKCS |
|
49 NewArray sign data 256 |
|
50 NewArray sdata data 36 |
|
51 C_SignInit session rsaParams keyID[0] |
|
52 print sdata |
|
53 C_Sign session sdata sizeof(sdata) sign sizeof(sign) |
|
54 save signature sign |
|
55 save hash sdata |
|
56 NewTemplate privValue CKA_MODULUS,CKA_PUBLIC_EXPONENT |
|
57 C_GetAttributeValue session keyID[0] privValue sizeA(privValue) |
|
58 BuildTemplate privValue |
|
59 C_GetAttributeValue session keyID[0] privValue sizeA(privValue) |
|
60 print privValue[0] |
|
61 print privValue[1] |
|
62 |
|
63 # save the public key |
|
64 SetTemplate id 0 CKO_PUBLIC_KEY |
|
65 NewArray pubkeyID CK_ULONG 10 |
|
66 C_FindObjectsInit session id sizeA(id) |
|
67 C_FindObjects session pubkeyID sizeA(pubkeyID) count |
|
68 C_FindObjectsFinal session |
|
69 NewTemplate pubkeyValue CKA_MODULUS,CKA_PUBLIC_EXPONENT |
|
70 C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue) |
|
71 BuildTemplate pubkeyValue |
|
72 C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue) |
|
73 print pubkeyValue[0] |
|
74 print pubkeyValue[1] |
|
75 |
|
76 |
|
77 C_Finalize null |
|
78 unload |
|
79 |
|
80 # |
|
81 # Now do the same for using softoken |
|
82 # |
|
83 load softokn3.dll |
|
84 NewInitArg init CKF_OS_LOCKING_OK configdir=./db |
|
85 C_Initialize init |
|
86 C_GetSlotList false NULL slotCount |
|
87 NewArray slotList CK_ULONG slotCount |
|
88 C_GetSlotList false slotList slotCount |
|
89 #change the following to the appropriate slot id |
|
90 set slotID slotList[1] |
|
91 #set slotID slotList[0] |
|
92 C_GetSlotInfo slotID slotInfo |
|
93 C_GetTokenInfo slotID tokenInfo |
|
94 C_OpenSession slotID CKF_SERIAL_SESSION session |
|
95 NewTemplate search CKA_CLASS |
|
96 SetTemplate search 0 CKO_CERTIFICATE |
|
97 NewArray certID CK_ULONG 10 |
|
98 C_FindObjectsInit session search 1 |
|
99 C_FindObjects session certID sizeA(certID) count |
|
100 C_FindObjectsFinal session |
|
101 # |
|
102 # now read the cert out |
|
103 # |
|
104 #NewTemplate derCert CKA_VALUE |
|
105 #NewTemplate certName CKA_LABEL,CKA_VALUE |
|
106 #C_GetAttributeValue session certID[0] certName sizeA(certName) |
|
107 #BuildTemplate certName |
|
108 #C_GetAttributeValue session certID[0] certName sizeA(certName) |
|
109 #print certName[0] |
|
110 #Set countm1 count |
|
111 #Decrement countm1 1 |
|
112 #LoopRun pLabel1 i 0 countm1 1 |
|
113 Set i 0 |
|
114 run pLabel1 |
|
115 NewTemplate id CKA_CLASS,CKA_ID |
|
116 C_GetAttributeValue session certID[i] id sizeA(id) |
|
117 BuildTemplate id |
|
118 C_GetAttributeValue session certID[i] id sizeA(id) |
|
119 SetTemplate id 0 CKO_PRIVATE_KEY |
|
120 NewArray keyID CK_ULONG 10 |
|
121 C_FindObjectsInit session id sizeA(id) |
|
122 C_FindObjects session keyID sizeA(keyID) count |
|
123 C_FindObjectsFinal session |
|
124 |
|
125 NewMechanism rsaParams CKM_RSA_PKCS |
|
126 NewArray sign data 256 |
|
127 NewArray sdata data 36 |
|
128 C_SignInit session rsaParams keyID[0] |
|
129 C_Sign session sdata sizeof(sdata) sign sizeof(sign) |
|
130 save signature2 sign |
|
131 save hash2 sdata |
|
132 |
|
133 SetTemplate id 0 CKO_PUBLIC_KEY |
|
134 NewArray pubkeyID CK_ULONG 10 |
|
135 C_FindObjectsInit session id sizeA(id) |
|
136 C_FindObjects session pubkeyID sizeA(pubkeyID) count |
|
137 C_FindObjectsFinal session |
|
138 |
|
139 # |
|
140 # OK now we use raw unwrap and see what we have... |
|
141 # |
|
142 NewMechanism rawRsaParams CKM_RSA_X_509 |
|
143 NewArray vdata data 256 |
|
144 C_VerifyRecoverInit session rawRsaParams pubkeyID[0] |
|
145 C_VerifyRecover session sign sizeof(sign) vdata sizeof(vdata) |
|
146 save verify2 vdata |
|
147 restore signature sign |
|
148 C_VerifyRecoverInit session rawRsaParams pubkeyID[0] |
|
149 C_VerifyRecover session sign sizeof(sign) vdata sizeof(vdata) |
|
150 save verify vdata |
|
151 |
|
152 NewTemplate pubkeyValue CKA_MODULUS,CKA_PUBLIC_EXPONENT |
|
153 C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue) |
|
154 BuildTemplate pubkeyValue |
|
155 C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue) |
|
156 print pubkeyValue[0] |
|
157 print pubkeyValue[1] |
|
158 |
|
159 |
|
160 C_Finalize null |
|
161 |
|
162 unload |