File: enums.py

package info (click to toggle)
python-pykmip 0.5.0-4%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 2,388 kB
  • sloc: python: 29,126; makefile: 34; sh: 32
file content (631 lines) | stat: -rw-r--r-- 24,988 bytes parent folder | download
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
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
# Copyright (c) 2014 The Johns Hopkins University/Applied Physics Laboratory
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

# In case of new content, remove the following line to enable flake8 tests
# flake8: noqa

import enum


class AttributeType(enum.Enum):
    UNIQUE_IDENTIFIER                = 'Unique Identifier'
    NAME                             = 'Name'
    OBJECT_TYPE                      = 'Object Type'
    CRYPTOGRAPHIC_ALGORITHM          = 'Cryptographic Algorithm'
    CRYPTOGRAPHIC_LENGTH             = 'Cryptographic Length'
    CRYPTOGRAPHIC_PARAMETERS         = 'Cryptographic Parameters'
    CRYPTOGRAPHIC_DOMAIN_PARAMETERS  = 'Cryptographic Domain Parameters'
    CERTIFICATE_TYPE                 = 'Certificate Type'
    CERTIFICATE_LENGTH               = 'Certificate Length'
    X_509_CERTIFICATE_IDENTIFIER     = 'X.509 Certificate Identifier'
    X_509_CERTIFICATE_SUBJECT        = 'X.509 Certificate Subject'
    X_509_CERTIFICATE_ISSUER         = 'X.509 Certificate Issuer'
    CERTIFICATE_IDENTIFIER           = 'Certificate Identifier'
    CERTIFICATE_SUBJECT              = 'Certificate Subject'
    CERTIFICATE_ISSUER               = 'Certificate Issuer'
    DIGITAL_SIGNATURE_ALGORITHM      = 'Digital Signature Algorithm'
    DIGEST                           = 'Digest'
    OPERATION_POLICY_NAME            = 'Operation Policy Name'
    CRYPTOGRAPHIC_USAGE_MASK         = 'Cryptographic Usage Mask'
    LEASE_TIME                       = 'Lease Time'
    USAGE_LIMITS                     = 'Usage Limits'
    STATE                            = 'State'
    INITIAL_DATE                     = 'Initial Date'
    ACTIVATION_DATE                  = 'Activation Date'
    PROCESS_START_DATE               = 'Process Start Date'
    PROTECT_STOP_DATE                = 'Protect Stop Date'
    DEACTIVATION_DATE                = 'Deactivation Date'
    DESTROY_DATE                     = 'Destroy Date'
    COMPROMISE_OCCURRENCE_DATE       = 'Compromise Occurrence Date'
    COMPROMISE_DATE                  = 'Compromise Date'
    REVOCATION_REASON                = 'Revocation Reason'
    ARCHIVE_DATE                     = 'Archive Date'
    OBJECT_GROUP                     = 'Object Group'
    FRESH                            = 'Fresh'
    LINK                             = 'Link'
    APPLICATION_SPECIFIC_INFORMATION = 'Application Specific Information'
    CONTACT_INFORMATION              = 'Contact Information'
    LAST_CHANGE_DATE                 = 'Last Change Date'
    CUSTOM_ATTRIBUTE                 = 'Custom Attribute'


class ConformanceClause(enum.Enum):
    """
    The specification of KMIP features supported by KMIP clients and servers.

    The conformance clause defines the KMIP objects and operations that need
    to be supported for a specific feature set. The clause is one of two core
    components that make up a KMIP client/server profile. For more information,
    see Section 5 of the KMIP 1.1 profiles document.
    """
    DISCOVER_VERSIONS                      = 1
    BASELINE                               = 2
    SECRET_DATA                            = 3
    SYMMETRIC_KEY_STORE                    = 4
    SYMMETRIC_KEY_FOUNDRY                  = 5
    ASYMMETRIC_KEY_STORE                   = 6
    ASYMMETRIC_KEY_AND_CERTIFICATE_STORE   = 7
    ASYMMETRIC_KEY_FOUNDRY                 = 8
    CERTIFICATE                            = 9
    ASYMMETRIC_KEY_FOUNDRY_AND_CERTIFICATE = 10
    STORAGE                                = 11


