package pkcs11

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Source file p11_rv.ml

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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
type t =
  | CKR_OK
  | CKR_CANCEL
  | CKR_HOST_MEMORY
  | CKR_SLOT_ID_INVALID
  | CKR_GENERAL_ERROR
  | CKR_FUNCTION_FAILED
  | CKR_ARGUMENTS_BAD
  | CKR_NO_EVENT
  | CKR_NEED_TO_CREATE_THREADS
  | CKR_CANT_LOCK
  | CKR_ATTRIBUTE_READ_ONLY
  | CKR_ATTRIBUTE_SENSITIVE
  | CKR_ATTRIBUTE_TYPE_INVALID
  | CKR_ATTRIBUTE_VALUE_INVALID
  | CKR_ACTION_PROHIBITED
  | CKR_DATA_INVALID
  | CKR_DATA_LEN_RANGE
  | CKR_DEVICE_ERROR
  | CKR_DEVICE_MEMORY
  | CKR_DEVICE_REMOVED
  | CKR_ENCRYPTED_DATA_INVALID
  | CKR_ENCRYPTED_DATA_LEN_RANGE
  | CKR_FUNCTION_CANCELED
  | CKR_FUNCTION_NOT_PARALLEL
  | CKR_FUNCTION_NOT_SUPPORTED
  | CKR_KEY_HANDLE_INVALID
  | CKR_KEY_SIZE_RANGE
  | CKR_KEY_TYPE_INCONSISTENT
  | CKR_KEY_NOT_NEEDED
  | CKR_KEY_CHANGED
  | CKR_KEY_NEEDED
  | CKR_KEY_INDIGESTIBLE
  | CKR_KEY_FUNCTION_NOT_PERMITTED
  | CKR_KEY_NOT_WRAPPABLE
  | CKR_KEY_UNEXTRACTABLE
  | CKR_MECHANISM_INVALID
  | CKR_MECHANISM_PARAM_INVALID
  | CKR_OBJECT_HANDLE_INVALID
  | CKR_OPERATION_ACTIVE
  | CKR_OPERATION_NOT_INITIALIZED
  | CKR_PIN_INCORRECT
  | CKR_PIN_INVALID
  | CKR_PIN_LEN_RANGE
  | CKR_PIN_EXPIRED
  | CKR_PIN_LOCKED
  | CKR_SESSION_CLOSED
  | CKR_SESSION_COUNT
  | CKR_SESSION_HANDLE_INVALID
  | CKR_SESSION_PARALLEL_NOT_SUPPORTED
  | CKR_SESSION_READ_ONLY
  | CKR_SESSION_EXISTS
  | CKR_SESSION_READ_ONLY_EXISTS
  | CKR_SESSION_READ_WRITE_SO_EXISTS
  | CKR_SIGNATURE_INVALID
  | CKR_SIGNATURE_LEN_RANGE
  | CKR_TEMPLATE_INCOMPLETE
  | CKR_TEMPLATE_INCONSISTENT
  | CKR_TOKEN_NOT_PRESENT
  | CKR_TOKEN_NOT_RECOGNIZED
  | CKR_TOKEN_WRITE_PROTECTED
  | CKR_UNWRAPPING_KEY_HANDLE_INVALID
  | CKR_UNWRAPPING_KEY_SIZE_RANGE
  | CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT
  | CKR_USER_ALREADY_LOGGED_IN
  | CKR_USER_NOT_LOGGED_IN
  | CKR_USER_PIN_NOT_INITIALIZED
  | CKR_USER_TYPE_INVALID
  | CKR_USER_ANOTHER_ALREADY_LOGGED_IN
  | CKR_USER_TOO_MANY_TYPES
  | CKR_WRAPPED_KEY_INVALID
  | CKR_WRAPPED_KEY_LEN_RANGE
  | CKR_WRAPPING_KEY_HANDLE_INVALID
  | CKR_WRAPPING_KEY_SIZE_RANGE
  | CKR_WRAPPING_KEY_TYPE_INCONSISTENT
  | CKR_RANDOM_SEED_NOT_SUPPORTED
  | CKR_RANDOM_NO_RNG
  | CKR_DOMAIN_PARAMS_INVALID
  | CKR_CURVE_NOT_SUPPORTED
  | CKR_BUFFER_TOO_SMALL
  | CKR_SAVED_STATE_INVALID
  | CKR_INFORMATION_SENSITIVE
  | CKR_STATE_UNSAVEABLE
  | CKR_CRYPTOKI_NOT_INITIALIZED
  | CKR_CRYPTOKI_ALREADY_INITIALIZED
  | CKR_MUTEX_BAD
  | CKR_MUTEX_NOT_LOCKED
  | CKR_NEW_PIN_MODE
  | CKR_NEXT_OTP
  | CKR_EXCEEDED_MAX_ITERATIONS
  | CKR_FIPS_SELF_TEST_FAILED
  | CKR_LIBRARY_LOAD_FAILED
  | CKR_PIN_TOO_WEAK
  | CKR_PUBLIC_KEY_INVALID
  | CKR_FUNCTION_REJECTED
  | CKR_VENDOR_DEFINED
  | CKR_CS_UNKNOWN of P11_ulong.t
