aboutsummaryrefslogtreecommitdiff
path: root/cryptech/py11/exceptions.py
blob: 9512cdaf601bb7c6c4616942ffda73620b9b925c (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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# An attempt at a Python interface to PKCS 11 using the scary ctypes
# module from the Python standard library.

# This code is derived from the RSA PKCS #11 C header files, which say:
#
# License to copy and use this software is granted provided that it is
# identified as "RSA Security Inc. PKCS #11 Cryptographic Token Interface
# (Cryptoki)" in all material mentioning or referencing this software.
#
# License is also granted to make and use derivative works provided that
# such works are identified as "derived from the RSA Security Inc. PKCS #11
# Cryptographic Token Interface (Cryptoki)" in all material mentioning or
# referencing the derived work.
#
# RSA Security Inc. makes no representations concerning either the
# merchantability of this software or the suitability of this software for
# any particular purpose. It is provided "as is" without express or implied
# warranty of any kind.

class CKR_Exception(Exception):
  """
  Base class for PKCS #11 exceptions.
  """

  ckr_code = None
  ckr_map  = {}

  def __int__(self):
    return self.ckr_code

  @classmethod
  def raise_on_failure(cls, rv, func, *args):
    if rv != CKR_OK:
      raise cls.ckr_map[rv]

CKR_OK                                                                    = 0x00000000

class CKR_CANCEL        			(CKR_Exception): ckr_code = 0x00000001
class CKR_HOST_MEMORY   			(CKR_Exception): ckr_code = 0x00000002
class CKR_SLOT_ID_INVALI        		(CKR_Exception): ckr_code = 0x00000003
class CKR_GENERAL_ERROR                 	(CKR_Exception): ckr_code = 0x00000005
class CKR_FUNCTION_FAILED			(CKR_Exception): ckr_code = 0x00000006
class CKR_ARGUMENTS_BAD                         (CKR_Exception): ckr_code = 0x00000007
class CKR_NO_EVENT				(CKR_Exception): ckr_code = 0x00000008
class CKR_NEED_TO_CREATE_THREADS		(CKR_Exception): ckr_code = 0x00000009
class CKR_CANT_LOCK				(CKR_Exception): ckr_code = 0x0000000A
class CKR_ATTRIBUTE_READ_ONLY			(CKR_Exception): ckr_code = 0x00000010
class CKR_ATTRIBUTE_SENSITIVE			(CKR_Exception): ckr_code = 0x00000011
class CKR_ATTRIBUTE_TYPE_INVALID		(CKR_Exception): ckr_code = 0x00000012
class CKR_ATTRIBUTE_VALUE_INVALID		(CKR_Exception): ckr_code = 0x00000013
class CKR_DATA_INVALID				(CKR_Exception): ckr_code = 0x00000020
class CKR_DATA_LEN_RANGE			(CKR_Exception): ckr_code = 0x00000021
class CKR_DEVICE_ERROR				(CKR_Exception): ckr_code = 0x00000030
class CKR_DEVICE_MEMORY				(CKR_Exception): ckr_code = 0x00000031
class CKR_DEVICE_REMOVED			(CKR_Exception): ckr_code = 0x00000032
class CKR_ENCRYPTED_DATA_INVALID		(CKR_Exception): ckr_code = 0x00000040
class CKR_ENCRYPTED_DATA_LEN_RANGE		(CKR_Exception): ckr_code = 0x00000041
class CKR_FUNCTION_CANCELED			(CKR_Exception): ckr_code = 0x00000050
class CKR_FUNCTION_NOT_PARALLEL			(CKR_Exception): ckr_code = 0x00000051
class CKR_FUNCTION_NOT_SUPPORTED		(CKR_Exception): ckr_code = 0x00000054
class CKR_KEY_HANDLE_INVALID			(CKR_Exception): ckr_code = 0x00000060
class CKR_KEY_SIZE_RANGE			(CKR_Exception): ckr_code = 0x00000062
class CKR_KEY_TYPE_INCONSISTENT			(CKR_Exception): ckr_code = 0x00000063
class CKR_KEY_NOT_NEEDED			(CKR_Exception): ckr_code = 0x00000064
class CKR_KEY_CHANGED				(CKR_Exception): ckr_code = 0x00000065
class CKR_KEY_NEEDED				(CKR_Exception): ckr_code = 0x00000066
class CKR_KEY_INDIGESTIBLE			(CKR_Exception): ckr_code = 0x00000067
class CKR_KEY_FUNCTION_NOT_PERMITTED		(CKR_Exception): ckr_code = 0x00000068
class CKR_KEY_NOT_WRAPPABLE			(CKR_Exception): ckr_code = 0x00000069
class CKR_KEY_UNEXTRACTABLE			(CKR_Exception): ckr_code = 0x0000006A
class CKR_MECHANISM_INVALID			(CKR_Exception): ckr_code = 0x00000070
class CKR_MECHANISM_PARAM_INVALID		(CKR_Exception): ckr_code = 0x00000071
class CKR_OBJECT_HANDLE_INVALID			(CKR_Exception): ckr_code = 0x00000082
class CKR_OPERATION_ACTIVE			(CKR_Exception): ckr_code = 0x00000090
class CKR_OPERATION_NOT_INITIALIZED		(CKR_Exception): ckr_code = 0x00000091
class CKR_PIN_INCORRECT				(CKR_Exception): ckr_code = 0x000000A0
class CKR_PIN_INVALID				(CKR_Exception): ckr_code = 0x000000A1
class CKR_PIN_LEN_RANGE				(CKR_Exception): ckr_code = 0x000000A2
class CKR_PIN_EXPIRED				(CKR_Exception): ckr_code = 0x000000A3
class CKR_PIN_LOCKED				(CKR_Exception): ckr_code = 0x000000A4
class CKR_SESSION_CLOSED			(CKR_Exception): ckr_code = 0x000000B0
class CKR_SESSION_COUNT				(CKR_Exception): ckr_code = 0x000000B1
class CKR_SESSION_HANDLE_INVALID		(CKR_Exception): ckr_code = 0x000000B3
class CKR_SESSION_PARALLEL_NOT_SUPPORTED	(CKR_Exception): ckr_code = 0x000000B4
class CKR_SESSION_READ_ONLY			(CKR_Exception): ckr_code = 0x000000B5
class CKR_SESSION_EXISTS			(CKR_Exception): ckr_code = 0x000000B6
class CKR_SESSION_READ_ONLY_EXISTS		(CKR_Exception): ckr_code = 0x000000B7
class CKR_SESSION_READ_WRITE_SO_EXISTS		(CKR_Exception): ckr_code = 0x000000B8
class CKR_SIGNATURE_INVALID			(CKR_Exception): ckr_code = 0x000000C0
class CKR_SIGNATURE_LEN_RANGE			(CKR_Exception): ckr_code = 0x000000C1
class CKR_TEMPLATE_INCOMPLETE			(CKR_Exception): ckr_code = 0x000000D0
class CKR_TEMPLATE_INCONSISTENT			(CKR_Exception): ckr_code = 0x000000D1
class CKR_TOKEN_NOT_PRESENT			(CKR_Exception): ckr_code = 0x000000E0
class CKR_TOKEN_NOT_RECOGNIZED			(CKR_Exception): ckr_code = 0x000000E1
class CKR_TOKEN_WRITE_PROTECTED			(CKR_Exception): ckr_code = 0x000000E2
class CKR_UNWRAPPING_KEY_HANDLE_INVALID		(CKR_Exception): ckr_code = 0x000000F0
class CKR_UNWRAPPING_KEY_SIZE_RANGE		(CKR_Exception): ckr_code = 0x000000F1
class CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT	(CKR_Exception): ckr_code = 0x000000F2
class CKR_USER_ALREADY_LOGGED_IN		(CKR_Exception): ckr_code = 0x00000100
class CKR_USER_NOT_LOGGED_IN			(CKR_Exception): ckr_code = 0x00000101
class CKR_USER_PIN_NOT_INITIALIZED		(CKR_Exception): ckr_code = 0x00000102
class CKR_USER_TYPE_INVALID			(CKR_Exception): ckr_code = 0x00000103
class CKR_USER_ANOTHER_ALREADY_LOGGED_IN	(CKR_Exception): ckr_code = 0x00000104
class CKR_USER_TOO_MANY_TYPES			(CKR_Exception): ckr_code = 0x00000105
class CKR_WRAPPED_KEY_INVALID			(CKR_Exception): ckr_code = 0x00000110
class CKR_WRAPPED_KEY_LEN_RANGE			(CKR_Exception): ckr_code = 0x00000112
class CKR_WRAPPING_KEY_HANDLE_INVALID		(CKR_Exception): ckr_code = 0x00000113
class CKR_WRAPPING_KEY_SIZE_RANGE		(CKR_Exception): ckr_code = 0x00000114
class CKR_WRAPPING_KEY_TYPE_INCONSISTENT	(CKR_Exception): ckr_code = 0x00000115
class CKR_RANDOM_SEED_NOT_SUPPORTED		(CKR_Exception): ckr_code = 0x00000120
class CKR_RANDOM_NO_RNG				(CKR_Exception): ckr_code = 0x00000121
class CKR_DOMAIN_PARAMS_INVALID			(CKR_Exception): ckr_code = 0x00000130
class CKR_BUFFER_TOO_SMALL			(CKR_Exception): ckr_code = 0x00000150
class CKR_SAVED_STATE_INVALID			(CKR_Exception): ckr_code = 0x00000160
class CKR_INFORMATION_SENSITIVE			(CKR_Exception): ckr_code = 0x00000170
class CKR_STATE_UNSAVEABLE			(CKR_Exception): ckr_code = 0x00000180
class CKR_CRYPTOKI_NOT_INITIALIZED		(CKR_Exception): ckr_code = 0x00000190
class CKR_CRYPTOKI_ALREADY_INITIALIZED		(CKR_Exception): ckr_code = 0x00000191
class CKR_MUTEX_BAD				(CKR_Exception): ckr_code = 0x000001A0
class CKR_MUTEX_NOT_LOCKED			(CKR_Exception): ckr_code = 0x000001A1
class CKR_NEW_PIN_MODE				(CKR_Exception): ckr_code = 0x000001B0
class CKR_NEXT_OTP				(CKR_Exception): ckr_code = 0x000001B1
class CKR_EXCEEDED_MAX_ITERATIONS		(CKR_Exception): ckr_code = 0x000001B5
class CKR_FIPS_SELF_TEST_FAILED			(CKR_Exception): ckr_code = 0x000001B6
class CKR_LIBRARY_LOAD_FAILED			(CKR_Exception): ckr_code = 0x000001B7
class CKR_PIN_TOO_WEAK  			(CKR_Exception): ckr_code = 0x000001B8
class CKR_PUBLIC_KEY_INVALID			(CKR_Exception): ckr_code = 0x000001B9
class CKR_FUNCTION_REJECTED			(CKR_Exception): ckr_code = 0x00000200
class CKR_VENDOR_DEFINED			(CKR_Exception): ckr_code = 0x80000000

for e in globals().values():
  if isinstance(e, type) and issubclass(e, CKR_Exception) and e is not CKR_Exception:
    CKR_Exception.ckr_map[e.ckr_code] = e