class AuthenticationSuite(enum.Enum):
    """
    The type of authentication suite used by KMIP clients and servers.

    The authentication suite defines the protocol versions and cipher suites
    that should be used to secure KMIP client/server communications. An
    authentication suite is one of two core components that make up a KMIP
    client/server profile. For more information, see Section 3 of the KMIP
    1.1 profiles document.
    """
    BASIC = 1
    TLS12 = 2


# 9.1.1.2
class Types(enum.Enum):
    DEFAULT      = 0x00
    STRUCTURE    = 0x01
    INTEGER      = 0x02
    LONG_INTEGER = 0x03
    BIG_INTEGER  = 0x04
    ENUMERATION  = 0x05
    BOOLEAN      = 0x06
    TEXT_STRING  = 0x07
    BYTE_STRING  = 0x08
    DATE_TIME    = 0x09
    INTERVAL     = 0x0A


# 9.1.3.1
class Tags(enum.Enum):
    DEFAULT                                = 0x420000
    ACTIVATION_DATE                        = 0x420001
    APPLICATION_DATA                       = 0x420002
    APPLICATION_NAMESPACE                  = 0x420003
    APPLICATION_SPECIFIC_INFORMATION       = 0x420004
    ARCHIVE_DATE                           = 0x420005
    ASYNCHRONOUS_CORRELATION_VALUE         = 0x420006
    ASYNCHRONOUS_INDICATOR                 = 0x420007
    ATTRIBUTE                              = 0x420008
    ATTRIBUTE_INDEX                        = 0x420009
    ATTRIBUTE_NAME                         = 0x42000A
    ATTRIBUTE_VALUE                        = 0x42000B
    AUTHENTICATION                         = 0x42000C
    BATCH_COUNT                            = 0x42000D
    BATCH_ERROR_CONTINUATION_OPTION        = 0x42000E
    BATCH_ITEM                             = 0x42000F
    BATCH_ORDER_OPTION                     = 0x420010
    BLOCK_CIPHER_MODE                      = 0x420011
    CANCELLATION_RESULT                    = 0x420012
    CERTIFICATE                            = 0x420013
    CERTIFICATE_IDENTIFIER                 = 0x420014  # DEPRECATED
    CERTIFICATE_ISSUER                     = 0x420015  # DEPRECATED
    CERTIFICATE_ISSUER_ALTERNATIVE_NAME    = 0x420016  # DEPRECATED
    CERTIFICATE_ISSUER_DISTINGUISHED_NAME  = 0x420017  # DEPRECATED
    CERTIFICATE_REQUEST                    = 0x420018
    CERTIFICATE_REQUEST_TYPE               = 0x420019
    CERTIFICATE_SUBJECT                    = 0x42001A  # DEPRECATED
    CERTIFICATE_SUBJECT_ALTERNATIVE_NAME   = 0x42001B  # DEPRECATED
    CERTIFICATE_SUBJECT_DISTINGUISHED_NAME = 0x42001C  # DEPRECATED
    CERTIFICATE_TYPE                       = 0x42001D
    CERTIFICATE_VALUE                      = 0x42001E
    COMMON_TEMPLATE_ATTRIBUTE              = 0x42001F
    COMPROMISE_DATE                        = 0x420020
    COMPROMISE_OCCURRENCE_DATE             = 0x420021
    CONTACT_INFORMATION                    = 0x420022
    CREDENTIAL                             = 0x420023
    CREDENTIAL_TYPE                        = 0x420024
    CREDENTIAL_VALUE                       = 0x420025
    CRITICALITY_INDICATOR                  = 0x420026
    CRT_COEFFICIENT                        = 0x420027
    CRYPTOGRAPHIC_ALGORITHM                = 0x420028
    CRYPTOGRAPHIC_DOMAIN_PARAMETERS        = 0x420029
    CRYPTOGRAPHIC_LENGTH                   = 0x42002A
    CRYPTOGRAPHIC_PARAMETERS               = 0x42002B
    CRYPTOGRAPHIC_USAGE_MASK               = 0x42002C
    CUSTOM_ATTRIBUTE                       = 0x42002D
    D                                      = 0x42002E
    DEACTIVATION_DATE                      = 0x42002F
    DERIVATION_DATA                        = 0x420030
    DERIVATION_METHOD                      = 0x420031
    DERIVATION_PARAMETERS                  = 0x420032
    DESTROY_DATE                           = 0x420033
    DIGEST                                 = 0x420034
    DIGEST_VALUE                           = 0x420035
    ENCRYPTION_KEY_INFORMATION             = 0x420036
    G                                      = 0x420037
    HASHING_ALGORITHM                      = 0x420038
    INITIAL_DATE                           = 0x420039
    INITIALIZATION_VECTOR                  = 0x42003A
    ISSUER                                 = 0x42003B  # DEPRECATED
    ITERATION_COUNT                        = 0x42003C
    IV_COUNTER_NONCE                       = 0x42003D
    J                                      = 0x42003E
    KEY                                    = 0x42003F
    KEY_BLOCK                              = 0x420040
    KEY_COMPRESSION_TYPE                   = 0x420041
    KEY_FORMAT_TYPE                        = 0x420042
    KEY_MATERIAL                           = 0x420043
    KEY_PART_IDENTIFIER                    = 0x420044
    KEY_VALUE                              = 0x420045
    KEY_WRAPPING_DATA                      = 0x420046
    KEY_WRAPPING_SPECIFICATION             = 0x420047
    LAST_CHANGE_DATE                       = 0x420048
    LEASE_TIME                             = 0x420049
    LINK                                   = 0x42004A
    LINK_TYPE                              = 0x42004B
    LINKED_OBJECT_IDENTIFIER               = 0x42004C
    MAC_SIGNATURE                          = 0x42004D
    MAC_SIGNATURE_KEY_INFORMATION          = 0x42004E
    MAXIMUM_ITEMS                          = 0x42004F
    MAXIMUM_RESPONSE_SIZE                  = 0x420050
    MESSAGE_EXTENSION                      = 0x420051
    MODULUS                                = 0x420052
    NAME                                   = 0x420053
    NAME_TYPE                              = 0x420054
    NAME_VALUE                             = 0x420055
    OBJECT_GROUP                           = 0x420056
    OBJECT_TYPE                            = 0x420057
    OFFSET                                 = 0x420058
    OPAQUE_DATA_TYPE                       = 0x420059
    OPAQUE_DATA_VALUE                      = 0x42005A
    OPAQUE_OBJECT                          = 0x42005B
    OPERATION                              = 0x42005C
    OPERATION_POLICY_NAME                  = 0x42005D
    P                                      = 0x42005E
    PADDING_METHOD                         = 0x42005F
    PRIME_EXPONENT_P                       = 0x420060
    PRIME_EXPONENT_Q                       = 0x420061
    PRIME_FIELD_SIZE                       = 0x420062
    PRIVATE_EXPONENT                       = 0x420063
    PRIVATE_KEY                            = 0x420064
    PRIVATE_KEY_TEMPLATE_ATTRIBUTE         = 0x420065
    PRIVATE_KEY_UNIQUE_IDENTIFIER          = 0x420066
    PROCESS_START_DATE                     = 0x420067
    PROTECT_STOP_DATE                      = 0x420068
    PROTOCOL_VERSION                       = 0x420069
    PROTOCOL_VERSION_MAJOR                 = 0x42006A
    PROTOCOL_VERSION_MINOR                 = 0x42006B
    PUBLIC_EXPONENT                        = 0x42006C
    PUBLIC_KEY                             = 0x42006D
    PUBLIC_KEY_TEMPLATE_ATTRIBUTE          = 0x42006E
    PUBLIC_KEY_UNIQUE_IDENTIFIER           = 0x42006F
    PUT_FUNCTION                           = 0x420070
    Q                                      = 0x420071
    Q_STRING                               = 0x420072
    QLENGTH                                = 0x420073
    QUERY_FUNCTION                         = 0x420074
    RECOMMENDED_CURVE                      = 0x420075
    REPLACED_UNIQUE_IDENTIFIER             = 0x420076
    REQUEST_BATCH_ITEM                     = 0x42000F
    REQUEST_HEADER                         = 0x420077
    REQUEST_MESSAGE                        = 0x420078
    REQUEST_PAYLOAD                        = 0x420079
    RESPONSE_BATCH_ITEM                    = 0x42000F
    RESPONSE_HEADER                        = 0x42007A
    RESPONSE_MESSAGE                       = 0x42007B
    RESPONSE_PAYLOAD                       = 0x42007C
    RESULT_MESSAGE                         = 0x42007D
    RESULT_REASON                          = 0x42007E
    RESULT_STATUS                          = 0x42007F
    REVOCATION_MESSAGE                     = 0x420080
    REVOCATION_REASON                      = 0x420081
    REVOCATION_REASON_CODE                 = 0x420082
    KEY_ROLE_TYPE                          = 0x420083
    SALT                                   = 0x420084
    SECRET_DATA                            = 0x420085
    SECRET_DATA_TYPE                       = 0x420086
    SERIAL_NUMBER                          = 0x420087  # DEPRECATED
    SERVER_INFORMATION                     = 0x420088
    SPLIT_KEY                              = 0x420089
    SPLIT_KEY_METHOD                       = 0x42008A
    SPLIT_KEY_PARTS                        = 0x42008B
    SPLIT_KEY_THRESHOLD                    = 0x42008C
    STATE                                  = 0x42008D
    STORAGE_STATUS_MASK                    = 0x42008E
    SYMMETRIC_KEY                          = 0x42008F
    TEMPLATE                               = 0x420090
    TEMPLATE_ATTRIBUTE                     = 0x420091
    TIME_STAMP                             = 0x420092
    UNIQUE_BATCH_ITEM_ID                   = 0x420093
    UNIQUE_IDENTIFIER                      = 0x420094
    USAGE_LIMITS                           = 0x420095
    USAGE_LIMITS_COUNT                     = 0x420096
    USAGE_LIMITS_TOTAL                     = 0x420097
    USAGE_LIMITS_UNIT                      = 0x420098
    USERNAME                               = 0x420099
    VALIDITY_DATE                          = 0x42009A
    VALIDITY_INDICATOR                     = 0x42009B
    VENDOR_EXTENSION                       = 0x42009C
    VENDOR_IDENTIFICATION                  = 0x42009D
    WRAPPING_METHOD                        = 0x42009E
    X                                      = 0x42009F
    Y                                      = 0x4200A0
    PASSWORD                               = 0x4200A1
    DEVICE_IDENTIFIER                      = 0x4200A2
    ENCODING_OPTION                        = 0x4200A3
    EXTENSION_INFORMATION                  = 0x4200A4
    EXTENSION_NAME                         = 0x4200A5
    EXTENSION_TAG                          = 0x4200A6
    EXTENSION_TYPE                         = 0x4200A7
    FRESH                                  = 0x4200A8
    MACHINE_IDENTIFIER                     = 0x4200A9
    MEDIA_IDENTIFIER                       = 0x4200AA
    NETWORK_IDENTIFIER                     = 0x4200AB
    OBJECT_GROUP_MEMBER                    = 0x4200AC
    CERTIFICATE_LENGTH                     = 0x4200AD
    DIGITAL_SIGNATURE_ALGORITHM            = 0x4200AE
    CERTIFICATE_SERIAL_NUMBER              = 0x4200AF
    DEVICE_SERIAL_NUMBER                   = 0x4200B0
    ISSUER_ALTERNATIVE_NAME                = 0x4200B1
    ISSUER_DISTINGUISHED_NAME              = 0x4200B2
    SUBJECT_ALTERNATIVE_NAME               = 0x4200B3
    SUBJECT_DISTINGUISHED_NAME             = 0x4200B4
    X_509_CERTIFICATE_IDENTIFER            = 0x4200B5
    X_509_CERTIFICATE_ISSUER               = 0x4200B6
    X_509_CERTIFICATE_SUBJECT              = 0x4200B7


