summaryrefslogtreecommitdiffstats
path: root/security/nss/cmd/pk11util/scripts/dosign
blob: 33e761f0b623ed438fc0188274966ace5a0c7554 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
Load nsscapi.dll
C_Initialize NULL
C_GetSlotList false NULL slotCount
NewArray slotList CK_ULONG slotCount
C_GetSlotList false slotList slotCount
#change the following to the appropriate slot id
set slotID 1
#set slotID slotList[0]
C_GetSlotInfo slotID slotInfo
C_GetTokenInfo slotID tokenInfo
C_OpenSession slotID CKF_SERIAL_SESSION session
#
#uncomment the following line and include the correct password
#C_Login session CKU_USER 0000 4 
#
# build the search template
#
NewTemplate search CKA_CLASS
SetTemplate search 0 CKO_CERTIFICATE
NewArray certID CK_ULONG 10
C_FindObjectsInit session search 1
C_FindObjects session certID sizeA(certID) count
C_FindObjectsFinal session
#
# now read the cert out
#
#NewTemplate derCert CKA_VALUE
#NewTemplate certName CKA_LABEL,CKA_VALUE
#C_GetAttributeValue session certID[0] certName sizeA(certName)
#BuildTemplate certName
#C_GetAttributeValue session certID[0] certName sizeA(certName)
#print certName[0]
Set countm1 count
Decrement countm1 1
LoopRun pLabel1 i 0 countm1 1
Set i 1
run pLabel1
NewTemplate id CKA_CLASS,CKA_ID
C_GetAttributeValue session certID[i] id sizeA(id)
BuildTemplate id
C_GetAttributeValue session certID[i] id sizeA(id)
SetTemplate id 0 CKO_PRIVATE_KEY
NewArray keyID CK_ULONG 10
C_FindObjectsInit session id sizeA(id)
C_FindObjects session keyID sizeA(keyID) count
C_FindObjectsFinal session

NewMechanism rsaParams CKM_RSA_PKCS
NewArray sign data 256
NewArray sdata data 36
C_SignInit session rsaParams keyID[0]
print sdata
C_Sign session sdata sizeof(sdata) sign sizeof(sign)
save signature sign
save hash sdata
NewTemplate privValue CKA_MODULUS,CKA_PUBLIC_EXPONENT
C_GetAttributeValue session keyID[0] privValue sizeA(privValue)
BuildTemplate privValue
C_GetAttributeValue session keyID[0] privValue sizeA(privValue)
print privValue[0]
print privValue[1]

# save the public key
SetTemplate id 0 CKO_PUBLIC_KEY
NewArray pubkeyID CK_ULONG 10
C_FindObjectsInit session id sizeA(id)
C_FindObjects session pubkeyID sizeA(pubkeyID) count
C_FindObjectsFinal session
NewTemplate pubkeyValue CKA_MODULUS,CKA_PUBLIC_EXPONENT
C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
BuildTemplate pubkeyValue
C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
print pubkeyValue[0]
print pubkeyValue[1]


C_Finalize null
unload

#
# Now do the same for using softoken
#
load softokn3.dll
NewInitArg init CKF_OS_LOCKING_OK configdir=./db
C_Initialize init
C_GetSlotList false NULL slotCount
NewArray slotList CK_ULONG slotCount
C_GetSlotList false slotList slotCount
#change the following to the appropriate slot id
set slotID slotList[1]
#set slotID slotList[0]
C_GetSlotInfo slotID slotInfo
C_GetTokenInfo slotID tokenInfo
C_OpenSession slotID CKF_SERIAL_SESSION session
NewTemplate search CKA_CLASS
SetTemplate search 0 CKO_CERTIFICATE
NewArray certID CK_ULONG 10
C_FindObjectsInit session search 1
C_FindObjects session certID sizeA(certID) count
C_FindObjectsFinal session
#
# now read the cert out
#
#NewTemplate derCert CKA_VALUE
#NewTemplate certName CKA_LABEL,CKA_VALUE
#C_GetAttributeValue session certID[0] certName sizeA(certName)
#BuildTemplate certName
#C_GetAttributeValue session certID[0] certName sizeA(certName)
#print certName[0]
#Set countm1 count
#Decrement countm1 1
#LoopRun pLabel1 i 0 countm1 1
Set i 0
run pLabel1
NewTemplate id CKA_CLASS,CKA_ID
C_GetAttributeValue session certID[i] id sizeA(id)
BuildTemplate id
C_GetAttributeValue session certID[i] id sizeA(id)
SetTemplate id 0 CKO_PRIVATE_KEY
NewArray keyID CK_ULONG 10
C_FindObjectsInit session id sizeA(id)
C_FindObjects session keyID sizeA(keyID) count
C_FindObjectsFinal session

NewMechanism rsaParams CKM_RSA_PKCS
NewArray sign data 256
NewArray sdata data 36
C_SignInit session rsaParams keyID[0]
C_Sign session sdata sizeof(sdata) sign sizeof(sign)
save signature2 sign
save hash2 sdata

SetTemplate id 0 CKO_PUBLIC_KEY
NewArray pubkeyID CK_ULONG 10
C_FindObjectsInit session id sizeA(id)
C_FindObjects session pubkeyID sizeA(pubkeyID) count
C_FindObjectsFinal session

#
# OK now we use raw unwrap and see what we have...
#
NewMechanism rawRsaParams CKM_RSA_X_509
NewArray vdata data 256
C_VerifyRecoverInit session rawRsaParams pubkeyID[0]
C_VerifyRecover session sign sizeof(sign) vdata sizeof(vdata)
save verify2 vdata
restore signature sign
C_VerifyRecoverInit session rawRsaParams pubkeyID[0]
C_VerifyRecover session sign sizeof(sign) vdata sizeof(vdata)
save verify vdata

NewTemplate pubkeyValue CKA_MODULUS,CKA_PUBLIC_EXPONENT
C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
BuildTemplate pubkeyValue
C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
print pubkeyValue[0]
print pubkeyValue[1]


C_Finalize null

unload