aboutsummaryrefslogtreecommitdiff
path: root/cryptech/py11/prototypes.py
blob: 7951515e7d4703e616e04b958dc3c09b3de90e31 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# An attempt at a Python interface to PKCS 11 using the scary ctypes
# module from the Python standard library.

from ctypes      import *
from .types      import *

# Prototypes for the PKCS #11 public functions.
#
# We don't bother implementing C_GetFunctionList(), because it would
# be extremely tedious and it's not all that useful to us in Python.
# Instead, we emulate its behavior in the PKCS11 class.

Prototypes = dict(
  C_Initialize           = [CK_VOID_PTR],
  C_Finalize             = [CK_VOID_PTR],
  C_GetInfo              = [CK_INFO_PTR],
# C_GetFunctionList      = [CK_FUNCTION_LIST_PTR_PTR],
  C_GetSlotList          = [CK_BBOOL, CK_SLOT_ID_PTR, CK_ULONG_PTR],
  C_GetSlotInfo          = [CK_SLOT_ID, CK_SLOT_INFO_PTR],
  C_GetTokenInfo         = [CK_SLOT_ID, CK_TOKEN_INFO_PTR],
  C_GetMechanismList     = [CK_SLOT_ID, CK_MECHANISM_TYPE_PTR, CK_ULONG_PTR],
  C_GetMechanismInfo     = [CK_SLOT_ID, CK_MECHANISM_TYPE, CK_MECHANISM_INFO_PTR],
  C_InitToken            = [CK_SLOT_ID, CK_UTF8CHAR_PTR, CK_ULONG, CK_UTF8CHAR_PTR],
  C_InitPIN              = [CK_SESSION_HANDLE, CK_UTF8CHAR_PTR, CK_ULONG],
  C_SetPIN               = [CK_SESSION_HANDLE, CK_UTF8CHAR_PTR, CK_ULONG, CK_UTF8CHAR_PTR, CK_ULONG],
  C_OpenSession          = [CK_SLOT_ID, CK_FLAGS, CK_VOID_PTR, CK_NOTIFY, CK_SESSION_HANDLE_PTR],
  C_CloseSession         = [CK_SESSION_HANDLE],
  C_CloseAllSessions     = [CK_SLOT_ID],
  C_GetSessionInfo       = [CK_SESSION_HANDLE, CK_SESSION_INFO_PTR],
  C_GetOperationState    = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG_PTR],
  C_SetOperationState    = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_OBJECT_HANDLE, CK_OBJECT_HANDLE],
  C_Login                = [CK_SESSION_HANDLE, CK_USER_TYPE, CK_UTF8CHAR_PTR, CK_ULONG],
  C_Logout               = [CK_SESSION_HANDLE],
  C_CreateObject         = [CK_SESSION_HANDLE, CK_ATTRIBUTE_PTR, CK_ULONG, CK_OBJECT_HANDLE_PTR],
  C_CopyObject           = [CK_SESSION_HANDLE, CK_OBJECT_HANDLE, CK_ATTRIBUTE_PTR, CK_ULONG, CK_OBJECT_HANDLE_PTR],
  C_DestroyObject        = [CK_SESSION_HANDLE, CK_OBJECT_HANDLE],
  C_GetObjectSize        = [CK_SESSION_HANDLE, CK_OBJECT_HANDLE, CK_ULONG_PTR],
  C_GetAttributeValue    = [CK_SESSION_HANDLE, CK_OBJECT_HANDLE, CK_ATTRIBUTE_PTR, CK_ULONG],
  C_SetAttributeValue    = [CK_SESSION_HANDLE, CK_OBJECT_HANDLE, CK_ATTRIBUTE_PTR, CK_ULONG],
  C_FindObjectsInit      = [CK_SESSION_HANDLE, CK_ATTRIBUTE_PTR, CK_ULONG],
  C_FindObjects          = [CK_SESSION_HANDLE, CK_OBJECT_HANDLE_PTR, CK_ULONG, CK_ULONG_PTR],
  C_FindObjectsFinal     = [CK_SESSION_HANDLE],
  C_EncryptInit          = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE],
  C_Encrypt              = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_EncryptUpdate        = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_EncryptFinal         = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DecryptInit          = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE],
  C_Decrypt              = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DecryptUpdate        = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DecryptFinal         = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DigestInit           = [CK_SESSION_HANDLE, CK_MECHANISM_PTR],
  C_Digest               = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DigestUpdate         = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG],
  C_DigestKey            = [CK_SESSION_HANDLE, CK_OBJECT_HANDLE],
  C_DigestFinal          = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG_PTR],
  C_SignInit             = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE],
  C_Sign                 = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_SignUpdate           = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG],
  C_SignFinal            = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG_PTR],
  C_SignRecoverInit      = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE],
  C_SignRecover          = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_VerifyInit           = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE],
  C_Verify               = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG],
  C_VerifyUpdate         = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG],
  C_VerifyFinal          = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG],
  C_VerifyRecoverInit    = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE],
  C_VerifyRecover        = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DigestEncryptUpdate  = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DecryptDigestUpdate  = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_SignEncryptUpdate    = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_DecryptVerifyUpdate  = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG, CK_BYTE_PTR, CK_ULONG_PTR],
  C_GenerateKey          = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_ATTRIBUTE_PTR, CK_ULONG, CK_OBJECT_HANDLE_PTR],
  C_GenerateKeyPair      = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_ATTRIBUTE_PTR, CK_ULONG,
                            CK_ATTRIBUTE_PTR, CK_ULONG, CK_OBJECT_HANDLE_PTR, CK_OBJECT_HANDLE_PTR],
  C_WrapKey              = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, CK_OBJECT_HANDLE,
                            CK_BYTE_PTR, CK_ULONG_PTR],
  C_UnwrapKey            = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, CK_BYTE_PTR, CK_ULONG,
                            CK_ATTRIBUTE_PTR, CK_ULONG, CK_OBJECT_HANDLE_PTR],
  C_DeriveKey            = [CK_SESSION_HANDLE, CK_MECHANISM_PTR, CK_OBJECT_HANDLE, CK_ATTRIBUTE_PTR, CK_ULONG,
                            CK_OBJECT_HANDLE_PTR],
  C_SeedRandom           = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG],
  C_GenerateRandom       = [CK_SESSION_HANDLE, CK_BYTE_PTR, CK_ULONG],
  C_GetFunctionStatus    = [CK_SESSION_HANDLE],
  C_CancelFunction       = [CK_SESSION_HANDLE],
  C_WaitForSlotEvent     = [CK_FLAGS, CK_SLOT_ID_PTR, CK_VOID_PTR])