# 9.1.3.2.1
class CredentialType(enum.Enum):
    USERNAME_AND_PASSWORD = 0x00000001
    DEVICE                = 0x00000002


# 9.1.3.2.2
class KeyCompressionType(enum.Enum):
    EC_PUBLIC_KEY_TYPE_UNCOMPRESSED           = 0x00000001
    EC_PUBLIC_KEY_TYPE_X9_62_COMPRESSED_PRIME = 0x00000002
    EC_PUBLIC_KEY_TYPE_X9_62_COMPRESSED_CHAR2 = 0x00000003
    EC_PUBLIC_KEY_TYPE_X9_62_HYBRID           = 0x00000004


# 9.1.3.2.3
class KeyFormatType(enum.Enum):
    RAW                           = 0x00000001
    OPAQUE                        = 0x00000002
    PKCS_1                        = 0x00000003
    PKCS_8                        = 0x00000004
    X_509                         = 0x00000005
    EC_PRIVATE_KEY                = 0x00000006
    TRANSPARENT_SYMMETRIC_KEY     = 0x00000007
    TRANSPARENT_DSA_PRIVATE_KEY   = 0x00000008
    TRANSPARENT_DSA_PUBLIC_KEY    = 0x00000009
    TRANSPARENT_RSA_PRIVATE_KEY   = 0x0000000A
    TRANSPARENT_RSA_PUBLIC_KEY    = 0x0000000B
    TRANSPARENT_DH_PRIVATE_KEY    = 0x0000000C
    TRANSPARENT_DH_PUBLIC_KEY     = 0x0000000D
    TRANSPARENT_ECDSA_PRIVATE_KEY = 0x0000000E
    TRANSPARENT_ECDSA_PUBLIC_KEY  = 0x0000000F
    TRANSPARENT_ECDH_PRIVATE_KEY  = 0x00000010
    TRANSPARENT_ECDH_PUBLIC_KEY   = 0x00000011
    TRANSPARENT_ECMQV_PRIVATE_KEY = 0x00000012
    TRANSPARENT_ECMQV_PUBLIC_KEY  = 0x00000013


