security/nss/cmd/pk11util/scripts/dosign

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/security/nss/cmd/pk11util/scripts/dosign	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,162 @@
     1.4 +Load nsscapi.dll
     1.5 +C_Initialize NULL
     1.6 +C_GetSlotList false NULL slotCount
     1.7 +NewArray slotList CK_ULONG slotCount
     1.8 +C_GetSlotList false slotList slotCount
     1.9 +#change the following to the appropriate slot id
    1.10 +set slotID 1
    1.11 +#set slotID slotList[0]
    1.12 +C_GetSlotInfo slotID slotInfo
    1.13 +C_GetTokenInfo slotID tokenInfo
    1.14 +C_OpenSession slotID CKF_SERIAL_SESSION session
    1.15 +#
    1.16 +#uncomment the following line and include the correct password
    1.17 +#C_Login session CKU_USER 0000 4 
    1.18 +#
    1.19 +# build the search template
    1.20 +#
    1.21 +NewTemplate search CKA_CLASS
    1.22 +SetTemplate search 0 CKO_CERTIFICATE
    1.23 +NewArray certID CK_ULONG 10
    1.24 +C_FindObjectsInit session search 1
    1.25 +C_FindObjects session certID sizeA(certID) count
    1.26 +C_FindObjectsFinal session
    1.27 +#
    1.28 +# now read the cert out
    1.29 +#
    1.30 +#NewTemplate derCert CKA_VALUE
    1.31 +#NewTemplate certName CKA_LABEL,CKA_VALUE
    1.32 +#C_GetAttributeValue session certID[0] certName sizeA(certName)
    1.33 +#BuildTemplate certName
    1.34 +#C_GetAttributeValue session certID[0] certName sizeA(certName)
    1.35 +#print certName[0]
    1.36 +Set countm1 count
    1.37 +Decrement countm1 1
    1.38 +LoopRun pLabel1 i 0 countm1 1
    1.39 +Set i 1
    1.40 +run pLabel1
    1.41 +NewTemplate id CKA_CLASS,CKA_ID
    1.42 +C_GetAttributeValue session certID[i] id sizeA(id)
    1.43 +BuildTemplate id
    1.44 +C_GetAttributeValue session certID[i] id sizeA(id)
    1.45 +SetTemplate id 0 CKO_PRIVATE_KEY
    1.46 +NewArray keyID CK_ULONG 10
    1.47 +C_FindObjectsInit session id sizeA(id)
    1.48 +C_FindObjects session keyID sizeA(keyID) count
    1.49 +C_FindObjectsFinal session
    1.50 +
    1.51 +NewMechanism rsaParams CKM_RSA_PKCS
    1.52 +NewArray sign data 256
    1.53 +NewArray sdata data 36
    1.54 +C_SignInit session rsaParams keyID[0]
    1.55 +print sdata
    1.56 +C_Sign session sdata sizeof(sdata) sign sizeof(sign)
    1.57 +save signature sign
    1.58 +save hash sdata
    1.59 +NewTemplate privValue CKA_MODULUS,CKA_PUBLIC_EXPONENT
    1.60 +C_GetAttributeValue session keyID[0] privValue sizeA(privValue)
    1.61 +BuildTemplate privValue
    1.62 +C_GetAttributeValue session keyID[0] privValue sizeA(privValue)
    1.63 +print privValue[0]
    1.64 +print privValue[1]
    1.65 +
    1.66 +# save the public key
    1.67 +SetTemplate id 0 CKO_PUBLIC_KEY
    1.68 +NewArray pubkeyID CK_ULONG 10
    1.69 +C_FindObjectsInit session id sizeA(id)
    1.70 +C_FindObjects session pubkeyID sizeA(pubkeyID) count
    1.71 +C_FindObjectsFinal session
    1.72 +NewTemplate pubkeyValue CKA_MODULUS,CKA_PUBLIC_EXPONENT
    1.73 +C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
    1.74 +BuildTemplate pubkeyValue
    1.75 +C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
    1.76 +print pubkeyValue[0]
    1.77 +print pubkeyValue[1]
    1.78 +
    1.79 +
    1.80 +C_Finalize null
    1.81 +unload
    1.82 +
    1.83 +#
    1.84 +# Now do the same for using softoken
    1.85 +#
    1.86 +load softokn3.dll
    1.87 +NewInitArg init CKF_OS_LOCKING_OK configdir=./db
    1.88 +C_Initialize init
    1.89 +C_GetSlotList false NULL slotCount
    1.90 +NewArray slotList CK_ULONG slotCount
    1.91 +C_GetSlotList false slotList slotCount
    1.92 +#change the following to the appropriate slot id
    1.93 +set slotID slotList[1]
    1.94 +#set slotID slotList[0]
    1.95 +C_GetSlotInfo slotID slotInfo
    1.96 +C_GetTokenInfo slotID tokenInfo
    1.97 +C_OpenSession slotID CKF_SERIAL_SESSION session
    1.98 +NewTemplate search CKA_CLASS
    1.99 +SetTemplate search 0 CKO_CERTIFICATE
   1.100 +NewArray certID CK_ULONG 10
   1.101 +C_FindObjectsInit session search 1
   1.102 +C_FindObjects session certID sizeA(certID) count
   1.103 +C_FindObjectsFinal session
   1.104 +#
   1.105 +# now read the cert out
   1.106 +#
   1.107 +#NewTemplate derCert CKA_VALUE
   1.108 +#NewTemplate certName CKA_LABEL,CKA_VALUE
   1.109 +#C_GetAttributeValue session certID[0] certName sizeA(certName)
   1.110 +#BuildTemplate certName
   1.111 +#C_GetAttributeValue session certID[0] certName sizeA(certName)
   1.112 +#print certName[0]
   1.113 +#Set countm1 count
   1.114 +#Decrement countm1 1
   1.115 +#LoopRun pLabel1 i 0 countm1 1
   1.116 +Set i 0
   1.117 +run pLabel1
   1.118 +NewTemplate id CKA_CLASS,CKA_ID
   1.119 +C_GetAttributeValue session certID[i] id sizeA(id)
   1.120 +BuildTemplate id
   1.121 +C_GetAttributeValue session certID[i] id sizeA(id)
   1.122 +SetTemplate id 0 CKO_PRIVATE_KEY
   1.123 +NewArray keyID CK_ULONG 10
   1.124 +C_FindObjectsInit session id sizeA(id)
   1.125 +C_FindObjects session keyID sizeA(keyID) count
   1.126 +C_FindObjectsFinal session
   1.127 +
   1.128 +NewMechanism rsaParams CKM_RSA_PKCS
   1.129 +NewArray sign data 256
   1.130 +NewArray sdata data 36
   1.131 +C_SignInit session rsaParams keyID[0]
   1.132 +C_Sign session sdata sizeof(sdata) sign sizeof(sign)
   1.133 +save signature2 sign
   1.134 +save hash2 sdata
   1.135 +
   1.136 +SetTemplate id 0 CKO_PUBLIC_KEY
   1.137 +NewArray pubkeyID CK_ULONG 10
   1.138 +C_FindObjectsInit session id sizeA(id)
   1.139 +C_FindObjects session pubkeyID sizeA(pubkeyID) count
   1.140 +C_FindObjectsFinal session
   1.141 +
   1.142 +#
   1.143 +# OK now we use raw unwrap and see what we have...
   1.144 +#
   1.145 +NewMechanism rawRsaParams CKM_RSA_X_509
   1.146 +NewArray vdata data 256
   1.147 +C_VerifyRecoverInit session rawRsaParams pubkeyID[0]
   1.148 +C_VerifyRecover session sign sizeof(sign) vdata sizeof(vdata)
   1.149 +save verify2 vdata
   1.150 +restore signature sign
   1.151 +C_VerifyRecoverInit session rawRsaParams pubkeyID[0]
   1.152 +C_VerifyRecover session sign sizeof(sign) vdata sizeof(vdata)
   1.153 +save verify vdata
   1.154 +
   1.155 +NewTemplate pubkeyValue CKA_MODULUS,CKA_PUBLIC_EXPONENT
   1.156 +C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
   1.157 +BuildTemplate pubkeyValue
   1.158 +C_GetAttributeValue session pubkeyID[0] pubkeyValue sizeA(pubkeyValue)
   1.159 +print pubkeyValue[0]
   1.160 +print pubkeyValue[1]
   1.161 +
   1.162 +
   1.163 +C_Finalize null
   1.164 +
   1.165 +unload

mercurial