security/nss/cmd/pk11util/scripts/dosign

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     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
    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]
    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]
    77 C_Finalize null
    78 unload
    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
   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
   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
   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
   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]
   160 C_Finalize null
   162 unload

mercurial