| 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 |