aboutsummaryrefslogtreecommitdiff
path: root/py11/exceptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'py11/exceptions.py')
-rw-r--r--py11/exceptions.py128
1 files changed, 128 insertions, 0 deletions
diff --git a/py11/exceptions.py b/py11/exceptions.py
new file mode 100644
index 0000000..7f86fe4
--- /dev/null
+++ b/py11/exceptions.py
@@ -0,0 +1,128 @@
+# 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
+
+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