CryptoDataHub 0.12.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. CryptoDataHub-0.12.6.dist-info/LICENSE.txt +373 -0
  2. CryptoDataHub-0.12.6.dist-info/METADATA +119 -0
  3. CryptoDataHub-0.12.6.dist-info/RECORD +70 -0
  4. CryptoDataHub-0.12.6.dist-info/WHEEL +5 -0
  5. CryptoDataHub-0.12.6.dist-info/top_level.txt +1 -0
  6. cryptodatahub/__init__.py +0 -0
  7. cryptodatahub/__setup__.py +10 -0
  8. cryptodatahub/common/__init__.py +0 -0
  9. cryptodatahub/common/algorithm.py +164 -0
  10. cryptodatahub/common/attack-named.json +74 -0
  11. cryptodatahub/common/attack-type.json +58 -0
  12. cryptodatahub/common/authentication.json +113 -0
  13. cryptodatahub/common/block-cipher-mode.json +75 -0
  14. cryptodatahub/common/block-cipher.json +474 -0
  15. cryptodatahub/common/certificate-transparency-log.json +2394 -0
  16. cryptodatahub/common/client.json +20 -0
  17. cryptodatahub/common/dhparam-well-known.json +1975 -0
  18. cryptodatahub/common/ecparam-well-known.json +1868 -0
  19. cryptodatahub/common/entity.json +269 -0
  20. cryptodatahub/common/entity.py +110 -0
  21. cryptodatahub/common/exception.py +28 -0
  22. cryptodatahub/common/grade.py +200 -0
  23. cryptodatahub/common/hash.json +273 -0
  24. cryptodatahub/common/key-exchange.json +140 -0
  25. cryptodatahub/common/key.py +571 -0
  26. cryptodatahub/common/mac.json +404 -0
  27. cryptodatahub/common/named-group.json +902 -0
  28. cryptodatahub/common/parameter.py +149 -0
  29. cryptodatahub/common/root-certificate.json +19240 -0
  30. cryptodatahub/common/server.json +56 -0
  31. cryptodatahub/common/signature.json +233 -0
  32. cryptodatahub/common/standard.json +57 -0
  33. cryptodatahub/common/stores.py +323 -0
  34. cryptodatahub/common/types.py +524 -0
  35. cryptodatahub/common/utils.py +112 -0
  36. cryptodatahub/common/vulnerability.json +2 -0
  37. cryptodatahub/dnsrec/__init__.py +0 -0
  38. cryptodatahub/dnsrec/algorithm.json +114 -0
  39. cryptodatahub/dnsrec/algorithm.py +87 -0
  40. cryptodatahub/dnsrec/digest-type.json +26 -0
  41. cryptodatahub/dnsrec/rr-type.json +805 -0
  42. cryptodatahub/ssh/__init__.py +0 -0
  43. cryptodatahub/ssh/algorithm.py +194 -0
  44. cryptodatahub/ssh/compression-algorithm.json +24 -0
  45. cryptodatahub/ssh/elliptic-curve-identifier.json +50 -0
  46. cryptodatahub/ssh/encryption-algorithm.json +587 -0
  47. cryptodatahub/ssh/host-key-algorithm.json +482 -0
  48. cryptodatahub/ssh/kex-algorithm.json +709 -0
  49. cryptodatahub/ssh/mac-algorithm.json +566 -0
  50. cryptodatahub/tls/__init__.py +0 -0
  51. cryptodatahub/tls/algorithm.py +324 -0
  52. cryptodatahub/tls/certificate-compression-algorithm.json +14 -0
  53. cryptodatahub/tls/cipher-kind.json +171 -0
  54. cryptodatahub/tls/cipher-suite-extension.json +10 -0
  55. cryptodatahub/tls/cipher-suite.json +5098 -0
  56. cryptodatahub/tls/client.json +4757 -0
  57. cryptodatahub/tls/client.py +220 -0
  58. cryptodatahub/tls/compression-method.json +20 -0
  59. cryptodatahub/tls/ec-point-format.json +20 -0
  60. cryptodatahub/tls/extension-type.json +282 -0
  61. cryptodatahub/tls/grease-one-byte.json +34 -0
  62. cryptodatahub/tls/grease-two-byte.json +66 -0
  63. cryptodatahub/tls/hash-and-signature-algorithm.json +266 -0
  64. cryptodatahub/tls/named-curve.json +292 -0
  65. cryptodatahub/tls/next-protocol-name.json +20 -0
  66. cryptodatahub/tls/protocol-name.json +71 -0
  67. cryptodatahub/tls/psk-key-exchange-mode.json +10 -0
  68. cryptodatahub/tls/token-binding-paramater.json +14 -0
  69. cryptodatahub/tls/version.json +154 -0
  70. cryptodatahub/tls/version.py +17 -0