# 9.1.3.2.4
class WrappingMethod(enum.Enum):
    ENCRYPT               = 0x00000001
    MAC_SIGN              = 0x00000002
    ENCRYPT_THEN_MAC_SIGN = 0x00000003
    MAC_SIGN_THEN_ENCRYPT = 0x00000004
    TR_31                 = 0x00000005


# 9.1.3.2.6
class CertificateTypeEnum(enum.Enum):
    """
    The type of a Certificate Managed Object.

    For more information, see Section 2.2.1 of the KMIP 1.1 specification.
    """
    X_509 = 0x00000001
    PGP   = 0x00000002


# 9.1.3.2.8
class SplitKeyMethod(enum.Enum):
    XOR                            = 0x00000001
    POLYNOMIAL_SHARING_GF          = 0x00000002
    POLYNOMIAL_SHARING_PRIME_FIELD = 0x00000003


# 9.1.3.2.9
class SecretDataType(enum.Enum):
    PASSWORD = 0x00000001
    SEED     = 0x00000002

# 9.1.3.2.10
class OpaqueDataType(enum.Enum):
    NONE = 0x80000000 # Not defined by the standard, but we need something.
                      # The standard does say that values starting 0x8xxxxxx
                      # are considered extensions


# 9.1.3.2.11
class NameType(enum.Enum):
    UNINTERPRETED_TEXT_STRING = 0x00000001
    URI                       = 0x00000002