[@@deriving eq, ord, show, yojson]

let to_string = function
  | CKR_OK -> "CKR_OK"
  | CKR_CANCEL -> "CKR_CANCEL"
  | CKR_HOST_MEMORY -> "CKR_HOST_MEMORY"
  | CKR_SLOT_ID_INVALID -> "CKR_SLOT_ID_INVALID"
  | CKR_GENERAL_ERROR -> "CKR_GENERAL_ERROR"
  | CKR_FUNCTION_FAILED -> "CKR_FUNCTION_FAILED"
  | CKR_ARGUMENTS_BAD -> "CKR_ARGUMENTS_BAD"
  | CKR_NO_EVENT -> "CKR_NO_EVENT"
  | CKR_NEED_TO_CREATE_THREADS -> "CKR_NEED_TO_CREATE_THREADS"
  | CKR_CANT_LOCK -> "CKR_CANT_LOCK"
  | CKR_ATTRIBUTE_READ_ONLY -> "CKR_ATTRIBUTE_READ_ONLY"
  | CKR_ATTRIBUTE_SENSITIVE -> "CKR_ATTRIBUTE_SENSITIVE"
  | CKR_ATTRIBUTE_TYPE_INVALID -> "CKR_ATTRIBUTE_TYPE_INVALID"
  | CKR_ATTRIBUTE_VALUE_INVALID -> "CKR_ATTRIBUTE_VALUE_INVALID"
  | CKR_ACTION_PROHIBITED -> "CKR_ACTION_PROHIBITED"
  | CKR_DATA_INVALID -> "CKR_DATA_INVALID"
  | CKR_DATA_LEN_RANGE -> "CKR_DATA_LEN_RANGE"
  | CKR_DEVICE_ERROR -> "CKR_DEVICE_ERROR"
  | CKR_DEVICE_MEMORY -> "CKR_DEVICE_MEMORY"
  | CKR_DEVICE_REMOVED -> "CKR_DEVICE_REMOVED"
  | CKR_ENCRYPTED_DATA_INVALID -> "CKR_ENCRYPTED_DATA_INVALID"
  | CKR_ENCRYPTED_DATA_LEN_RANGE -> "CKR_ENCRYPTED_DATA_LEN_RANGE"
  | CKR_FUNCTION_CANCELED -> "CKR_FUNCTION_CANCELED"
  | CKR_FUNCTION_NOT_PARALLEL -> "CKR_FUNCTION_NOT_PARALLEL"
  | CKR_FUNCTION_NOT_SUPPORTED -> "CKR_FUNCTION_NOT_SUPPORTED"
  | CKR_KEY_HANDLE_INVALID -> "CKR_KEY_HANDLE_INVALID"
  | CKR_KEY_SIZE_RANGE -> "CKR_KEY_SIZE_RANGE"
  | CKR_KEY_TYPE_INCONSISTENT -> "CKR_KEY_TYPE_INCONSISTENT"
  | CKR_KEY_NOT_NEEDED -> "CKR_KEY_NOT_NEEDED"
  | CKR_KEY_CHANGED -> "CKR_KEY_CHANGED"
  | CKR_KEY_NEEDED -> "CKR_KEY_NEEDED"
  | CKR_KEY_INDIGESTIBLE -> "CKR_KEY_INDIGESTIBLE"
  | CKR_KEY_FUNCTION_NOT_PERMITTED -> "CKR_KEY_FUNCTION_NOT_PERMITTED"
  | CKR_KEY_NOT_WRAPPABLE -> "CKR_KEY_NOT_WRAPPABLE"
  | CKR_KEY_UNEXTRACTABLE -> "CKR_KEY_UNEXTRACTABLE"
  | CKR_MECHANISM_INVALID -> "CKR_MECHANISM_INVALID"
  | CKR_MECHANISM_PARAM_INVALID -> "CKR_MECHANISM_PARAM_INVALID"
  | CKR_OBJECT_HANDLE_INVALID -> "CKR_OBJECT_HANDLE_INVALID"
  | CKR_OPERATION_ACTIVE -> "CKR_OPERATION_ACTIVE"
  | CKR_OPERATION_NOT_INITIALIZED -> "CKR_OPERATION_NOT_INITIALIZED"
  | CKR_PIN_INCORRECT -> "CKR_PIN_INCORRECT"
  | CKR_PIN_INVALID -> "CKR_PIN_INVALID"
  | CKR_PIN_LEN_RANGE -> "CKR_PIN_LEN_RANGE"
  | CKR_PIN_EXPIRED -> "CKR_PIN_EXPIRED"
  | CKR_PIN_LOCKED -> "CKR_PIN_LOCKED"
  | CKR_SESSION_CLOSED -> "CKR_SESSION_CLOSED"
  | CKR_SESSION_COUNT -> "CKR_SESSION_COUNT"
  | CKR_SESSION_HANDLE_INVALID -> "CKR_SESSION_HANDLE_INVALID"
  | CKR_SESSION_PARALLEL_NOT_SUPPORTED -> "CKR_SESSION_PARALLEL_NOT_SUPPORTED"
  | CKR_SESSION_READ_ONLY -> "CKR_SESSION_READ_ONLY"
  | CKR_SESSION_EXISTS -> "CKR_SESSION_EXISTS"
  | CKR_SESSION_READ_ONLY_EXISTS -> "CKR_SESSION_READ_ONLY_EXISTS"
  | CKR_SESSION_READ_WRITE_SO_EXISTS -> "CKR_SESSION_READ_WRITE_SO_EXISTS"
  | CKR_SIGNATURE_INVALID -> "CKR_SIGNATURE_INVALID"
  | CKR_SIGNATURE_LEN_RANGE -> "CKR_SIGNATURE_LEN_RANGE"
  | CKR_TEMPLATE_INCOMPLETE -> "CKR_TEMPLATE_INCOMPLETE"
  | CKR_TEMPLATE_INCONSISTENT -> "CKR_TEMPLATE_INCONSISTENT"
  | CKR_TOKEN_NOT_PRESENT -> "CKR_TOKEN_NOT_PRESENT"
  | CKR_TOKEN_NOT_RECOGNIZED -> "CKR_TOKEN_NOT_RECOGNIZED"
  | CKR_TOKEN_WRITE_PROTECTED -> "CKR_TOKEN_WRITE_PROTECTED"
  | CKR_UNWRAPPING_KEY_HANDLE_INVALID -> "CKR_UNWRAPPING_KEY_HANDLE_INVALID"
  | CKR_UNWRAPPING_KEY_SIZE_RANGE -> "CKR_UNWRAPPING_KEY_SIZE_RANGE"
  | CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT ->
    "CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT"
  | CKR_USER_ALREADY_LOGGED_IN -> "CKR_USER_ALREADY_LOGGED_IN"
  | CKR_USER_NOT_LOGGED_IN -> "CKR_USER_NOT_LOGGED_IN"
  | CKR_USER_PIN_NOT_INITIALIZED -> "CKR_USER_PIN_NOT_INITIALIZED"
  | CKR_USER_TYPE_INVALID -> "CKR_USER_TYPE_INVALID"
  | CKR_USER_ANOTHER_ALREADY_LOGGED_IN -> "CKR_USER_ANOTHER_ALREADY_LOGGED_IN"
  | CKR_USER_TOO_MANY_TYPES -> "CKR_USER_TOO_MANY_TYPES"
  | CKR_WRAPPED_KEY_INVALID -> "CKR_WRAPPED_KEY_INVALID"
  | CKR_WRAPPED_KEY_LEN_RANGE -> "CKR_WRAPPED_KEY_LEN_RANGE"
  | CKR_WRAPPING_KEY_HANDLE_INVALID -> "CKR_WRAPPING_KEY_HANDLE_INVALID"
  | CKR_WRAPPING_KEY_SIZE_RANGE -> "CKR_WRAPPING_KEY_SIZE_RANGE"
  | CKR_WRAPPING_KEY_TYPE_INCONSISTENT -> "CKR_WRAPPING_KEY_TYPE_INCONSISTENT"
  | CKR_RANDOM_SEED_NOT_SUPPORTED -> "CKR_RANDOM_SEED_NOT_SUPPORTED"
  | CKR_RANDOM_NO_RNG -> "CKR_RANDOM_NO_RNG"
  | CKR_DOMAIN_PARAMS_INVALID -> "CKR_DOMAIN_PARAMS_INVALID"
  | CKR_CURVE_NOT_SUPPORTED -> "CKR_CURVE_NOT_SUPPORTED"
  | CKR_BUFFER_TOO_SMALL -> "CKR_BUFFER_TOO_SMALL"
  | CKR_SAVED_STATE_INVALID -> "CKR_SAVED_STATE_INVALID"
  | CKR_INFORMATION_SENSITIVE -> "CKR_INFORMATION_SENSITIVE"
  | CKR_STATE_UNSAVEABLE -> "CKR_STATE_UNSAVEABLE"
  | CKR_CRYPTOKI_NOT_INITIALIZED -> "CKR_CRYPTOKI_NOT_INITIALIZED"
  | CKR_CRYPTOKI_ALREADY_INITIALIZED -> "CKR_CRYPTOKI_ALREADY_INITIALIZED"
  | CKR_MUTEX_BAD -> "CKR_MUTEX_BAD"
  | CKR_MUTEX_NOT_LOCKED -> "CKR_MUTEX_NOT_LOCKED"
  | CKR_NEW_PIN_MODE -> "CKR_NEW_PIN_MODE"
  | CKR_NEXT_OTP -> "CKR_NEXT_OTP"
  | CKR_EXCEEDED_MAX_ITERATIONS -> "CKR_EXCEEDED_MAX_ITERATIONS"
  | CKR_FIPS_SELF_TEST_FAILED -> "CKR_FIPS_SELF_TEST_FAILED"
  | CKR_LIBRARY_LOAD_FAILED -> "CKR_LIBRARY_LOAD_FAILED"
  | CKR_PIN_TOO_WEAK -> "CKR_PIN_TOO_WEAK"
  | CKR_PUBLIC_KEY_INVALID -> "CKR_PUBLIC_KEY_INVALID"
  | CKR_FUNCTION_REJECTED -> "CKR_FUNCTION_REJECTED"
  | CKR_VENDOR_DEFINED -> "CKR_VENDOR_DEFINED"
  | CKR_CS_UNKNOWN x -> Unsigned.ULong.to_string x