@@ -0,0 +1,324 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ import abc
4
+ import collections
5
+ import six
6
+
7
+ import attr
8
+
9
+ from cryptodatahub.common.algorithm import (
10
+ Authentication,
11
+ BlockCipher,
12
+ BlockCipherMode,
13
+ Hash,
14
+ KeyExchange,
15
+ MAC,
16
+ NamedGroup,
17
+ )
18
+ from cryptodatahub.common.grade import GradeableComplex
19
+ from cryptodatahub.common.types import (
20
+ CryptoDataEnumCodedBase,
21
+ CryptoDataParamsEnumNumeric,
22
+ CryptoDataParamsEnumString,
23
+ CryptoDataParamsNamed,
24
+ convert_enum,
25
+ )
26
+
27
+ from cryptodatahub.tls.version import TlsVersion
28
+
29
+
30
+ @attr.s(frozen=True)
31
+ class CompressionMethodParams(CryptoDataParamsNamed, CryptoDataParamsEnumNumeric):
32
+ @classmethod
33
+ def get_code_size(cls):
34
+ return 1
35
+
36
+
37
+ TlsCompressionMethod = CryptoDataEnumCodedBase(
38
+ 'TlsCompressionMethod', CryptoDataEnumCodedBase.get_json_records(CompressionMethodParams)
39
+ )
40
+
41
+
42
+ @attr.s(frozen=True)
43
+ class NamedCurveParams(CryptoDataParamsEnumNumeric, GradeableComplex):
44
+ named_group = attr.ib(
45
+ converter=convert_enum(NamedGroup),
46
+ validator=attr.validators.optional(attr.validators.instance_of(NamedGroup)),
47
+ )
48
+
49
+ def __attrs_post_init__(self):
50
+ if self.named_group is not None:
51
+ object.__setattr__(self, 'gradeables', [self.named_group.value])
52
+
53
+ attr.validate(self)
54
+
55
+ def __str__(self):
56
+ return str(self.named_group.value)
57
+
58
+ @classmethod
59
+ def get_code_size(cls):
60
+ return 2
61
+
62
+
63
+ TlsNamedCurve = CryptoDataEnumCodedBase('TlsNamedCurve', CryptoDataEnumCodedBase.get_json_records(NamedCurveParams))
64
+
65
+
66
+ @attr.s(frozen=True)
67
+ class HashAndSignatureAlgorithmParams(CryptoDataParamsEnumNumeric, GradeableComplex):
68
+ hash_algorithm = attr.ib(
69
+ converter=convert_enum(Hash),
70
+ validator=attr.validators.optional(attr.validators.instance_of(Hash)),
71
+ )
72
+ signature_algorithm = attr.ib(
73
+ converter=convert_enum(Authentication),
74
+ validator=attr.validators.optional(attr.validators.instance_of(Authentication)),
75
+ )
76
+
77
+ def __attrs_post_init__(self):
78
+ vulnerabilities = []
79
+ if self.hash_algorithm is not None:
80
+ vulnerabilities.append(self.hash_algorithm.value)
81
+
82
+ object.__setattr__(self, 'gradeables', vulnerabilities)
83
+
84
+ attr.validate(self)
85
+
86
+ def __str__(self):
87
+ if self.hash_algorithm:
88
+ hash_algorithm = self.hash_algorithm.value
89
+ else:
90
+ hash_algorithm = 'none'
91
+
92
+ if self.signature_algorithm == Authentication.ANONYMOUS:
93
+ signature_algorithm = 'no'
94
+ else:
95
+ signature_algorithm = self.signature_algorithm.value
96
+
97
+ return '{} with {} encryption'.format(hash_algorithm, signature_algorithm)
98
+
99
+ @classmethod
100
+ def get_code_size(cls):
101
+ return 2
102
+
103
+
104
+ TlsSignatureAndHashAlgorithm = CryptoDataEnumCodedBase(
105
+ 'TlsSignatureAndHashAlgorithm', CryptoDataEnumCodedBase.get_json_records(HashAndSignatureAlgorithmParams)
106
+ )
107
+
108
+
109
+ @attr.s(frozen=True)
110
+ class EcPointFormatParams(CryptoDataParamsNamed, CryptoDataParamsEnumNumeric):
111
+ @classmethod
112
+ def get_code_size(cls):
113
+ return 1
114
+
115
+
116
+ TlsECPointFormat = CryptoDataEnumCodedBase(
117
+ 'TlsECPointFormat', CryptoDataEnumCodedBase.get_json_records(EcPointFormatParams)
118
+ )
119
+
120
+
121
+ @attr.s(frozen=True)
122
+ class ProtocolNameParams(CryptoDataParamsEnumString):
123
+ pass
124
+
125
+
126
+ TlsProtocolName = CryptoDataEnumCodedBase(
127
+ 'TlsProtocolName', CryptoDataEnumCodedBase.get_json_records(ProtocolNameParams)
128
+ )
129
+
130
+
131
+ @attr.s(frozen=True)
132
+ class NextProtocolNameParams(CryptoDataParamsEnumString):
133
+ pass
134
+
135
+
136
+ TlsNextProtocolName = CryptoDataEnumCodedBase(
137
+ 'TlsNextProtocolName', CryptoDataEnumCodedBase.get_json_records(NextProtocolNameParams)
138
+ )
139
+
140
+
141
+ @attr.s(frozen=True)
142
+ class ExtensionTypeParams(CryptoDataParamsEnumNumeric):
143
+ @classmethod
144
+ def get_code_size(cls):
145
+ return 2
146
+
147
+
148
+ TlsExtensionType = CryptoDataEnumCodedBase(
149
+ 'ExtensionType', CryptoDataEnumCodedBase.get_json_records(ExtensionTypeParams)
150
+ )
151
+
152
+
153
+ @attr.s(frozen=True)
154
+ class TokenBindingParamaterParams(CryptoDataParamsEnumNumeric):
155
+ @classmethod
156
+ def get_code_size(cls):
157
+ return 1
158
+
159
+
160
+ TlsTokenBindingParamater = CryptoDataEnumCodedBase(
161
+ 'TlsTokenBindingParamater', CryptoDataEnumCodedBase.get_json_records(TokenBindingParamaterParams)
162
+ )
163
+
164
+
165
+ @attr.s(frozen=True)
166
+ class PskKeyExchangeModeParams(CryptoDataParamsEnumNumeric):
167
+ @classmethod
168
+ def get_code_size(cls):
169
+ return 1
170
+
171
+
172
+ TlsPskKeyExchangeMode = CryptoDataEnumCodedBase(
173
+ 'TlsPskKeyExchangeMode', CryptoDataEnumCodedBase.get_json_records(PskKeyExchangeModeParams)
174
+ )
175
+
176
+
177
+ @attr.s(frozen=True)
178
+ class CertificateCompressionAlgorithmParams(CryptoDataParamsEnumNumeric):
179
+ @classmethod
180
+ def get_code_size(cls):
181
+ return 2
182
+
183
+
184
+ TlsCertificateCompressionAlgorithm = CryptoDataEnumCodedBase(
185
+ 'TlsCertificateCompressionAlgorithm',
186
+ CryptoDataEnumCodedBase.get_json_records(CertificateCompressionAlgorithmParams)
187
+ )
188
+
189
+
190
+ @attr.s(frozen=True)
191
+ class CipherParamsBase(CryptoDataParamsEnumNumeric, GradeableComplex): # pylint: disable=too-many-instance-attributes
192
+ iana_name = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(six.string_types)))
193
+ iana_name = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(six.string_types)))
194
+ openssl_name = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(six.string_types)))
195
+ key_exchange = attr.ib(
196
+ converter=convert_enum(KeyExchange),
197
+ validator=attr.validators.optional(attr.validators.instance_of(KeyExchange)),
198
+ )
199
+ authentication = attr.ib(
200
+ converter=convert_enum(Authentication),
201
+ validator=attr.validators.optional(attr.validators.instance_of(Authentication)),
202
+ )
203
+ bulk_cipher = attr.ib(
204
+ converter=convert_enum(BlockCipher),
205
+ validator=attr.validators.optional(attr.validators.instance_of(BlockCipher)),
206
+ )
207
+ block_cipher_mode = attr.ib(
208
+ converter=convert_enum(BlockCipherMode),
209
+ validator=attr.validators.optional(attr.validators.instance_of(BlockCipherMode)),
210
+ )
211
+ mac = attr.ib(
212
+ converter=convert_enum(MAC),
213
+ validator=attr.validators.optional(attr.validators.instance_of(MAC)),
214
+ )
215
+ authenticated_encryption = attr.ib(validator=attr.validators.instance_of(bool))
216
+ initial_version = attr.ib(
217
+ converter=convert_enum(TlsVersion),
218
+ validator=attr.validators.instance_of(TlsVersion),
219
+ )
220
+ last_version = attr.ib(init=False, validator=attr.validators.instance_of(TlsVersion))
221
+ export_grade = attr.ib(init=False, validator=attr.validators.instance_of(bool))
222
+
223
+ @classmethod
224
+ @abc.abstractmethod
225
+ def get_code_size(cls):
226
+ raise NotImplementedError()
227
+
228
+ def __attrs_post_init__(self):
229
+ if self.initial_version == TlsVersion.SSL2:
230
+ object.__setattr__(self, 'last_version', TlsVersion.SSL2)
231
+ else:
232
+ if self.code & 0xff00 in [0x1300, 0x7e00, 0x7f00]:
233
+ object.__setattr__(self, 'last_version', TlsVersion.TLS1_3)
234
+ else:
235
+ object.__setattr__(self, 'last_version', TlsVersion.TLS1_2)
236
+
237
+ object.__setattr__(self, 'export_grade', self.iana_name is not None and '_EXPORT' in self.iana_name)
238
+
239
+ vulnerability_parts = collections.OrderedDict([
240
+ (KeyExchange, self.key_exchange),
241
+ (Authentication, self.authentication),
242
+ (BlockCipher, self.bulk_cipher),
243
+ (BlockCipherMode, self.block_cipher_mode),
244
+ (MAC, self.mac),
245
+ ])
246
+
247
+ gradeables = []
248
+ for algorithm in vulnerability_parts.values():
249
+ if algorithm is None:
250
+ continue
251
+
252
+ gradeables.append(algorithm.value)
253
+
254
+ object.__setattr__(self, 'gradeables', gradeables)
255
+
256
+ attr.validate(self)
257
+
258
+ def __str__(self):
259
+ if self.iana_name is None:
260
+ result = six.next(
261
+ cipher_suite
262
+ for cipher_suite in TlsCipherSuite
263
+ if cipher_suite.value.code == self.code
264
+ ).name
265
+ else:
266
+ result = self.iana_name
267
+
268
+ if self.openssl_name:
269
+ result += ' (' + self.openssl_name + ')'
270
+
271
+ return result
272
+
273
+
274
+ @attr.s(frozen=True)
275
+ class CipherSuiteParams(CipherParamsBase):
276
+ @classmethod
277
+ def get_code_size(cls):
278
+ return 2
279
+
280
+
281
+ TlsCipherSuite = CryptoDataEnumCodedBase('TlsCipherSuite', CryptoDataEnumCodedBase.get_json_records(CipherSuiteParams))
282
+
283
+
284
+ @attr.s(frozen=True)
285
+ class CipherKindParams(CipherParamsBase):
286
+ @classmethod
287
+ def get_code_size(cls):
288
+ return 3
289
+
290
+
291
+ SslCipherKind = CryptoDataEnumCodedBase('SslCipherKind', CryptoDataEnumCodedBase.get_json_records(CipherKindParams))
292
+
293
+
294
+ class CipherSuiteExtensionParams(CryptoDataParamsEnumNumeric):
295
+ @classmethod
296
+ def get_code_size(cls):
297
+ return 2
298
+
299
+
300
+ TlsCipherSuiteExtension = CryptoDataEnumCodedBase(
301
+ 'TlsCipherSuiteExtension', CryptoDataEnumCodedBase.get_json_records(CipherSuiteExtensionParams)
302
+ )
303
+
304
+
305
+ class GreaseOneByteParams(CryptoDataParamsEnumNumeric):
306
+ @classmethod
307
+ def get_code_size(cls):
308
+ return 1
309
+
310
+
311
+ TlsGreaseOneByte = CryptoDataEnumCodedBase(
312
+ 'TlsGreaseOneByte', CryptoDataEnumCodedBase.get_json_records(GreaseOneByteParams)
313
+ )
314
+
315
+
316
+ class GreaseTwoByteParams(CryptoDataParamsEnumNumeric):
317
+ @classmethod
318
+ def get_code_size(cls):
319
+ return 2
320
+
321
+
322
+ TlsGreaseTwoByte = CryptoDataEnumCodedBase(
323
+ 'TlsGreaseTwoByte', CryptoDataEnumCodedBase.get_json_records(GreaseTwoByteParams)
324
+ )
@@ -0,0 +1,14 @@
1
+ {
2
+ "ZLIB": {
3
+ "code": 1,
4
+ "_code_in_hex": "0x0001"
5
+ },
6
+ "BROTLI": {
7
+ "code": 2,
8
+ "_code_in_hex": "0x0002"
9
+ },
10
+ "ZSTD": {
11
+ "code": 3,
12
+ "_code_in_hex": "0x0003"
13
+ }
14
+ }
@@ -0,0 +1,171 @@
1
+ {
2
+ "SSL_CK_NULL_WITH_MD5": {
3
+ "_code_in_hex": "0x000000",
4
+ "code": 0,
5
+ "iana_name": "SSL_CK_NULL_WITH_MD5",
6
+ "openssl_name": "NULL-MD5",
7
+ "key_exchange": "RSA",
8
+ "authentication": "RSA",
9
+ "bulk_cipher": null,
10
+ "block_cipher_mode": null,
11
+ "mac": "MD5",
12
+ "authenticated_encryption": false,
13
+ "initial_version": "SSL2"
14
+ },
15
+ "SSL_CK_RC4_128_WITH_MD5": {
16
+ "_code_in_hex": "0x010080",
17
+ "code": 65664,
18
+ "iana_name": "SSL_CK_RC4_128_WITH_MD5",
19
+ "openssl_name": "RC4-MD5",
20
+ "key_exchange": "RSA",
21
+ "authentication": "RSA",
22
+ "bulk_cipher": "RC4_128",
23
+ "block_cipher_mode": null,
24
+ "mac": "MD5",
25
+ "authenticated_encryption": false,
26
+ "initial_version": "SSL2"
27
+ },
28
+ "SSL_CK_RC4_128_EXPORT40_WITH_MD5": {
29
+ "_code_in_hex": "0x020080",
30
+ "code": 131200,
31
+ "iana_name": "SSL_CK_RC4_128_EXPORT40_WITH_MD5",
32
+ "openssl_name": "EXP-RC4-MD5",
33
+ "key_exchange": "RSA",
34
+ "authentication": "RSA",
35
+ "bulk_cipher": "RC4_128",
36
+ "block_cipher_mode": "CBC",
37
+ "mac": "MD5",
38
+ "authenticated_encryption": false,
39
+ "initial_version": "SSL2"
40
+ },
41
+ "SSL_CK_RC2_128_CBC_WITH_MD5": {
42
+ "_code_in_hex": "0x030080",
43
+ "code": 196736,
44
+ "iana_name": "SSL_CK_RC2_128_CBC_WITH_MD5",
45
+ "openssl_name": "RC2-CBC-MD5",
46
+ "key_exchange": "RSA",
47
+ "authentication": "RSA",
48
+ "bulk_cipher": "RC2_128",
49
+ "block_cipher_mode": "CBC",
50
+ "mac": "MD5",
51
+ "authenticated_encryption": false,
52
+ "initial_version": "SSL2"
53
+ },
54
+ "SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5": {
55
+ "_code_in_hex": "0x040080",
56
+ "code": 262272,
57
+ "iana_name": "SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5",
58
+ "openssl_name": "EXP-RC2-CBC-MD5",
59
+ "key_exchange": "RSA",
60
+ "authentication": "RSA",
61
+ "bulk_cipher": "RC2_128",
62
+ "block_cipher_mode": "CBC",
63
+ "mac": "MD5",
64
+ "authenticated_encryption": false,
65
+ "initial_version": "SSL2"
66
+ },
67
+ "SSL_CK_IDEA_128_CBC_WITH_MD5": {
68
+ "_code_in_hex": "0x050080",
69
+ "code": 327808,
70
+ "iana_name": "SSL_CK_IDEA_128_CBC_WITH_MD5",
71
+ "openssl_name": "IDEA-CBC-MD5",
72
+ "key_exchange": "RSA",
73
+ "authentication": "RSA",
74
+ "bulk_cipher": "IDEA_128",
75
+ "block_cipher_mode": "CBC",
76
+ "mac": "MD5",
77
+ "authenticated_encryption": false,
78
+ "initial_version": "SSL2"
79
+ },
80
+ "SSL_CK_DES_64_CBC_WITH_MD5": {
81
+ "_code_in_hex": "0x060040",
82
+ "code": 393280,
83
+ "iana_name": "SSL_CK_DES_64_CBC_WITH_MD5",
84
+ "openssl_name": "DES-CBC-MD5",
85
+ "key_exchange": "RSA",
86
+ "authentication": "RSA",
87
+ "bulk_cipher": "DES",
88
+ "block_cipher_mode": "CBC",
89
+ "mac": "MD5",
90
+ "authenticated_encryption": false,
91
+ "initial_version": "SSL2"
92
+ },
93
+ "SSL_CK_DES_64_CBC_WITH_SHA": {
94
+ "_code_in_hex": "0x060140",
95
+ "code": 393536,
96
+ "iana_name": "SSL_CK_DES_64_CBC_WITH_SHA",
97
+ "openssl_name": null,
98
+ "key_exchange": "RSA",
99
+ "authentication": "RSA",
100
+ "bulk_cipher": "DES",
101
+ "block_cipher_mode": "CBC",
102
+ "mac": "SHA1",
103
+ "authenticated_encryption": false,
104
+ "initial_version": "SSL2"
105
+ },
106
+ "SSL_CK_DES_192_EDE3_CBC_WITH_MD5": {
107
+ "_code_in_hex": "0x0700c0",
108
+ "code": 458944,
109
+ "iana_name": "SSL_CK_DES_192_EDE3_CBC_WITH_MD5",
110
+ "openssl_name": null,
111
+ "key_exchange": "RSA",
112
+ "authentication": "RSA",
113
+ "bulk_cipher": "TRIPLE_DES_EDE",
114
+ "block_cipher_mode": "CBC",
115
+ "mac": "MD5",
116
+ "authenticated_encryption": false,
117
+ "initial_version": "SSL2"
118
+ },
119
+ "SSL_CK_DES_192_EDE3_CBC_WITH_SHA": {
120
+ "_code_in_hex": "0x0701c0",
121
+ "code": 459200,
122
+ "iana_name": "SSL_CK_DES_192_EDE3_CBC_WITH_SHA",
123
+ "openssl_name": null,
124
+ "key_exchange": "RSA",
125
+ "authentication": "RSA",
126
+ "bulk_cipher": "TRIPLE_DES",
127
+ "block_cipher_mode": "CBC",
128
+ "mac": "SHA1",
129
+ "authenticated_encryption": false,
130
+ "initial_version": "SSL2"
131
+ },
132
+ "SSL_CK_RC4_64_WITH_MD5": {
133
+ "_code_in_hex": "0x080080",
134
+ "code": 524416,
135
+ "iana_name": "SSL_CK_RC4_64_WITH_MD5",
136
+ "openssl_name": "RC4-64-MD5",
137
+ "key_exchange": "RSA",
138
+ "authentication": "RSA",
139
+ "bulk_cipher": "RC4_64",
140
+ "block_cipher_mode": null,
141
+ "mac": "MD5",
142
+ "authenticated_encryption": false,
143
+ "initial_version": "SSL2"
144
+ },
145
+ "SSL_CK_DES_64_CFB64_WITH_MD5_1": {
146
+ "_code_in_hex": "0xff8000",
147
+ "code": 16744448,
148
+ "iana_name": "SSL_CK_DES_64_CFB64_WITH_MD5_1",
149
+ "openssl_name": null,
150
+ "key_exchange": "RSA",
151
+ "authentication": "RSA",
152
+ "bulk_cipher": "DES",
153
+ "block_cipher_mode": "CFB",
154
+ "mac": "MD5",
155
+ "authenticated_encryption": false,
156
+ "initial_version": "SSL2"
157
+ },
158
+ "SSL_CK_NULL": {
159
+ "_code_in_hex": "0xff8010",
160
+ "code": 16744464,
161
+ "iana_name": "SSL_CK_NULL",
162
+ "openssl_name": null,
163
+ "key_exchange": "NULL",
164
+ "authentication": null,
165
+ "bulk_cipher": null,
166
+ "block_cipher_mode": null,
167
+ "mac": null,
168
+ "authenticated_encryption": false,
169
+ "initial_version": "SSL2"
170
+ }
171
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "FALLBACK_SCSV": {
3
+ "_code_in_hex": "0x5600",
4
+ "code": 22016
5
+ },
6
+ "EMPTY_RENEGOTIATION_INFO_SCSV": {
7
+ "_code_in_hex": "0x00ff",
8
+ "code": 255
9
+ }
10
+ }