# 9.1.3.2.12
class ObjectType(enum.Enum):
    CERTIFICATE   = 0x00000001
    SYMMETRIC_KEY = 0x00000002
    PUBLIC_KEY    = 0x00000003
    PRIVATE_KEY   = 0x00000004
    SPLIT_KEY     = 0x00000005
    TEMPLATE      = 0x00000006
    SECRET_DATA   = 0x00000007
    OPAQUE_DATA   = 0x00000008


# 9.1.3.2.13
class CryptographicAlgorithm(enum.Enum):
    DES         = 0x00000001
    TRIPLE_DES  = 0x00000002  # '3DES' is invalid syntax
    AES         = 0x00000003
    RSA         = 0x00000004
    DSA         = 0x00000005
    ECDSA       = 0x00000006
    HMAC_SHA1   = 0x00000007
    HMAC_SHA224 = 0x00000008
    HMAC_SHA256 = 0x00000009
    HMAC_SHA384 = 0x0000000A
    HMAC_SHA512 = 0x0000000B
    HMAC_MD5    = 0x0000000C
    DH          = 0x0000000D
    ECDH        = 0x0000000E
    ECMQV       = 0x0000000F
    BLOWFISH    = 0x00000010
    CAMELLIA    = 0x00000011
    CAST5       = 0x00000012
    IDEA        = 0x00000013
    MARS        = 0x00000014
    RC2         = 0x00000015
    RC4         = 0x00000016
    RC5         = 0x00000017
    SKIPJACK    = 0x00000018
    TWOFISH     = 0x00000019


