Fix arrays handling strings, and help

git-svn-id: svn://10.0.0.236/trunk@153938 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
relyea%netscape.com
2004-03-13 02:44:26 +00:00
parent 183c9687c3
commit 3a605c17eb
3 changed files with 929 additions and 169 deletions

View File

@@ -39,7 +39,9 @@ const char *_constTypeString[] = {
"Attribute",
"Mechanism",
"Result",
"Trust"
"Trust",
"AvailableSizes",
"CurrentSize"
};
const char **constTypeString = &_constTypeString[0];
@@ -246,10 +248,10 @@ const Constant _consts[] = {
mkEntry2(CKA_NETSCAPE_DB, Attribute, None),
mkEntry2(CKA_NETSCAPE_TRUST, Attribute, Trust),
mkEntry(CKM_RSA_PKCS_KEY_PAIR_GEN, Mechanism),
mkEntry(CKM_RSA_PKCS, Mechanism),
mkEntry(CKM_RSA_9796, Mechanism),
mkEntry(CKM_RSA_X_509, Mechanism),
mkEntry(CKM_RSA_PKCS_KEY_PAIR_GEN, Mechanism),
mkEntry(CKM_MD2_RSA_PKCS, Mechanism),
mkEntry(CKM_MD5_RSA_PKCS, Mechanism),
mkEntry(CKM_SHA1_RSA_PKCS, Mechanism),
@@ -550,6 +552,9 @@ const Constant _consts[] = {
mkEntry(CKT_NETSCAPE_TRUST_UNKNOWN, Trust),
mkEntry(CKT_NETSCAPE_VALID, Trust),
mkEntry(CKT_NETSCAPE_VALID_DELEGATOR, Trust),
mkEntry(CK_EFFECTIVELY_INFINITE, AvailableSizes),
mkEntry(CK_UNAVAILABLE_INFORMATION, CurrentSize),
};
const Constant *consts = &_consts[0];
@@ -557,257 +562,690 @@ const int constCount = sizeof(_consts)/sizeof(_consts[0]);
const Commands _commands[] = {
{"C_Initialize", F_C_Initialize,
"C_Initialize pInitArgs\n\n"
"C_Initialize initializes the PKCS #11 library.\n"
" pInitArgs if this is not NULL_PTR it gets\n"
" cast to \n"
" and dereferenced\n",
{ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Finalize", F_C_Finalize,
"C_Finalize pReserved \n\n"
"C_Finalize indicates that an application is done with the PKCS #11 library.\n"
" pReserved reserved. Should be NULL_PTR\n",
{ArgInitializeArgs, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetInfo", F_C_GetInfo,
"C_GetInfo pInfo\n\n"
"C_GetInfo returns general information about PKCS #11.\n"
" pInfo location that receives information\n",
{ArgInfo|ArgOut, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetFunctionList", F_C_GetFunctionList,
"C_GetFunctionList ppFunctionList \n\n"
"C_GetFunctionList returns the function list.\n"
" ppFunctionList receives pointer to\n"
" function list\n",
{ArgFunctionList|ArgOut, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetSlotList", F_C_GetSlotList,
"C_GetSlotList tokenPresent pSlotList pulCount \n\n"
"C_GetSlotList obtains a list of slots in the system.\n"
" tokenPresent only slots with tokens?\n"
" pSlotList receives array of slot IDs\n"
" pulCount receives number of slots\n",
{ArgULong, ArgULong|ArgArray|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetSlotInfo", F_C_GetSlotInfo,
"C_GetSlotInfo slotID pInfo\n\n"
"C_GetSlotInfo obtains information about a particular slot in the system.\n"
" slotID the ID of the slot\n"
" pInfo receives the slot information\n",
{ArgULong, ArgSlotInfo|ArgOut, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetTokenInfo", F_C_GetTokenInfo,
"C_GetTokenInfo slotID pInfo\n\n"
"C_GetTokenInfo obtains information about a particular token in the system.\n"
" slotID ID of the token's slot\n"
" pInfo receives the token information\n",
{ArgULong, ArgTokenInfo|ArgOut, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetMechanismList", F_C_GetMechanismList,
"C_GetMechanismList slotID pMechanismList pulCount\n\n"
"C_GetMechanismList obtains a list of mechanism types supported by a token.\n"
" slotID ID of token's slot\n"
" pMechanismList gets mech. array\n"
" pulCount gets # of mechs.\n",
{ArgULong, ArgULong|ArgArray|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetMechanismInfo", F_C_GetMechanismInfo,
"C_GetMechanismInfo slotID type pInfo\n\n"
"C_GetMechanismInfo obtains information about a particular mechanism possibly supported by a token.\n"
" slotID ID of the token's slot\n"
" type type of mechanism\n"
" pInfo receives mechanism info\n",
{ArgULong, ArgULong, ArgMechanismInfo|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_InitToken", F_C_InitToken,
"C_InitToken slotID pPin ulPinLen pLabel\n\n"
"C_InitToken initializes a token.\n"
" slotID ID of the token's slot\n"
" pPin the SO's initial PIN\n"
" ulPinLen length in bytes of the PIN\n"
" pLabel 32-byte token label (blank padded)\n",
{ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_InitPIN", F_C_InitPIN,
"C_InitPIN hSession pPin ulPinLen\n\n"
"C_InitPIN initializes the normal user's PIN.\n"
" hSession the session's handle\n"
" pPin the normal user's PIN\n"
" ulPinLen length in bytes of the PIN\n",
{ArgULong, ArgUTF8, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SetPIN", F_C_SetPIN,
"C_SetPIN hSession pOldPin ulOldLen pNewPin ulNewLen\n\n"
"C_SetPIN modifies the PIN of the user who is logged in.\n"
" hSession the session's handle\n"
" pOldPin the old PIN\n"
" ulOldLen length of the old PIN\n"
" pNewPin the new PIN\n"
" ulNewLen length of the new PIN\n",
{ArgULong, ArgUTF8, ArgULong, ArgUTF8, ArgULong,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_OpenSession", F_C_OpenSession,
"C_OpenSession slotID flags phSession\n\n"
"C_OpenSession opens a session between an application and a token.\n"
" slotID the slot's ID\n"
" flags from \n"
" phSession gets session handle\n",
{ArgULong, ArgULong, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_CloseSession", F_C_CloseSession,
"C_CloseSession hSession\n\n"
"C_CloseSession closes a session between an application and a token.\n"
" hSession the session's handle\n",
{ArgULong, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_CloseAllSessions", F_C_CloseAllSessions,
"C_CloseAllSessions slotID\n\n"
"C_CloseAllSessions closes all sessions with a token.\n"
" slotID the token's slot\n",
{ArgULong, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetSessionInfo", F_C_GetSessionInfo,
"C_GetSessionInfo hSession pInfo\n\n"
"C_GetSessionInfo obtains information about the session.\n"
" hSession the session's handle\n"
" pInfo receives session info\n",
{ArgULong, ArgSessionInfo|ArgOut, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetOperationState", F_C_GetOperationState,
"C_GetOperationState hSession pOpState pulOpStateLen\n\n"
"C_GetOperationState obtains the state of the cryptographic operation in a session.\n"
" hSession session's handle\n"
" pOpState gets state\n"
" pulOpStateLen gets state length\n",
{ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SetOperationState", F_C_SetOperationState,
"C_SetOperationState hSession pOpState ulOpStateLen hEncKey hAuthKey\n\n"
"C_SetOperationState restores the state of the cryptographic operation in a session.\n"
" hSession session's handle\n"
" pOpState holds state\n"
" ulOpStateLen holds state length\n"
" hEncKey en/decryption key\n"
" hAuthnKey sign/verify key\n",
{ArgULong, ArgChar|ArgOut, ArgULong, ArgULong, ArgULong,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Login", F_C_Login,
"C_Login hSession userType pPin ulPinLen\n\n"
"C_Login logs a user into a token.\n"
" hSession the session's handle\n"
" userType the user type\n"
" pPin the user's PIN\n"
" ulPinLen the length of the PIN\n",
{ArgULong, ArgULong, ArgVar, ArgULong, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Logout", F_C_Logout,
"C_Logout hSession\n\n"
"C_Logout logs a user out from a token.\n"
" hSession the session's handle\n",
{ArgULong, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_CreateObject", F_C_CreateObject,
"C_CreateObject hSession pTemplate ulCount phObject\n\n"
"C_CreateObject creates a new object.\n"
" hSession the session's handle\n"
" pTemplate the object's template\n"
" ulCount attributes in template\n"
" phObject gets new object's handle.\n",
{ArgULong, ArgAttribute|ArgArray, ArgULong, ArgULong|ArgOut, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_CopyObject", F_C_CopyObject,
"C_CopyObject hSession hObject pTemplate ulCount phNewObject\n\n"
"C_CopyObject copies an object creating a new object for the copy.\n"
" hSession the session's handle\n"
" hObject the object's handle\n"
" pTemplate template for new object\n"
" ulCount attributes in template\n"
" phNewObject receives handle of copy\n",
{ArgULong, ArgULong, ArgAttribute|ArgArray, ArgULong, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DestroyObject", F_C_DestroyObject,
"C_DestroyObject hSession hObject\n\n"
"C_DestroyObject destroys an object.\n"
" hSession the session's handle\n"
" hObject the object's handle\n",
{ArgULong, ArgULong, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetObjectSize", F_C_GetObjectSize,
"C_GetObjectSize hSession hObject pulSize\n\n"
"C_GetObjectSize gets the size of an object in bytes.\n"
" hSession the session's handle\n"
" hObject the object's handle\n"
" pulSize receives size of object\n",
{ArgULong, ArgULong, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetAttributeValue", F_C_GetAttributeValue,
"C_GetAttributeValue hSession hObject pTemplate ulCount\n\n"
"C_GetAttributeValue obtains the value of one or more object attributes.\n"
" hSession the session's handle\n"
" hObject the object's handle\n"
" pTemplate specifies attrs; gets vals\n"
" ulCount attributes in template\n",
{ArgULong, ArgULong, ArgAttribute|ArgArray, ArgULong, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SetAttributeValue", F_C_SetAttributeValue,
"C_SetAttributeValue hSession hObject pTemplate ulCount\n\n"
"C_SetAttributeValue modifies the value of one or more object attributes\n"
" hSession the session's handle\n"
" hObject the object's handle\n"
" pTemplate specifies attrs and values\n"
" ulCount attributes in template\n",
{ArgULong, ArgULong, ArgAttribute|ArgArray, ArgULong, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_FindObjectsInit", F_C_FindObjectsInit,
"C_FindObjectsInit hSession pTemplate ulCount\n\n"
"C_FindObjectsInit initializes a search for token and session objects that match a template.\n"
" hSession the session's handle\n"
" pTemplate attribute values to match\n"
" ulCount attrs in search template\n",
{ArgULong, ArgAttribute|ArgArray, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_FindObjectsFinal", F_C_FindObjectsFinal,
"C_FindObjectsFinal hSession\n\n"
"C_FindObjectsFinal finishes a search for token and session objects.\n"
" hSession the session's handle\n",
{ArgULong, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_FindObjects", F_C_FindObjects,
"C_FindObjects hSession phObject ulMaxObjectCount pulObjectCount\n\n"
"C_FindObjects continues a search for token and session objects that match a template obtaining additional object handles.\n"
" hSession session's handle\n"
" phObject gets obj. handles\n"
" ulMaxObjectCount max handles to get\n"
" pulObjectCount actual # returned\n",
{ArgULong, ArgULong|ArgOut, ArgULong, ArgULong|ArgOut, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_EncryptInit", F_C_EncryptInit,
"C_EncryptInit hSession pMechanism hKey\n\n"
"C_EncryptInit initializes an encryption operation.\n"
" hSession the session's handle\n"
" pMechanism the encryption mechanism\n"
" hKey handle of encryption key\n",
{ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_EncryptUpdate", F_C_EncryptUpdate,
"C_EncryptUpdate hSession pPart ulPartLen pEncryptedPart pulEncryptedPartLen\n\n"
"C_EncryptUpdate continues a multiple-part encryption operation.\n"
" hSession session's handle\n"
" pPart the plaintext data\n"
" ulPartLen plaintext data len\n"
" pEncryptedPart gets ciphertext\n"
" pulEncryptedPartLen gets c-text size\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_EncryptFinal", F_C_EncryptFinal,
"C_EncryptFinal hSession pLastEncryptedPart pulLastEncryptedPartLen\n\n"
"C_EncryptFinal finishes a multiple-part encryption operation.\n"
" hSession session handle\n"
" pLastEncryptedPart last c-text\n"
" pulLastEncryptedPartLen gets last size\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Encrypt", F_C_Encrypt,
"C_Encrypt hSession pData ulDataLen pEncryptedData pulEncryptedDataLen\n\n"
"C_Encrypt encrypts single-part data.\n"
" hSession session's handle\n"
" pData the plaintext data\n"
" ulDataLen bytes of plaintext\n"
" pEncryptedData gets ciphertext\n"
" pulEncryptedDataLen gets c-text size\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DecryptInit", F_C_DecryptInit,
"C_DecryptInit hSession pMechanism hKey\n\n"
"C_DecryptInit initializes a decryption operation.\n"
" hSession the session's handle\n"
" pMechanism the decryption mechanism\n"
" hKey handle of decryption key\n",
{ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DecryptUpdate", F_C_DecryptUpdate,
"C_DecryptUpdate hSession pEncryptedPart ulEncryptedPartLen pPart pulPartLen\n\n"
"C_DecryptUpdate continues a multiple-part decryption operation.\n"
" hSession session's handle\n"
" pEncryptedPart encrypted data\n"
" ulEncryptedPartLen input length\n"
" pPart gets plaintext\n"
" pulPartLen p-text size\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DecryptFinal", F_C_DecryptFinal,
"C_DecryptFinal hSession pLastPart pulLastPartLen\n\n"
"C_DecryptFinal finishes a multiple-part decryption operation.\n"
" hSession the session's handle\n"
" pLastPart gets plaintext\n"
" pulLastPartLen p-text size\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Decrypt", F_C_Decrypt,
"C_Decrypt hSession pEncryptedData ulEncryptedDataLen pData pulDataLen\n\n"
"C_Decrypt decrypts encrypted data in a single part.\n"
" hSession session's handle\n"
" pEncryptedData ciphertext\n"
" ulEncryptedDataLen ciphertext length\n"
" pData gets plaintext\n"
" pulDataLen gets p-text size\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DigestInit", F_C_DigestInit,
"C_DigestInit hSession pMechanism\n\n"
"C_DigestInit initializes a message-digesting operation.\n"
" hSession the session's handle\n"
" pMechanism the digesting mechanism\n",
{ArgULong, ArgMechanism, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DigestUpdate", F_C_DigestUpdate,
"C_DigestUpdate hSession pPart ulPartLen\n\n"
"C_DigestUpdate continues a multiple-part message-digesting operation.\n"
" hSession the session's handle\n"
" pPart data to be digested\n"
" ulPartLen bytes of data to be digested\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DigestKey", F_C_DigestKey,
"C_DigestKey hSession hKey\n\n"
"C_DigestKey continues a multi-part message-digesting operation by digesting the value of a secret key as part of the data already digested.\n"
" hSession the session's handle\n"
" hKey secret key to digest\n",
{ArgULong, ArgULong, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DigestFinal", F_C_DigestFinal,
"C_DigestFinal hSession pDigest pulDigestLen\n\n"
"C_DigestFinal finishes a multiple-part message-digesting operation.\n"
" hSession the session's handle\n"
" pDigest gets the message digest\n"
" pulDigestLen gets byte count of digest\n",
{ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Digest", F_C_Digest,
"C_Digest hSession pData ulDataLen pDigest pulDigestLen\n\n"
"C_Digest digests data in a single part.\n"
" hSession the session's handle\n"
" pData data to be digested\n"
" ulDataLen bytes of data to digest\n"
" pDigest gets the message digest\n"
" pulDigestLen gets digest length\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SignInit", F_C_SignInit,
"C_SignInit hSession pMechanism hKey \n\n"
"C_SignInit initializes a signature (private key encryption operation where the signature is (will be) an appendix to the data and plaintext cannot be recovered from the signature.\n"
" hSession the session's handle\n"
" pMechanism the signature mechanism\n"
" hKey handle of signature key\n",
{ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SignUpdate", F_C_SignUpdate,
"C_SignUpdate hSession pPart ulPartLen\n\n"
"C_SignUpdate continues a multiple-part signature operation where the signature is (will be) an appendix to the data and plaintext cannot be recovered from the signature.\n"
" hSession the session's handle\n"
" pPart the data to sign\n"
" ulPartLen count of bytes to sign\n",
{ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SignFinal", F_C_SignFinal,
"C_SignFinal hSession pSignature pulSignatureLen\n\n"
"C_SignFinal finishes a multiple-part signature operation returning the signature.\n"
" hSession the session's handle\n"
" pSignature gets the signature\n"
" pulSignatureLen gets signature length\n",
{ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SignRecoverInit", F_C_SignRecoverInit,
"C_SignRecoverInit hSession pMechanism hKey\n\n"
"C_SignRecoverInit initializes a signature operation where the data can be recovered from the signature.\n"
" hSession the session's handle\n"
" pMechanism the signature mechanism\n"
" hKey handle of the signature key\n",
{ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SignRecover", F_C_SignRecover,
"C_SignRecover hSession pData ulDataLen pSignature pulSignatureLen\n\n"
"C_SignRecover signs data in a single operation where the data can be recovered from the signature.\n"
" hSession the session's handle\n"
" pData the data to sign\n"
" ulDataLen count of bytes to sign\n"
" pSignature gets the signature\n"
" pulSignatureLen gets signature length\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Sign", F_C_Sign,
"C_Sign hSession pData ulDataLen pSignature pulSignatureLen\n\n"
"C_Sign signs (encrypts with private key) data in a single part where the signature is (will be) an appendix to the data and plaintext cannot be recovered from the signature.\n"
" hSession the session's handle\n"
" pData the data to sign\n"
" ulDataLen count of bytes to sign\n"
" pSignature gets the signature\n"
" pulSignatureLen gets signature length\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_VerifyInit", F_C_VerifyInit,
"C_VerifyInit hSession pMechanism hKey\n\n"
"C_VerifyInit initializes a verification operation where the signature is an appendix to the data and plaintext cannot cannot be recovered from the signature (e.g. DSA).\n"
" hSession the session's handle\n"
" pMechanism the verification mechanism\n"
" hKey verification key \n",
{ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_VerifyUpdate", F_C_VerifyUpdate,
"C_VerifyUpdate hSession pPart ulPartLen\n\n"
"C_VerifyUpdate continues a multiple-part verification operation where the signature is an appendix to the data and plaintext cannot be recovered from the signature.\n"
" hSession the session's handle\n"
" pPart signed data\n"
" ulPartLen length of signed data\n",
{ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_VerifyFinal", F_C_VerifyFinal,
"C_VerifyFinal hSession pSignature ulSignatureLen\n\n"
"C_VerifyFinal finishes a multiple-part verification operation checking the signature.\n"
" hSession the session's handle\n"
" pSignature signature to verify\n"
" ulSignatureLen signature length\n",
{ArgULong, ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_VerifyRecoverInit", F_C_VerifyRecoverInit,
"C_VerifyRecoverInit hSession pMechanism hKey\n\n"
"C_VerifyRecoverInit initializes a signature verification operation where the data is recovered from the signature.\n"
" hSession the session's handle\n"
" pMechanism the verification mechanism\n"
" hKey verification key\n",
{ArgULong, ArgMechanism, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_VerifyRecover", F_C_VerifyRecover,
"C_VerifyRecover hSession pSignature ulSignatureLen pData pulDataLen\n\n"
"C_VerifyRecover verifies a signature in a single-part operation where the data is recovered from the signature.\n"
" hSession the session's handle\n"
" pSignature signature to verify\n"
" ulSignatureLen signature length\n"
" pData gets signed data\n"
" pulDataLen gets signed data len\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_Verify", F_C_Verify,
"C_Verify hSession pData ulDataLen pSignature ulSignatureLen\n\n"
"C_Verify verifies a signature in a single-part operation where the signature is an appendix to the data and plaintext cannot be recovered from the signature.\n"
" hSession the session's handle\n"
" pData signed data\n"
" ulDataLen length of signed data\n"
" pSignature signature\n"
" ulSignatureLen signature length*/\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DigestEncryptUpdate", F_C_DigestEncryptUpdate,
"C_DigestEncryptUpdate hSession pPart ulPartLen pEncryptedPart pulEncryptedPartLen\n\n"
"C_DigestEncryptUpdate continues a multiple-part digesting and encryption operation.\n"
" hSession session's handle\n"
" pPart the plaintext data\n"
" ulPartLen plaintext length\n"
" pEncryptedPart gets ciphertext\n"
" pulEncryptedPartLen gets c-text length\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DecryptDigestUpdate", F_C_DecryptDigestUpdate,
"C_DecryptDigestUpdate hSession pEncryptedPart ulEncryptedPartLen pPart pulPartLen\n\n"
"C_DecryptDigestUpdate continues a multiple-part decryption and digesting operation.\n"
" hSession session's handle\n"
" pEncryptedPart ciphertext\n"
" ulEncryptedPartLen ciphertext length\n"
" pPart gets plaintext\n"
" pulPartLen gets plaintext len\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SignEncryptUpdate", F_C_SignEncryptUpdate,
"C_SignEncryptUpdate hSession pPart ulPartLen pEncryptedPart pulEncryptedPartLen\n\n"
"C_SignEncryptUpdate continues a multiple-part signing and encryption operation.\n"
" hSession session's handle\n"
" pPart the plaintext data\n"
" ulPartLen plaintext length\n"
" pEncryptedPart gets ciphertext\n"
" pulEncryptedPartLen gets c-text length\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_DecryptVerifyUpdate", F_C_DecryptVerifyUpdate,
"C_DecryptVerifyUpdate hSession pEncryptedPart ulEncryptedPartLen pPart pulPartLen\n\n"
"C_DecryptVerifyUpdate continues a multiple-part decryption and verify operation.\n"
" hSession session's handle\n"
" pEncryptedPart ciphertext\n"
" ulEncryptedPartLen ciphertext length\n"
" pPart gets plaintext\n"
" pulPartLen gets p-text length\n",
{ArgULong, ArgChar, ArgULong, ArgChar|ArgOut, ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GenerateKeyPair", F_C_GenerateKeyPair,
"C_GenerateKeyPair hSession pMechanism pPublicKeyTemplate ulPublicKeyAttributeCount pPrivateKeyTemplate ulPrivateKeyAttributeCount phPublicKey phPrivateKey \n\n"
"C_GenerateKeyPair generates a public-key/private-key pair creating new key objects.\n"
" hSession sessionhandle\n"
" pMechanism key-genmech.\n"
" pPublicKeyTemplate templatefor pub. key\n"
" ulPublicKeyAttributeCount # pub. attrs.\n"
" pPrivateKeyTemplate templatefor priv. key\n"
" ulPrivateKeyAttributeCount # priv. attrs.\n"
" phPublicKey gets pub. keyhandle\n"
" phPrivateKey getspriv. keyhandle\n",
{ArgULong, ArgMechanism, ArgAttribute|ArgArray, ArgULong,
ArgAttribute|ArgArray,
ArgULong, ArgULong|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone }},
{"C_GenerateKey", F_C_GenerateKey,
"C_GenerateKey hSession pMechanism pTemplate ulCount phKey \n\n"
"C_GenerateKey generates a secret key creating a new key object.\n"
" hSession the session's handle\n"
" pMechanism key generation mech.\n"
" pTemplate template for new key\n"
" ulCount # of attrs in template\n"
" phKey gets handle of new key\n",
{ArgULong, ArgMechanism, ArgAttribute|ArgArray, ArgULong,
ArgULong|ArgOut,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_WrapKey", F_C_WrapKey,
"C_WrapKey hSession pMechanism hWrappingKey hKey pWrappedKey pulWrappedKeyLen\n\n"
"C_WrapKey wraps (i.e. encrypts) a key.\n"
" hSession the session's handle\n"
" pMechanism the wrapping mechanism\n"
" hWrappingKey wrapping key\n"
" hKey key to be wrapped\n"
" pWrappedKey gets wrapped key\n"
" pulWrappedKeyLen gets wrapped key size\n",
{ArgULong, ArgMechanism, ArgULong, ArgULong, ArgULong,
ArgChar|ArgOut, ArgULong|ArgOut, ArgNone, ArgNone, ArgNone }},
{"C_UnwrapKey", F_C_UnwrapKey,
"C_UnwrapKey hSession pMechanism hUnwrappingKey pWrappedKey ulWrappedKeyLen pTemplate ulAttributeCount phKey\n\n"
"C_UnwrapKey unwraps (decrypts) a wrapped key creating a new key object.\n"
" hSession session's handle\n"
" pMechanism unwrapping mech.\n"
" hUnwrappingKey unwrapping key\n"
" pWrappedKey the wrapped key\n"
" ulWrappedKeyLen wrapped key len\n"
" pTemplate new key template\n"
" ulAttributeCount template length\n"
" phKey gets new handle\n",
{ArgULong, ArgMechanism, ArgULong, ArgChar, ArgULong,
ArgAttribute|ArgArray, ArgULong, ArgULong|ArgOut, ArgNone, ArgNone }},
{"C_DeriveKey", F_C_DeriveKey,
"C_DeriveKey hSession pMechanism hBaseKey pTemplate ulAttributeCount phKey\n\n"
"C_DeriveKey derives a key from a base key creating a new key object.\n"
" hSession session's handle\n"
" pMechanism key deriv. mech.\n"
" hBaseKey base key\n"
" pTemplate new key template\n"
" ulAttributeCount template length\n"
" phKey gets new handle\n",
{ArgULong, ArgMechanism, ArgULong, ArgAttribute|ArgArray, ArgULong,
ArgULong|ArgOut, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_SeedRandom", F_C_SeedRandom,
"C_SeedRandom hSession pSeed ulSeedLen\n\n"
"C_SeedRandom mixes additional seed material into the token's random number generator.\n"
" hSession the session's handle\n"
" pSeed the seed material\n"
" ulSeedLen length of seed material\n",
{ArgULong, ArgChar, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GenerateRandom", F_C_GenerateRandom,
"C_GenerateRandom hSession RandomData ulRandomLen\n\n"
"C_GenerateRandom generates random data.\n"
" hSession the session's handle\n"
" RandomData receives the random data\n"
" ulRandomLen # of bytes to generate\n",
{ArgULong, ArgChar, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_GetFunctionStatus", F_C_GetFunctionStatus,
"C_GetFunctionStatus hSession\n\n"
"C_GetFunctionStatus is a legacy function; it obtains an updated status of a function running in parallel with an application.\n"
" hSession the session's handle\n",
{ArgULong, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_CancelFunction", F_C_CancelFunction,
"C_CancelFunction hSession\n\n"
"C_CancelFunction is a legacy function; it cancels a function running in parallel.\n"
" hSession the session's handle\n",
{ArgULong, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"C_WaitForSlotEvent", F_C_WaitForSlotEvent,
"C_WaitForSlotEvent flags pSlot pRserved \n\n"
"C_WaitForSlotEvent waits for a slot event (token insertion removal etc.) to occur.\n"
" flags blocking/nonblocking flag\n"
" pSlot location that receives the slot ID\n"
" pRserved reserved. Should be NULL_PTR\n",
{ArgULong, ArgULong|ArgArray, ArgVar, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"NewArray", F_NewArray,
"NewArray varName varType array size\n\n"
"Creates a new array variable.\n"
" varName variable name of the new array\n"
" varType data type of the new array\n"
" size number of elements in the array\n",
{ArgVar|ArgNew, ArgVar, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"NewTemplate", F_NewTemplate,
"NewTemplate varName attributeList\n\n"
"Create a new empty template and populate the attribute list\n"
" varName variable name of the new template\n"
" attributeList comma separated list of CKA_ATTRIBUTE types\n",
{ArgVar|ArgNew, ArgVar, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"NewMechanism", F_NewMechanism,
"NewMechanism varName mechanismType\n\n"
"Create a new CK_MECHANISM object with type NULL paramters and specified type\n"
" varName variable name of the new mechansim\n"
" mechanismType CKM_ mechanism type value to set int the type field\n",
{ArgMechanism|ArgOut, ArgULong, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"BuildTemplate", F_BuildTemplate,
"BuildTemplate template\n\n"
"Allocates space for the value in a template which has the sizes filled in, but no values allocated yet.\n"
" template variable name of the template\n",
{ArgAttribute, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"SetTemplate", F_SetTemplate,
"SetTemplate template index value\n\n"
"Sets a particular element of a template to a CK_ULONG\n"
" template variable name of the template\n"
" index index into the template to the element to change\n"
" value 32 bit value to set in the template\n",
{ArgAttribute, ArgULong, ArgULong, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"SetString", F_SetStringVar,
"SetString varName string\n\n"
"Sets a particular variable to a string value\n"
" variable variable name of new string\n"
" string String to set the variable to\n",
{ArgVar|ArgNew, ArgVar, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Set", F_SetVar,
"Set varName value\n\n"
"Sets a particular variable to CK_ULONG\n"
" variable name of the new variable\n"
" value 32 bit value to set variable to\n",
{ArgVar|ArgNew, ArgULong, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Print", F_Print,
"Print varName\n\n"
"prints a variable\n"
" variable name of the variable to print\n",
{ArgVar, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Delete", F_Delete,
"Delete varName\n\n"
"delete a variable\n"
" variable name of the variable to delete\n",
{ArgVar|ArgNew, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Load", F_Load,
"load libraryName\n\n"
"load a pkcs #11 module\n"
" libraryName Name of a shared library\n",
{ArgVar, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Save", F_SaveVar,
"Save filename variable\n\n"
"Saves the binary value of 'variable' in file 'filename'\n"
" fileName target file to save the variable in\n"
" variable variable to save\n",
{ArgVar|ArgNew, ArgVar, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Restore", F_RestoreVar,
"Restore filename variable\n\n"
"Restors a variable from a file\n"
" fileName target file to restore the variable from\n"
" variable variable to restore\n",
{ArgVar|ArgNew, ArgVar, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"List", F_List,
"List all the variables\n",
{ArgNone, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Unload", F_Unload,
"Unload the currrently loaded PKCS #11 library\n",
{ArgNone, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Run", F_Run,
"Run filename\n\n"
"reads filename as script of commands to execute\n",
{ArgVar|ArgNew, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"System", F_System,
"Fix Me... ",
{ArgULong, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Help", F_Help,
"Help [command]\n\n"
"print general help, or help for a specific command\n",
{ArgVar|ArgOpt, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
{"Quit", F_Quit,
"Exit from this program",
{ArgNone, ArgNone, ArgNone, ArgNone, ArgNone,
ArgNone, ArgNone, ArgNone, ArgNone, ArgNone }},
};

File diff suppressed because it is too large Load Diff

View File

@@ -14,6 +14,7 @@ typedef enum {
#undef CK_NEED_ARG_LISt
#undef CK_PKCS11_FUNCTION_INFO
F_SetVar,
F_SetStringVar,
F_NewArray,
F_NewTemplate,
F_NewMechanism,
@@ -28,6 +29,7 @@ typedef enum {
F_Load,
F_Unload,
F_System,
F_Help,
F_Quit,
} FunctionType;
@@ -55,6 +57,8 @@ typedef enum {
ArgArray = 0x200,
ArgNew = 0x400,
ArgFile = 0x800,
ArgStatic = 0x1000,
ArgOpt = 0x2000,
} ArgType;
typedef enum _constType
@@ -76,7 +80,9 @@ typedef enum _constType
ConstAttribute,
ConstMechanism,
ConstResult,
ConstTrust
ConstTrust,
ConstAvailableSizes,
ConstCurrentSize
} ConstType;
typedef struct _constant {
@@ -120,6 +126,7 @@ struct _variable {
typedef struct _commands {
char *fname;
FunctionType fType;
char *helpString;
ArgType args[MAX_ARGS];
} Commands;