let of_string = function
  | "CKR_OK" -> CKR_OK
  | "CKR_CANCEL" -> CKR_CANCEL
  | "CKR_HOST_MEMORY" -> CKR_HOST_MEMORY
  | "CKR_SLOT_ID_INVALID" -> CKR_SLOT_ID_INVALID
  | "CKR_GENERAL_ERROR" -> CKR_GENERAL_ERROR
  | "CKR_FUNCTION_FAILED" -> CKR_FUNCTION_FAILED
  | "CKR_ARGUMENTS_BAD" -> CKR_ARGUMENTS_BAD
  | "CKR_NO_EVENT" -> CKR_NO_EVENT
  | "CKR_NEED_TO_CREATE_THREADS" -> CKR_NEED_TO_CREATE_THREADS
  | "CKR_CANT_LOCK" -> CKR_CANT_LOCK
  | "CKR_ATTRIBUTE_READ_ONLY" -> CKR_ATTRIBUTE_READ_ONLY
  | "CKR_ATTRIBUTE_SENSITIVE" -> CKR_ATTRIBUTE_SENSITIVE
  | "CKR_ATTRIBUTE_TYPE_INVALID" -> CKR_ATTRIBUTE_TYPE_INVALID
  | "CKR_ATTRIBUTE_VALUE_INVALID" -> CKR_ATTRIBUTE_VALUE_INVALID
  | "CKR_ACTION_PROHIBITED" -> CKR_ACTION_PROHIBITED
  | "CKR_DATA_INVALID" -> CKR_DATA_INVALID
  | "CKR_DATA_LEN_RANGE" -> CKR_DATA_LEN_RANGE
  | "CKR_DEVICE_ERROR" -> CKR_DEVICE_ERROR
  | "CKR_DEVICE_MEMORY" -> CKR_DEVICE_MEMORY
  | "CKR_DEVICE_REMOVED" -> CKR_DEVICE_REMOVED
  | "CKR_ENCRYPTED_DATA_INVALID" -> CKR_ENCRYPTED_DATA_INVALID
  | "CKR_ENCRYPTED_DATA_LEN_RANGE" -> CKR_ENCRYPTED_DATA_LEN_RANGE
  | "CKR_FUNCTION_CANCELED" -> CKR_FUNCTION_CANCELED
  | "CKR_FUNCTION_NOT_PARALLEL" -> CKR_FUNCTION_NOT_PARALLEL
  | "CKR_FUNCTION_NOT_SUPPORTED" -> CKR_FUNCTION_NOT_SUPPORTED
  | "CKR_KEY_HANDLE_INVALID" -> CKR_KEY_HANDLE_INVALID
  | "CKR_KEY_SIZE_RANGE" -> CKR_KEY_SIZE_RANGE
  | "CKR_KEY_TYPE_INCONSISTENT" -> CKR_KEY_TYPE_INCONSISTENT
  | "CKR_KEY_NOT_NEEDED" -> CKR_KEY_NOT_NEEDED
  | "CKR_KEY_CHANGED" -> CKR_KEY_CHANGED
  | "CKR_KEY_NEEDED" -> CKR_KEY_NEEDED
  | "CKR_KEY_INDIGESTIBLE" -> CKR_KEY_INDIGESTIBLE
  | "CKR_KEY_FUNCTION_NOT_PERMITTED" -> CKR_KEY_FUNCTION_NOT_PERMITTED
  | "CKR_KEY_NOT_WRAPPABLE" -> CKR_KEY_NOT_WRAPPABLE
  | "CKR_KEY_UNEXTRACTABLE" -> CKR_KEY_UNEXTRACTABLE
  | "CKR_MECHANISM_INVALID" -> CKR_MECHANISM_INVALID
  | "CKR_MECHANISM_PARAM_INVALID" -> CKR_MECHANISM_PARAM_INVALID
  | "CKR_OBJECT_HANDLE_INVALID" -> CKR_OBJECT_HANDLE_INVALID
  | "CKR_OPERATION_ACTIVE" -> CKR_OPERATION_ACTIVE
  | "CKR_OPERATION_NOT_INITIALIZED" -> CKR_OPERATION_NOT_INITIALIZED
  | "CKR_PIN_INCORRECT" -> CKR_PIN_INCORRECT
  | "CKR_PIN_INVALID" -> CKR_PIN_INVALID
  | "CKR_PIN_LEN_RANGE" -> CKR_PIN_LEN_RANGE
  | "CKR_PIN_EXPIRED" -> CKR_PIN_EXPIRED
  | "CKR_PIN_LOCKED" -> CKR_PIN_LOCKED
  | "CKR_SESSION_CLOSED" -> CKR_SESSION_CLOSED
  | "CKR_SESSION_COUNT" -> CKR_SESSION_COUNT
  | "CKR_SESSION_HANDLE_INVALID" -> CKR_SESSION_HANDLE_INVALID
  | "CKR_SESSION_PARALLEL_NOT_SUPPORTED" -> CKR_SESSION_PARALLEL_NOT_SUPPORTED
  | "CKR_SESSION_READ_ONLY" -> CKR_SESSION_READ_ONLY
  | "CKR_SESSION_EXISTS" -> CKR_SESSION_EXISTS
  | "CKR_SESSION_READ_ONLY_EXISTS" -> CKR_SESSION_READ_ONLY_EXISTS
  | "CKR_SESSION_READ_WRITE_SO_EXISTS" -> CKR_SESSION_READ_WRITE_SO_EXISTS
  | "CKR_SIGNATURE_INVALID" -> CKR_SIGNATURE_INVALID
  | "CKR_SIGNATURE_LEN_RANGE" -> CKR_SIGNATURE_LEN_RANGE
  | "CKR_TEMPLATE_INCOMPLETE" -> CKR_TEMPLATE_INCOMPLETE
  | "CKR_TEMPLATE_INCONSISTENT" -> CKR_TEMPLATE_INCONSISTENT
  | "CKR_TOKEN_NOT_PRESENT" -> CKR_TOKEN_NOT_PRESENT
  | "CKR_TOKEN_NOT_RECOGNIZED" -> CKR_TOKEN_NOT_RECOGNIZED
  | "CKR_TOKEN_WRITE_PROTECTED" -> CKR_TOKEN_WRITE_PROTECTED
  | "CKR_UNWRAPPING_KEY_HANDLE_INVALID" -> CKR_UNWRAPPING_KEY_HANDLE_INVALID
  | "CKR_UNWRAPPING_KEY_SIZE_RANGE" -> CKR_UNWRAPPING_KEY_SIZE_RANGE
  | "CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT" ->
    CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT
  | "CKR_USER_ALREADY_LOGGED_IN" -> CKR_USER_ALREADY_LOGGED_IN
  | "CKR_USER_NOT_LOGGED_IN" -> CKR_USER_NOT_LOGGED_IN
  | "CKR_USER_PIN_NOT_INITIALIZED" -> CKR_USER_PIN_NOT_INITIALIZED
  | "CKR_USER_TYPE_INVALID" -> CKR_USER_TYPE_INVALID
  | "CKR_USER_ANOTHER_ALREADY_LOGGED_IN" -> CKR_USER_ANOTHER_ALREADY_LOGGED_IN
  | "CKR_USER_TOO_MANY_TYPES" -> CKR_USER_TOO_MANY_TYPES
  | "CKR_WRAPPED_KEY_INVALID" -> CKR_WRAPPED_KEY_INVALID
  | "CKR_WRAPPED_KEY_LEN_RANGE" -> CKR_WRAPPED_KEY_LEN_RANGE
  | "CKR_WRAPPING_KEY_HANDLE_INVALID" -> CKR_WRAPPING_KEY_HANDLE_INVALID
  | "CKR_WRAPPING_KEY_SIZE_RANGE" -> CKR_WRAPPING_KEY_SIZE_RANGE
  | "CKR_WRAPPING_KEY_TYPE_INCONSISTENT" -> CKR_WRAPPING_KEY_TYPE_INCONSISTENT
  | "CKR_RANDOM_SEED_NOT_SUPPORTED" -> CKR_RANDOM_SEED_NOT_SUPPORTED
  | "CKR_RANDOM_NO_RNG" -> CKR_RANDOM_NO_RNG
  | "CKR_DOMAIN_PARAMS_INVALID" -> CKR_DOMAIN_PARAMS_INVALID
  | "CKR_CURVE_NOT_SUPPORTED" -> CKR_CURVE_NOT_SUPPORTED
  | "CKR_BUFFER_TOO_SMALL" -> CKR_BUFFER_TOO_SMALL
  | "CKR_SAVED_STATE_INVALID" -> CKR_SAVED_STATE_INVALID
  | "CKR_INFORMATION_SENSITIVE" -> CKR_INFORMATION_SENSITIVE
  | "CKR_STATE_UNSAVEABLE" -> CKR_STATE_UNSAVEABLE
  | "CKR_CRYPTOKI_NOT_INITIALIZED" -> CKR_CRYPTOKI_NOT_INITIALIZED
  | "CKR_CRYPTOKI_ALREADY_INITIALIZED" -> CKR_CRYPTOKI_ALREADY_INITIALIZED
  | "CKR_MUTEX_BAD" -> CKR_MUTEX_BAD
  | "CKR_MUTEX_NOT_LOCKED" -> CKR_MUTEX_NOT_LOCKED
  | "CKR_NEW_PIN_MODE" -> CKR_NEW_PIN_MODE
  | "CKR_NEXT_OTP" -> CKR_NEXT_OTP
  | "CKR_EXCEEDED_MAX_ITERATIONS" -> CKR_EXCEEDED_MAX_ITERATIONS
  | "CKR_FIPS_SELF_TEST_FAILED" -> CKR_FIPS_SELF_TEST_FAILED
  | "CKR_LIBRARY_LOAD_FAILED" -> CKR_LIBRARY_LOAD_FAILED
  | "CKR_PIN_TOO_WEAK" -> CKR_PIN_TOO_WEAK
  | "CKR_PUBLIC_KEY_INVALID" -> CKR_PUBLIC_KEY_INVALID
  | "CKR_FUNCTION_REJECTED" -> CKR_FUNCTION_REJECTED
  | "CKR_VENDOR_DEFINED" -> CKR_VENDOR_DEFINED
  | x -> (
    try CKR_CS_UNKNOWN (Unsigned.ULong.of_string x) with
    | Sys.Break as e -> raise e
    | _ -> invalid_arg ("Pkcs11_CK_RV.of_string" ^ ": cannot find " ^ x))
OCaml

Innovation. Community. Security.