# 9.1.3.2.14
class BlockCipherMode(enum.Enum):
    CBC                  = 0x00000001
    ECB                  = 0x00000002
    PCBC                 = 0x00000003
    CFB                  = 0x00000004
    OFB                  = 0x00000005
    CTR                  = 0x00000006
    CMAC                 = 0x00000007
    CCM                  = 0x00000008
    GCM                  = 0x00000009
    CBC_MAC              = 0x0000000A
    XTS                  = 0x0000000B
    AES_KEY_WRAP_PADDING = 0x0000000C
    NIST_KEY_WRAP        = 0x0000000D
    X9_102_AESKW         = 0x0000000E
    X9_102_TDKW          = 0x0000000F
    X9_102_AKW1          = 0x00000010
    X9_102_AKW2          = 0x00000011


# 9.1.3.2.15
class PaddingMethod(enum.Enum):
    NONE        = 0x00000001
    OAEP        = 0x00000002
    PKCS5       = 0x00000003
    SSL3        = 0x00000004
    ZEROS       = 0x00000005
    ANSI_X9_23  = 0x00000006
    ISO_10126   = 0x00000007
    PKCS1_V_1_5 = 0x00000008
    X9_31       = 0x00000009
    PSS         = 0x0000000A


# 9.1.3.2.16
class HashingAlgorithm(enum.Enum):
    MD2        = 0x00000001
    MD4        = 0x00000002
    MD5        = 0x00000003
    SHA_1      = 0x00000004
    SHA_224    = 0x00000005
    SHA_256    = 0x00000006
    SHA_384    = 0x00000007
    SHA_512    = 0x00000008
    RIPEMD_160 = 0x00000009
    TIGER      = 0x0000000A
    WHIRLPOOL  = 0x0000000B


# 9.1.3.2.17
class KeyRoleType(enum.Enum):
    BDK       = 0x00000001
    CVK       = 0x00000002
    DEK       = 0x00000003
    MKAC      = 0x00000004
    MKSMC     = 0x00000005
    MKSMI     = 0x00000006
    MKDAC     = 0x00000007
    MKDN      = 0x00000008
    MKCP      = 0x00000009
    MKOTH     = 0x0000000A
    KEK       = 0x0000000B
    MAC_16609 = 0x0000000C
    MAC_97971 = 0x0000000D
    MAC_97972 = 0x0000000E
    MAC_97973 = 0x0000000F
    MAC_97974 = 0x00000010
    MAC_97975 = 0x00000011
    ZPK       = 0x00000012
    PVKIBM    = 0x00000013
    PVKPVV    = 0x00000014
    PVKOTH    = 0x00000015


# 9.1.3.2.24
class QueryFunction(enum.Enum):
    QUERY_OPERATIONS             = 0x00000001
    QUERY_OBJECTS                = 0x00000002
    QUERY_SERVER_INFORMATION     = 0x00000003
    QUERY_APPLICATION_NAMESPACES = 0x00000004
    QUERY_EXTENSION_LIST         = 0x00000005
    QUERY_EXTENSION_MAP          = 0x00000006

# 9.1.3.2.27
class Operation(enum.Enum):
    CREATE               = 0x00000001
    CREATE_KEY_PAIR      = 0x00000002
    REGISTER             = 0x00000003
    REKEY                = 0x00000004
    DERIVE_KEY           = 0x00000005
    CERTIFY              = 0x00000006
    RECERTIFY            = 0x00000007
    LOCATE               = 0x00000008
    CHECK                = 0x00000009
    GET                  = 0x0000000A
    GET_ATTRIBUTES       = 0x0000000B
    GET_ATTRIBUTE_LIST   = 0x0000000C
    ADD_ATTRIBUTE        = 0x0000000D
    MODIFY_ATTRIBUTE     = 0x0000000E
    DELETE_ATTRIBUTE     = 0x0000000F
    OBTAIN_LEASE         = 0x00000010
    GET_USAGE_ALLOCATION = 0x00000011
    ACTIVATE             = 0x00000012
    REVOKE               = 0x00000013
    DESTROY              = 0x00000014
    ARCHIVE              = 0x00000015
    RECOVER              = 0x00000016
    VALIDATE             = 0x00000017
    QUERY                = 0x00000018
    CANCEL               = 0x00000019
    POLL                 = 0x0000001A
    NOTIFY               = 0x0000001B
    PUT                  = 0x0000001C
    REKEY_KEY_PAIR       = 0x0000001D
    DISCOVER_VERSIONS    = 0x0000001E


