dosign (4756B)
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