# 9.1.3.2.28
class ResultStatus(enum.Enum):
    SUCCESS           = 0x00000000
    OPERATION_FAILED  = 0x00000001
    OPERATION_PENDING = 0x00000002
    OPERATION_UNDONE  = 0x00000003


# 9.1.3.2.29
class ResultReason(enum.Enum):
    ITEM_NOT_FOUND                      = 0x00000001
    RESPONSE_TOO_LARGE                  = 0x00000002
    AUTHENTICATION_NOT_SUCCESSFUL       = 0x00000003
    INVALID_MESSAGE                     = 0x00000004
    OPERATION_NOT_SUPPORTED             = 0x00000005
    MISSING_DATA                        = 0x00000006
    INVALID_FIELD                       = 0x00000007
    FEATURE_NOT_SUPPORTED               = 0x00000008
    OPERATION_CANCELED_BY_REQUESTER     = 0x00000009
    CRYPTOGRAPHIC_FAILURE               = 0x0000000A
    ILLEGAL_OPERATION                   = 0x0000000B
    PERMISSION_DENIED                   = 0x0000000C
    OBJECT_ARCHIVED                     = 0x0000000D
    INDEX_OUT_OF_BOUNDS                 = 0x0000000E
    APPLICATION_NAMESPACE_NOT_SUPPORTED = 0x0000000F
    KEY_FORMAT_TYPE_NOT_SUPPORTED       = 0x00000010
    KEY_COMPRESSION_TYPE_NOT_SUPPORTED  = 0x00000011
    ENCODING_OPTION_ERROR               = 0x00000012
    GENERAL_FAILURE                     = 0x00000100


# 9.1.3.2.30
class BatchErrorContinuationOption(enum.Enum):
    CONTINUE = 0x00000001
    STOP     = 0x00000002
    UNDO     = 0x00000003


# 9.1.3.2.32
class EncodingOption(enum.Enum):
    NO_ENCODING   = 0x00000001
    TTLV_ENCODING = 0x00000002


# 9.1.3.3
# 9.1.3.3.1
class CryptographicUsageMask(enum.Enum):
    SIGN                = 0x00000001
    VERIFY              = 0x00000002
    ENCRYPT             = 0x00000004
    DECRYPT             = 0x00000008
    WRAP_KEY            = 0x00000010
    UNWRAP_KEY          = 0x00000020
    EXPORT              = 0x00000040
    MAC_GENERATE        = 0x00000080
    MAC_VERIFY          = 0x00000100
    DERIVE_KEY          = 0x00000200
    CONTENT_COMMITMENT  = 0x00000400
    KEY_AGREEMENT       = 0x00000800
    CERTIFICATE_SIGN    = 0x00001000
    CRL_SIGN            = 0x00002000
    GENERATE_CRYPTOGRAM = 0x00004000
    VALIDATE_CRYPTOGRAM = 0x00008000
    TRANSLATE_ENCRYPT   = 0x00010000
    TRANSLATE_DECRYPT   = 0x00020000
    TRANSLATE_WRAP      = 0x00040000
    TRANSLATE_UNWRAP    = 0x00080000

# 9.1.3.2.33
class ObjectGroupMember(enum.Enum):
    GROUP_MEMBER_FRESH    = 0x00000001
    GROUP_MEMBER_DEFAULT  = 0x00000002

# 9.1.3.3.2
class StorageStatusMask(enum.Enum):
    ONLINE_STORAGE      = 0x00000001
    ARCHIVAL_STORAGE    = 0x00000002

class RevocationReasonCode(enum.Enum):
    UNSPECIFIED            = 0x00000001
    KEY_COMPROMISE         = 0x00000002
    CA_COMPROMISE          = 0x00000003
    AFFILIATION_CHANGED    = 0x00000004
    SUPERSEDED             = 0x00000005
    CESSATION_OF_OPERATION = 0x00000006
    PRIVILEGE_WITHDRAWN    = 0x00000007