py2docfx 0.1.20.dev2243675__py3-none-any.whl → 0.1.20.dev2245016__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 (23) hide show
  1. py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py +1 -1
  2. py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py +0 -13
  3. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py +8 -0
  4. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/asn1/__init__.py +10 -0
  5. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/asn1/asn1.py +116 -0
  6. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py +3 -9
  7. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi +32 -0
  8. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi +23 -0
  9. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi +1 -13
  10. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py +16 -0
  11. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py +16 -1
  12. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py +0 -2
  13. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py +8 -0
  14. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py +0 -47
  15. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py +6 -91
  16. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py +1 -3
  17. py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py +1 -1
  18. py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py +0 -2
  19. py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py +2 -3
  20. {py2docfx-0.1.20.dev2243675.dist-info → py2docfx-0.1.20.dev2245016.dist-info}/METADATA +1 -1
  21. {py2docfx-0.1.20.dev2243675.dist-info → py2docfx-0.1.20.dev2245016.dist-info}/RECORD +23 -20
  22. {py2docfx-0.1.20.dev2243675.dist-info → py2docfx-0.1.20.dev2245016.dist-info}/WHEEL +0 -0
  23. {py2docfx-0.1.20.dev2243675.dist-info → py2docfx-0.1.20.dev2245016.dist-info}/top_level.txt +0 -0
@@ -10,7 +10,7 @@ __all__ = [
10
10
  "__version__",
11
11
  ]
12
12
 
13
- __version__ = "45.0.7"
13
+ __version__ = "46.0.1"
14
14
 
15
15
 
16
16
  __author__ = "The Python Cryptographic Authority and individual contributors"
@@ -4,10 +4,6 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- import sys
8
- import warnings
9
-
10
- from cryptography import utils
11
7
  from cryptography.__about__ import __author__, __copyright__, __version__
12
8
 
13
9
  __all__ = [
@@ -15,12 +11,3 @@ __all__ = [
15
11
  "__copyright__",
16
12
  "__version__",
17
13
  ]
18
-
19
- if sys.version_info[:2] == (3, 7):
20
- warnings.warn(
21
- "Python 3.7 is no longer supported by the Python core team "
22
- "and support for it is deprecated in cryptography. The next release "
23
- "of cryptography will remove support for Python 3.7.",
24
- utils.CryptographyDeprecationWarning,
25
- stacklevel=2,
26
- )
@@ -166,6 +166,10 @@ class HashAlgorithmOID:
166
166
  SHA3_256 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.256")
167
167
  SHA3_384 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.384")
168
168
  SHA3_512 = ObjectIdentifier("1.3.6.1.4.1.37476.3.2.1.99.7.512")
169
+ SHA3_224_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.7")
170
+ SHA3_256_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.8")
171
+ SHA3_384_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.9")
172
+ SHA3_512_NIST = ObjectIdentifier("2.16.840.1.101.3.4.2.10")
169
173
 
170
174
 
171
175
  class PublicKeyAlgorithmOID:
@@ -290,6 +294,10 @@ _OID_NAMES = {
290
294
  HashAlgorithmOID.SHA3_256: "sha3_256",
291
295
  HashAlgorithmOID.SHA3_384: "sha3_384",
292
296
  HashAlgorithmOID.SHA3_512: "sha3_512",
297
+ HashAlgorithmOID.SHA3_224_NIST: "sha3_224",
298
+ HashAlgorithmOID.SHA3_256_NIST: "sha3_256",
299
+ HashAlgorithmOID.SHA3_384_NIST: "sha3_384",
300
+ HashAlgorithmOID.SHA3_512_NIST: "sha3_512",
293
301
  PublicKeyAlgorithmOID.DSA: "dsaEncryption",
294
302
  PublicKeyAlgorithmOID.EC_PUBLIC_KEY: "id-ecPublicKey",
295
303
  PublicKeyAlgorithmOID.RSAES_PKCS1_v1_5: "rsaEncryption",
@@ -0,0 +1,10 @@
1
+ # This file is dual licensed under the terms of the Apache License, Version
2
+ # 2.0, and the BSD License. See the LICENSE file in the root of this repository
3
+ # for complete details.
4
+
5
+ from cryptography.hazmat.asn1.asn1 import encode_der, sequence
6
+
7
+ __all__ = [
8
+ "encode_der",
9
+ "sequence",
10
+ ]
@@ -0,0 +1,116 @@
1
+ # This file is dual licensed under the terms of the Apache License, Version
2
+ # 2.0, and the BSD License. See the LICENSE file in the root of this repository
3
+ # for complete details.
4
+
5
+ from __future__ import annotations
6
+
7
+ import dataclasses
8
+ import sys
9
+ import typing
10
+
11
+ if sys.version_info < (3, 11):
12
+ import typing_extensions
13
+
14
+ # We use the `include_extras` parameter of `get_type_hints`, which was
15
+ # added in Python 3.9. This can be replaced by the `typing` version
16
+ # once the min version is >= 3.9
17
+ if sys.version_info < (3, 9):
18
+ get_type_hints = typing_extensions.get_type_hints
19
+ else:
20
+ get_type_hints = typing.get_type_hints
21
+ else:
22
+ get_type_hints = typing.get_type_hints
23
+
24
+ from cryptography.hazmat.bindings._rust import declarative_asn1
25
+
26
+ T = typing.TypeVar("T", covariant=True)
27
+ U = typing.TypeVar("U")
28
+
29
+
30
+ encode_der = declarative_asn1.encode_der
31
+
32
+
33
+ def _normalize_field_type(
34
+ field_type: typing.Any, field_name: str
35
+ ) -> declarative_asn1.AnnotatedType:
36
+ annotation = declarative_asn1.Annotation()
37
+
38
+ if hasattr(field_type, "__asn1_root__"):
39
+ annotated_root = field_type.__asn1_root__
40
+ if not isinstance(annotated_root, declarative_asn1.AnnotatedType):
41
+ raise TypeError(f"unsupported root type: {annotated_root}")
42
+ return annotated_root
43
+ else:
44
+ rust_field_type = declarative_asn1.non_root_python_to_rust(field_type)
45
+
46
+ return declarative_asn1.AnnotatedType(rust_field_type, annotation)
47
+
48
+
49
+ def _annotate_fields(
50
+ raw_fields: dict[str, type],
51
+ ) -> dict[str, declarative_asn1.AnnotatedType]:
52
+ fields = {}
53
+ for field_name, field_type in raw_fields.items():
54
+ # Recursively normalize the field type into something that the
55
+ # Rust code can understand.
56
+ annotated_field_type = _normalize_field_type(field_type, field_name)
57
+ fields[field_name] = annotated_field_type
58
+
59
+ return fields
60
+
61
+
62
+ def _register_asn1_sequence(cls: type[U]) -> None:
63
+ raw_fields = get_type_hints(cls, include_extras=True)
64
+ root = declarative_asn1.AnnotatedType(
65
+ declarative_asn1.Type.Sequence(cls, _annotate_fields(raw_fields)),
66
+ declarative_asn1.Annotation(),
67
+ )
68
+
69
+ setattr(cls, "__asn1_root__", root)
70
+
71
+
72
+ # Due to https://github.com/python/mypy/issues/19731, we can't define an alias
73
+ # for `dataclass_transform` that conditionally points to `typing` or
74
+ # `typing_extensions` depending on the Python version (like we do for
75
+ # `get_type_hints`).
76
+ # We work around it by making the whole decorated class conditional on the
77
+ # Python version.
78
+ if sys.version_info < (3, 11):
79
+
80
+ @typing_extensions.dataclass_transform(kw_only_default=True)
81
+ def sequence(cls: type[U]) -> type[U]:
82
+ # We use `dataclasses.dataclass` to add an __init__ method
83
+ # to the class with keyword-only parameters.
84
+ if sys.version_info >= (3, 10):
85
+ dataclass_cls = dataclasses.dataclass(
86
+ repr=False,
87
+ eq=False,
88
+ # `match_args` was added in Python 3.10 and defaults
89
+ # to True
90
+ match_args=False,
91
+ # `kw_only` was added in Python 3.10 and defaults to
92
+ # False
93
+ kw_only=True,
94
+ )(cls)
95
+ else:
96
+ dataclass_cls = dataclasses.dataclass(
97
+ repr=False,
98
+ eq=False,
99
+ )(cls)
100
+ _register_asn1_sequence(dataclass_cls)
101
+ return dataclass_cls
102
+
103
+ else:
104
+
105
+ @typing.dataclass_transform(kw_only_default=True)
106
+ def sequence(cls: type[U]) -> type[U]:
107
+ # Only add an __init__ method, with keyword-only
108
+ # parameters.
109
+ dataclass_cls = dataclasses.dataclass(
110
+ repr=False,
111
+ eq=False,
112
+ match_args=False,
113
+ kw_only=True,
114
+ )(cls)
115
+ _register_asn1_sequence(dataclass_cls)
116
+ return dataclass_cls
@@ -260,9 +260,7 @@ class Backend:
260
260
  return self._lib.Cryptography_HAS_EVP_PKEY_DHX == 1
261
261
 
262
262
  def x25519_supported(self) -> bool:
263
- if self._fips_enabled:
264
- return False
265
- return True
263
+ return not self._fips_enabled
266
264
 
267
265
  def x448_supported(self) -> bool:
268
266
  if self._fips_enabled:
@@ -274,9 +272,7 @@ class Backend:
274
272
  )
275
273
 
276
274
  def ed25519_supported(self) -> bool:
277
- if self._fips_enabled:
278
- return False
279
- return True
275
+ return not self._fips_enabled
280
276
 
281
277
  def ed448_supported(self) -> bool:
282
278
  if self._fips_enabled:
@@ -294,9 +290,7 @@ class Backend:
294
290
  )
295
291
 
296
292
  def poly1305_supported(self) -> bool:
297
- if self._fips_enabled:
298
- return False
299
- return True
293
+ return not self._fips_enabled
300
294
 
301
295
  def pkcs7_supported(self) -> bool:
302
296
  return (
@@ -0,0 +1,32 @@
1
+ # This file is dual licensed under the terms of the Apache License, Version
2
+ # 2.0, and the BSD License. See the LICENSE file in the root of this repository
3
+ # for complete details.
4
+ import typing
5
+
6
+ def encode_der(value: typing.Any) -> bytes: ...
7
+ def non_root_python_to_rust(cls: type) -> Type: ...
8
+
9
+ # Type is a Rust enum with tuple variants. For now, we express the type
10
+ # annotations like this:
11
+ class Type:
12
+ Sequence: typing.ClassVar[type]
13
+ PyInt: typing.ClassVar[type]
14
+
15
+ class Annotation:
16
+ def __new__(
17
+ cls,
18
+ ) -> Annotation: ...
19
+
20
+ class AnnotatedType:
21
+ inner: Type
22
+ annotation: Annotation
23
+
24
+ def __new__(cls, inner: Type, annotation: Annotation) -> AnnotatedType: ...
25
+
26
+ class AnnotatedTypeObject:
27
+ annotated_type: AnnotatedType
28
+ value: typing.Any
29
+
30
+ def __new__(
31
+ cls, annotated_type: AnnotatedType, value: typing.Any
32
+ ) -> AnnotatedTypeObject: ...
@@ -47,3 +47,26 @@ class Argon2id:
47
47
  def verify_phc_encoded(
48
48
  cls, key_material: bytes, phc_encoded: str, secret: bytes | None = None
49
49
  ) -> None: ...
50
+
51
+ class HKDF:
52
+ def __init__(
53
+ self,
54
+ algorithm: HashAlgorithm,
55
+ length: int,
56
+ salt: bytes | None,
57
+ info: bytes | None,
58
+ backend: typing.Any = None,
59
+ ): ...
60
+ def derive(self, key_material: Buffer) -> bytes: ...
61
+ def verify(self, key_material: bytes, expected_key: bytes) -> None: ...
62
+
63
+ class HKDFExpand:
64
+ def __init__(
65
+ self,
66
+ algorithm: HashAlgorithm,
67
+ length: int,
68
+ info: bytes | None,
69
+ backend: typing.Any = None,
70
+ ): ...
71
+ def derive(self, key_material: Buffer) -> bytes: ...
72
+ def verify(self, key_material: bytes, expected_key: bytes) -> None: ...
@@ -198,7 +198,6 @@ class CertificateSigningRequest:
198
198
  def tbs_certrequest_bytes(self) -> bytes: ...
199
199
  @property
200
200
  def is_signature_valid(self) -> bool: ...
201
- def get_attribute_for_oid(self, oid: x509.ObjectIdentifier) -> bytes: ...
202
201
 
203
202
  class PolicyBuilder:
204
203
  def time(self, time: datetime.datetime) -> PolicyBuilder: ...
@@ -278,10 +277,6 @@ class ClientVerifier:
278
277
  @property
279
278
  def policy(self) -> Policy: ...
280
279
  @property
281
- def validation_time(self) -> datetime.datetime: ...
282
- @property
283
- def max_chain_depth(self) -> int: ...
284
- @property
285
280
  def store(self) -> Store: ...
286
281
  def verify(
287
282
  self,
@@ -293,12 +288,6 @@ class ServerVerifier:
293
288
  @property
294
289
  def policy(self) -> Policy: ...
295
290
  @property
296
- def subject(self) -> x509.verification.Subject: ...
297
- @property
298
- def validation_time(self) -> datetime.datetime: ...
299
- @property
300
- def max_chain_depth(self) -> int: ...
301
- @property
302
291
  def store(self) -> Store: ...
303
292
  def verify(
304
293
  self,
@@ -309,5 +298,4 @@ class ServerVerifier:
309
298
  class Store:
310
299
  def __init__(self, certs: list[x509.Certificate]) -> None: ...
311
300
 
312
- class VerificationError(Exception):
313
- pass
301
+ class VerificationError(Exception): ...
@@ -81,6 +81,12 @@ def cryptography_has_tlsv13_hs_functions() -> list[str]:
81
81
  ]
82
82
 
83
83
 
84
+ def cryptography_has_ssl_verify_client_post_handshake() -> list[str]:
85
+ return [
86
+ "SSL_verify_client_post_handshake",
87
+ ]
88
+
89
+
84
90
  def cryptography_has_engine() -> list[str]:
85
91
  return [
86
92
  "ENGINE_by_id",
@@ -155,6 +161,10 @@ def cryptography_has_get_extms_support() -> list[str]:
155
161
  return ["SSL_get_extms_support"]
156
162
 
157
163
 
164
+ def cryptography_has_ssl_get0_group_name() -> list[str]:
165
+ return ["SSL_get0_group_name"]
166
+
167
+
158
168
  # This is a mapping of
159
169
  # {condition: function-returning-names-dependent-on-that-condition} so we can
160
170
  # loop over them and delete unsupported names at runtime. It will be removed
@@ -172,6 +182,9 @@ CONDITIONAL_NAMES = {
172
182
  "Cryptography_HAS_TLSv1_3_HS_FUNCTIONS": (
173
183
  cryptography_has_tlsv13_hs_functions
174
184
  ),
185
+ "Cryptography_HAS_SSL_VERIFY_CLIENT_POST_HANDSHAKE": (
186
+ cryptography_has_ssl_verify_client_post_handshake
187
+ ),
175
188
  "Cryptography_HAS_ENGINE": cryptography_has_engine,
176
189
  "Cryptography_HAS_VERIFIED_CHAIN": cryptography_has_verified_chain,
177
190
  "Cryptography_HAS_SRTP": cryptography_has_srtp,
@@ -188,4 +201,7 @@ CONDITIONAL_NAMES = {
188
201
  cryptography_has_ssl_op_ignore_unexpected_eof
189
202
  ),
190
203
  "Cryptography_HAS_GET_EXTMS_SUPPORT": cryptography_has_get_extms_support,
204
+ "Cryptography_HAS_SSL_GET0_GROUP_NAME": (
205
+ cryptography_has_ssl_get0_group_name
206
+ ),
191
207
  }
@@ -16,6 +16,7 @@ import cryptography
16
16
  from cryptography.exceptions import InternalError
17
17
  from cryptography.hazmat.bindings._rust import _openssl, openssl
18
18
  from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES
19
+ from cryptography.utils import CryptographyDeprecationWarning
19
20
 
20
21
 
21
22
  def _openssl_assert(ok: bool) -> None:
@@ -57,7 +58,7 @@ class Binding:
57
58
  OpenSSL API wrapper.
58
59
  """
59
60
 
60
- lib: typing.ClassVar = None
61
+ lib: typing.ClassVar[typing.Any] = None
61
62
  ffi = _openssl.ffi
62
63
  _lib_loaded = False
63
64
  _init_lock = threading.Lock()
@@ -120,3 +121,17 @@ if (
120
121
  UserWarning,
121
122
  stacklevel=2,
122
123
  )
124
+
125
+ if (
126
+ not openssl.CRYPTOGRAPHY_IS_LIBRESSL
127
+ and not openssl.CRYPTOGRAPHY_IS_BORINGSSL
128
+ and not openssl.CRYPTOGRAPHY_IS_AWSLC
129
+ and not openssl.CRYPTOGRAPHY_OPENSSL_300_OR_GREATER
130
+ ):
131
+ warnings.warn(
132
+ "You are using OpenSSL < 3.0. Support for OpenSSL < 3.0 is deprecated "
133
+ "and will be removed in the next release. Please upgrade to OpenSSL "
134
+ "3.0 or later.",
135
+ CryptographyDeprecationWarning,
136
+ stacklevel=2,
137
+ )
@@ -91,8 +91,6 @@ class MGF(metaclass=abc.ABCMeta):
91
91
 
92
92
 
93
93
  class MGF1(MGF):
94
- MAX_LENGTH = _MaxLength()
95
-
96
94
  def __init__(self, algorithm: hashes.HashAlgorithm):
97
95
  if not isinstance(algorithm, hashes.HashAlgorithm):
98
96
  raise TypeError("Expected instance of hashes.HashAlgorithm.")
@@ -184,6 +184,8 @@ def rsa_crt_iqmp(p: int, q: int) -> int:
184
184
  """
185
185
  Compute the CRT (q ** -1) % p value from RSA primes p and q.
186
186
  """
187
+ if p <= 1 or q <= 1:
188
+ raise ValueError("Values can't be <= 1")
187
189
  return _modinv(q, p)
188
190
 
189
191
 
@@ -192,6 +194,8 @@ def rsa_crt_dmp1(private_exponent: int, p: int) -> int:
192
194
  Compute the CRT private_exponent % (p - 1) value from the RSA
193
195
  private_exponent (d) and p.
194
196
  """
197
+ if private_exponent <= 1 or p <= 1:
198
+ raise ValueError("Values can't be <= 1")
195
199
  return private_exponent % (p - 1)
196
200
 
197
201
 
@@ -200,6 +204,8 @@ def rsa_crt_dmq1(private_exponent: int, q: int) -> int:
200
204
  Compute the CRT private_exponent % (q - 1) value from the RSA
201
205
  private_exponent (d) and q.
202
206
  """
207
+ if private_exponent <= 1 or q <= 1:
208
+ raise ValueError("Values can't be <= 1")
203
209
  return private_exponent % (q - 1)
204
210
 
205
211
 
@@ -220,6 +226,8 @@ def rsa_recover_private_exponent(e: int, p: int, q: int) -> int:
220
226
  #
221
227
  # TODO: Replace with lcm(p - 1, q - 1) once the minimum
222
228
  # supported Python version is >= 3.9.
229
+ if e <= 1 or p <= 1 or q <= 1:
230
+ raise ValueError("Values can't be <= 1")
223
231
  lambda_n = (p - 1) * (q - 1) // gcd(p - 1, q - 1)
224
232
  return _modinv(e, lambda_n)
225
233
 
@@ -100,53 +100,6 @@ utils.deprecated(
100
100
  name="TripleDES",
101
101
  )
102
102
 
103
- utils.deprecated(
104
- Blowfish,
105
- __name__,
106
- "Blowfish has been moved to "
107
- "cryptography.hazmat.decrepit.ciphers.algorithms.Blowfish and "
108
- "will be removed from "
109
- "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.",
110
- utils.DeprecatedIn37,
111
- name="Blowfish",
112
- )
113
-
114
-
115
- utils.deprecated(
116
- CAST5,
117
- __name__,
118
- "CAST5 has been moved to "
119
- "cryptography.hazmat.decrepit.ciphers.algorithms.CAST5 and "
120
- "will be removed from "
121
- "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.",
122
- utils.DeprecatedIn37,
123
- name="CAST5",
124
- )
125
-
126
-
127
- utils.deprecated(
128
- IDEA,
129
- __name__,
130
- "IDEA has been moved to "
131
- "cryptography.hazmat.decrepit.ciphers.algorithms.IDEA and "
132
- "will be removed from "
133
- "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.",
134
- utils.DeprecatedIn37,
135
- name="IDEA",
136
- )
137
-
138
-
139
- utils.deprecated(
140
- SEED,
141
- __name__,
142
- "SEED has been moved to "
143
- "cryptography.hazmat.decrepit.ciphers.algorithms.SEED and "
144
- "will be removed from "
145
- "cryptography.hazmat.primitives.ciphers.algorithms in 45.0.0.",
146
- utils.DeprecatedIn37,
147
- name="SEED",
148
- )
149
-
150
103
 
151
104
  class ChaCha20(CipherAlgorithm):
152
105
  name = "ChaCha20"
@@ -4,98 +4,13 @@
4
4
 
5
5
  from __future__ import annotations
6
6
 
7
- import typing
8
-
9
- from cryptography import utils
10
- from cryptography.exceptions import AlreadyFinalized, InvalidKey
11
- from cryptography.hazmat.primitives import constant_time, hashes, hmac
7
+ from cryptography.hazmat.bindings._rust import openssl as rust_openssl
12
8
  from cryptography.hazmat.primitives.kdf import KeyDerivationFunction
13
9
 
10
+ HKDF = rust_openssl.kdf.HKDF
11
+ HKDFExpand = rust_openssl.kdf.HKDFExpand
14
12
 
15
- class HKDF(KeyDerivationFunction):
16
- def __init__(
17
- self,
18
- algorithm: hashes.HashAlgorithm,
19
- length: int,
20
- salt: bytes | None,
21
- info: bytes | None,
22
- backend: typing.Any = None,
23
- ):
24
- self._algorithm = algorithm
25
-
26
- if salt is None:
27
- salt = b"\x00" * self._algorithm.digest_size
28
- else:
29
- utils._check_bytes("salt", salt)
30
-
31
- self._salt = salt
32
-
33
- self._hkdf_expand = HKDFExpand(self._algorithm, length, info)
34
-
35
- def _extract(self, key_material: utils.Buffer) -> bytes:
36
- h = hmac.HMAC(self._salt, self._algorithm)
37
- h.update(key_material)
38
- return h.finalize()
39
-
40
- def derive(self, key_material: utils.Buffer) -> bytes:
41
- utils._check_byteslike("key_material", key_material)
42
- return self._hkdf_expand.derive(self._extract(key_material))
43
-
44
- def verify(self, key_material: bytes, expected_key: bytes) -> None:
45
- if not constant_time.bytes_eq(self.derive(key_material), expected_key):
46
- raise InvalidKey
47
-
48
-
49
- class HKDFExpand(KeyDerivationFunction):
50
- def __init__(
51
- self,
52
- algorithm: hashes.HashAlgorithm,
53
- length: int,
54
- info: bytes | None,
55
- backend: typing.Any = None,
56
- ):
57
- self._algorithm = algorithm
58
-
59
- max_length = 255 * algorithm.digest_size
60
-
61
- if length > max_length:
62
- raise ValueError(
63
- f"Cannot derive keys larger than {max_length} octets."
64
- )
65
-
66
- self._length = length
67
-
68
- if info is None:
69
- info = b""
70
- else:
71
- utils._check_bytes("info", info)
72
-
73
- self._info = info
74
-
75
- self._used = False
76
-
77
- def _expand(self, key_material: utils.Buffer) -> bytes:
78
- output = [b""]
79
- counter = 1
80
-
81
- while self._algorithm.digest_size * (len(output) - 1) < self._length:
82
- h = hmac.HMAC(key_material, self._algorithm)
83
- h.update(output[-1])
84
- h.update(self._info)
85
- h.update(bytes([counter]))
86
- output.append(h.finalize())
87
- counter += 1
88
-
89
- return b"".join(output)[: self._length]
90
-
91
- def derive(self, key_material: utils.Buffer) -> bytes:
92
- utils._check_byteslike("key_material", key_material)
93
- if self._used:
94
- raise AlreadyFinalized
95
-
96
- self._used = True
97
- return self._expand(key_material)
13
+ KeyDerivationFunction.register(HKDF)
14
+ KeyDerivationFunction.register(HKDFExpand)
98
15
 
99
- def verify(self, key_material: bytes, expected_key: bytes) -> None:
100
- if not constant_time.bytes_eq(self.derive(key_material), expected_key):
101
- raise InvalidKey
16
+ __all__ = ["HKDF", "HKDFExpand"]
@@ -117,9 +117,7 @@ class _KBKDFDeriver:
117
117
  raise TypeError("value must be of type int")
118
118
 
119
119
  value_bin = utils.int_to_bytes(1, value)
120
- if not 1 <= len(value_bin) <= 4:
121
- return False
122
- return True
120
+ return 1 <= len(value_bin) <= 4
123
121
 
124
122
  def derive(
125
123
  self, key_material: utils.Buffer, prf_output_size: int
@@ -1124,7 +1124,7 @@ def _load_ssh_public_identity(
1124
1124
 
1125
1125
 
1126
1126
  def load_ssh_public_identity(
1127
- data: bytes,
1127
+ data: utils.Buffer,
1128
1128
  ) -> SSHCertificate | SSHPublicKeyTypes:
1129
1129
  return _load_ssh_public_identity(data)
1130
1130
 
@@ -22,12 +22,10 @@ class CryptographyDeprecationWarning(UserWarning):
22
22
  # ubiquity of their use. They should not be removed until we agree on when that
23
23
  # cycle ends.
24
24
  DeprecatedIn36 = CryptographyDeprecationWarning
25
- DeprecatedIn37 = CryptographyDeprecationWarning
26
25
  DeprecatedIn40 = CryptographyDeprecationWarning
27
26
  DeprecatedIn41 = CryptographyDeprecationWarning
28
27
  DeprecatedIn42 = CryptographyDeprecationWarning
29
28
  DeprecatedIn43 = CryptographyDeprecationWarning
30
- DeprecatedIn45 = CryptographyDeprecationWarning
31
29
 
32
30
 
33
31
  # If you're wondering why we don't use `Buffer`, it's because `Buffer` would
@@ -144,9 +144,8 @@ class NameAttribute(typing.Generic[NameAttributeValueType]):
144
144
  )
145
145
  if not isinstance(value, bytes):
146
146
  raise TypeError("value must be bytes for BitString")
147
- else:
148
- if not isinstance(value, str):
149
- raise TypeError("value argument must be a str")
147
+ elif not isinstance(value, str):
148
+ raise TypeError("value argument must be a str")
150
149
 
151
150
  length_limits = _NAMEOID_LENGTH_LIMIT.get(oid)
152
151
  if length_limits is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: py2docfx
3
- Version: 0.1.20.dev2243675
3
+ Version: 0.1.20.dev2245016
4
4
  Summary: A package built based on Sphinx which download source code package and generate yaml files supported by docfx.
5
5
  Author: Microsoft Corporation
6
6
  License: MIT License
@@ -2114,27 +2114,30 @@ py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/utils.py,sha256=XtWIQeO
2114
2114
  py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/version.py,sha256=laniWEeVCCfwRgYLf_rZ2f0qWaNwWTEXQEfUUL_MMvw,123
2115
2115
  py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__init__.py,sha256=d9MUx-1V_qD3x9igIy4JT4oC5CU0yjulk7QyZWeRFhg,144
2116
2116
  py2docfx/venv/venv1/Lib/site-packages/charset_normalizer/cli/__main__.py,sha256=-pdJCyPywouPyFsC8_eTSgTmvh1YEvgjsvy1WZ0XjaA,13027
2117
- py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py,sha256=oT66UDXiHV3RrIrSl7yt-nF_JOcsvzYFafF8uvPgn9c,445
2118
- py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py,sha256=QDuQ3te_14R9iGF-2Q5yEwD1FTJrCWqpnuhlMIJBsno,762
2117
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/__about__.py,sha256=HjdAcA_KYjHqUBwpMwL9tWqMW9w6tjGjuY2kG2mTvic,445
2118
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/__init__.py,sha256=mthuUrTd4FROCpUYrTIqhjz6s6T9djAZrV7nZ1oMm2o,364
2119
2119
  py2docfx/venv/venv1/Lib/site-packages/cryptography/exceptions.py,sha256=835EWILc2fwxw-gyFMriciC2SqhViETB10LBSytnDIc,1087
2120
2120
  py2docfx/venv/venv1/Lib/site-packages/cryptography/fernet.py,sha256=3Cvxkh0KJSbX8HbnCHu4wfCW7U0GgfUA3v_qQ8a8iWc,6963
2121
2121
  py2docfx/venv/venv1/Lib/site-packages/cryptography/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2122
- py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py,sha256=r90VtamCjiba37omFqp2aa--eEQVXiQIMrvWeLT-BY4,4397
2122
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/utils.py,sha256=bZAjFC5KVpfmF29qS_18vvpW3mKxmdiRALcusHhTTkg,4301
2123
2123
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/__init__.py,sha256=5IwrLWrVp0AjEr_4FdWG_V057NSJGY_W4egNNsuct0g,455
2124
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py,sha256=7-aiQLWCYT7FDrQ0sUWBNYkN5ADEGTZwLQE_ZCksPxs,16795
2124
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/_oid.py,sha256=p8ThjwJB56Ci_rAIrjyJ1f8VjgD6e39es2dh8JIUBOw,17240
2125
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/asn1/__init__.py,sha256=hS_EWx3wVvZzfbCcNV8hzcDnyMM8H-BhIoS1TipUosk,293
2126
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/asn1/asn1.py,sha256=eMEThEXa19LQjcyVofgHsW6tsZnjp3ddH7bWkkcxfLM,3860
2125
2127
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/__init__.py,sha256=O5jvKFQdZnXhKeqJ-HtulaEL9Ni7mr1mDzZY5kHlYhI,361
2126
2128
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/__init__.py,sha256=p3jmJfnCag9iE5sdMrN6VvVEu55u46xaS_IjoI0SrmA,305
2127
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py,sha256=ev-Prba_u1bCMk3ZWspkdOuLBbDlf_7wJnHK6xdYs7c,10329
2129
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/backends/openssl/backend.py,sha256=tV5AxBoFJ2GfA0DMWSY-0TxQJrpQoexzI9R4Kybb--4,10215
2128
2130
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180
2129
2131
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/__init__.pyi,sha256=KhqLhXFPArPzzJ7DYO9Fl8FoXB_BagAd_r4Dm_Ze9Xo,1257
2130
2132
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/_openssl.pyi,sha256=mpNJLuYLbCVrd5i33FBTmWwL_55Dw7JPkSLlSX9Q7oI,230
2131
2133
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/asn1.pyi,sha256=BrGjC8J6nwuS-r3EVcdXJB8ndotfY9mbQYOfpbPG0HA,354
2134
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/declarative_asn1.pyi,sha256=2ECFmYue1EPkHEE2Bm7aLwkjB0mSUTpr23v9MN4pri4,892
2132
2135
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/exceptions.pyi,sha256=exXr2xw_0pB1kk93cYbM3MohbzoUkjOms1ZMUi0uQZE,640
2133
2136
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/ocsp.pyi,sha256=VPVWuKHI9EMs09ZLRYAGvR0Iz0mCMmEzXAkgJHovpoM,4020
2134
2137
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs12.pyi,sha256=vEEd5wDiZvb8ZGFaziLCaWLzAwoG_tvPUxLQw5_uOl8,1605
2135
2138
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/pkcs7.pyi,sha256=txGBJijqZshEcqra6byPNbnisIdlxzOSIHP2hl9arPs,1601
2136
2139
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/test_support.pyi,sha256=PPhld-WkO743iXFPebeG0LtgK0aTzGdjcIsay1Gm5GE,757
2137
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi,sha256=WWFr7RV3n1eFYbLpmM_xwXGKYZalyYi_V07p6KLOHX8,10189
2140
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/x509.pyi,sha256=n9X0IQ6ICbdIi-ExdCFZoBgeY6njm3QOVAVZwDQdnbk,9784
2138
2141
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/__init__.pyi,sha256=iOAMDyHoNwwCSZfZzuXDr64g4GpGUeDgEN-LjXqdrBM,1522
2139
2142
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/aead.pyi,sha256=4Nddw6-ynzIB3w2W86WvkGKTLlTDk_6F5l54RHCuy3E,2688
2140
2143
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ciphers.pyi,sha256=LhPzHWSXJq4grAJXn6zSvSSdV-aYIIscHDwIPlJGGPs,1315
@@ -2146,15 +2149,15 @@ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl
2146
2149
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/ed448.pyi,sha256=Yx49lqdnjsD7bxiDV1kcaMrDktug5evi5a6zerMiy2s,514
2147
2150
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hashes.pyi,sha256=OWZvBx7xfo_HJl41Nc--DugVyCVPIprZ3HlOPTSWH9g,984
2148
2151
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/hmac.pyi,sha256=BXZn7NDjL3JAbYW0SQ8pg1iyC5DbQXVhUAiwsi8DFR8,702
2149
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=4FGpmCR2H8SVGoe4SUX7h5wzhyvuRi8hnzKKfvnJJrw,1379
2152
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/kdf.pyi,sha256=xXfFBb9QehHfDtEaxV_65Z0YK7NquOVIChpTLkgAs_k,2029
2150
2153
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/keys.pyi,sha256=teIt8M6ZEMJrn4s3W0UnW0DZ-30Jd68WnSsKKG124l0,912
2151
2154
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/poly1305.pyi,sha256=_SW9NtQ5FDlAbdclFtWpT4lGmxKIKHpN-4j8J2BzYfQ,585
2152
2155
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/rsa.pyi,sha256=2OQCNSXkxgc-3uw1xiCCloIQTV6p9_kK79Yu0rhZgPc,1364
2153
2156
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x25519.pyi,sha256=ewn4GpQyb7zPwE-ni7GtyQgMC0A1mLuqYsSyqv6nI_s,523
2154
2157
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/_rust/openssl/x448.pyi,sha256=juTZTmli8jO_5Vcufg-vHvx_tCyezmSLIh_9PU3TczI,505
2155
2158
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/__init__.py,sha256=s9oKCQ2ycFdXoERdS1imafueSkBsL9kvbyfghaauZ9Y,180
2156
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py,sha256=eKiDLdRSXTGA6mQ8jj5S2OXEB_sod6iL7cwed-yOuUw,5340
2157
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py,sha256=hAmRXYzQlpIAP_jj2tl-SIBJBxwtclLlr_3aIL-RkR0,4072
2159
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/_conditional.py,sha256=DMOpA_XN4l70zTc5_J9DpwlbQeUBRTWpfIJ4yRIn1-U,5791
2160
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/bindings/openssl/binding.py,sha256=x8eocEmukO4cm7cHqfVmOoYY7CCXdoF1v1WhZQt9neo,4610
2158
2161
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216
2159
2162
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/__init__.py,sha256=wHCbWfaefa-fk6THSw9th9fJUsStJo7245wfFBqmduA,216
2160
2163
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/decrepit/ciphers/algorithms.py,sha256=YrKgHS4MfwWaMmPBYRymRRlC0phwWp9ycICFezeJPGk,2595
@@ -2175,22 +2178,22 @@ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/
2175
2178
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ec.py,sha256=Vf5ig2PcS3PVnsb5N49Kx1uIkFBJyhg4BWXThDz5cug,12999
2176
2179
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed25519.py,sha256=jZW5cs472wXXV3eB0sE1b8w64gdazwwU0_MT5UOTiXs,3700
2177
2180
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/ed448.py,sha256=yAetgn2f2JYf0BO8MapGzXeThsvSMG5LmUCrxVOidAA,3729
2178
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py,sha256=eZcvUqVLbe3u48SunLdeniaPlV4-k6pwBl67OW4jSy8,2885
2179
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=kegiZAGeb6yJISjpxpaAEpM3wGdfhJSU9RgZpVwKYwk,7967
2181
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/padding.py,sha256=vQ6l6gOg9HqcbOsvHrSiJRVLdEj9L4m4HkRGYziTyFA,2854
2182
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/rsa.py,sha256=ZnKOo2f34MCCOupC03Y1uR-_jiSG5IrelHEmxaME3D4,8303
2180
2183
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/types.py,sha256=LnsOJym-wmPUJ7Knu_7bCNU3kIiELCd6krOaW_JU08I,2996
2181
2184
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/utils.py,sha256=DPTs6T4F-UhwzFQTh-1fSEpQzazH2jf2xpIro3ItF4o,790
2182
2185
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x25519.py,sha256=_4nQeZ3yJ3Lg0RpXnaqA-1yt6vbx1F-wzLcaZHwSpeE,3613
2183
2186
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/asymmetric/x448.py,sha256=WKBLtuVfJqiBRro654fGaQAlvsKbqbNkK7c4A_ZCdV0,3642
2184
2187
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/__init__.py,sha256=eyEXmjk6_CZXaOPYDr7vAYGXr29QvzgWL2-4CSolLFs,680
2185
2188
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/aead.py,sha256=Fzlyx7w8KYQakzDp1zWgJnIr62zgZrgVh1u2h4exB54,634
2186
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=S04j4NdFCBDt5KLIvbYohohRO--MCWhTia_lkVt8xD8,4542
2189
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/algorithms.py,sha256=Q7ZJwcsx83Mgxv5y7r6CyJKSdsOwC-my-5A67-ma2vw,3407
2187
2190
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/base.py,sha256=aBC7HHBBoixebmparVr0UlODs3VD0A7B6oz_AaRjDv8,4253
2188
2191
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/ciphers/modes.py,sha256=20stpwhDtbAvpH0SMf9EDHIciwmTF-JMBUOZ9bU8WiQ,8318
2189
2192
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/__init__.py,sha256=4XibZnrYq4hh5xBjWiIXzaYW6FKx8hPbVaa_cB9zS64,750
2190
2193
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/argon2.py,sha256=UFDNXG0v-rw3DqAQTB1UQAsQC2M5Ejg0k_6OCyhLKus,460
2191
2194
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/concatkdf.py,sha256=Ua8KoLXXnzgsrAUmHpyKymaPt8aPRP0EHEaBz7QCQ9I,3737
2192
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py,sha256=2HlP_huUzGAy_FZWOn8L9qP9B5ke7XKmbiER7_2l__Q,3043
2193
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=tGH5dQGEVaKYMEbgeqlaSPpqhlDMoF0xwCxk2vuhcTc,9211
2195
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/hkdf.py,sha256=M0lAEfRoc4kpp4-nwDj9yB-vNZukIOYEQrUlWsBNn9o,543
2196
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.py,sha256=oZepvo4evhKkkJQWRDwaPoIbyTaFmDc5NPimxg6lfKg,9165
2194
2197
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/pbkdf2.py,sha256=1WIwhELR0w8ztTpTu8BrFiYWmK3hUfJq08I79TxwieE,1957
2195
2198
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py,sha256=XyWUdUUmhuI9V6TqAPOvujCSMGv1XQdg0a21IWCmO-U,590
2196
2199
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/kdf/x963kdf.py,sha256=zLTcF665QFvXX2f8TS7fmBZTteXpFjKahzfjjQcCJyw,1999
@@ -2198,7 +2201,7 @@ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serializati
2198
2201
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/base.py,sha256=ikq5MJIwp_oUnjiaBco_PmQwOTYuGi-XkYUYHKy8Vo0,615
2199
2202
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs12.py,sha256=mS9cFNG4afzvseoc5e1MWoY2VskfL8N8Y_OFjl67luY,5104
2200
2203
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/pkcs7.py,sha256=5OR_Tkysxaprn4FegvJIfbep9rJ9wok6FLWvWwQ5-Mg,13943
2201
- py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py,sha256=CeDSD_KmtcpQDSUg8QY3jruZDOKjjWBKcUByDOGQXnY,53693
2204
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/serialization/ssh.py,sha256=hPV5obFznz0QhFfXFPOeQ8y6MsurA0xVMQiLnLESEs8,53700
2202
2205
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/__init__.py,sha256=tmMZGB-g4IU1r7lIFqASU019zr0uPp_wEBYcwdDCKCA,258
2203
2206
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/hotp.py,sha256=ivZo5BrcCGWLsqql4nZV0XXCjyGPi_iHfDFltGlOJwk,3256
2204
2207
  py2docfx/venv/venv1/Lib/site-packages/cryptography/hazmat/primitives/twofactor/totp.py,sha256=m5LPpRL00kp4zY8gTjr55Hfz9aMlPS53kHmVkSQCmdY,1652
@@ -2207,7 +2210,7 @@ py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/base.py,sha256=OrmTw3y8B
2207
2210
  py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/certificate_transparency.py,sha256=JqoOIDhlwInrYMFW6IFn77WJ0viF-PB_rlZV3vs9MYc,797
2208
2211
  py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/extensions.py,sha256=QxYrqR6SF1qzR9ZraP8wDiIczlEVlAFuwDRVcltB6Tk,77724
2209
2212
  py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/general_name.py,sha256=sP_rV11Qlpsk4x3XXGJY_Mv0Q_s9dtjeLckHsjpLQoQ,7836
2210
- py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py,sha256=oi0CqY_B72CEJgNXy9XkJya26QWXfwOeGJBYfXjRYvI,15121
2213
+ py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/name.py,sha256=ty0_xf0LnHwZAdEf-d8FLO1K4hGqx_7DsD3CHwoLJiY,15101
2211
2214
  py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/ocsp.py,sha256=Yey6NdFV1MPjop24Mj_VenjEpg3kUaMopSWOK0AbeBs,12699
2212
2215
  py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/oid.py,sha256=BUzgXXGVWilkBkdKPTm9R4qElE9gAGHgdYPMZAp7PJo,931
2213
2216
  py2docfx/venv/venv1/Lib/site-packages/cryptography/x509/verification.py,sha256=gR2C2c-XZQtblZhT5T5vjSKOtCb74ef2alPVmEcwFlM,958
@@ -3911,7 +3914,7 @@ py2docfx/venv/venv1/Lib/site-packages/wheel/_commands/convert.py,sha256=0wSJMU0m
3911
3914
  py2docfx/venv/venv1/Lib/site-packages/wheel/_commands/pack.py,sha256=o3iwjfRHl7N9ul-M2kHbewLJZnqBLAWf0tzUCwoiTMw,3078
3912
3915
  py2docfx/venv/venv1/Lib/site-packages/wheel/_commands/tags.py,sha256=Rv2ySVb8-qX3osKp3uJgxcIMXkjt43XUD0-zvC6KvnY,4775
3913
3916
  py2docfx/venv/venv1/Lib/site-packages/wheel/_commands/unpack.py,sha256=Y_J7ynxPSoFFTT7H0fMgbBlVErwyDGcObgme5MBuz58,1021
3914
- py2docfx-0.1.20.dev2243675.dist-info/METADATA,sha256=9re9JuIZjAa17Vi3FiKBEIfilcdJUxUJl3QnTf3iPng,548
3915
- py2docfx-0.1.20.dev2243675.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3916
- py2docfx-0.1.20.dev2243675.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
3917
- py2docfx-0.1.20.dev2243675.dist-info/RECORD,,
3917
+ py2docfx-0.1.20.dev2245016.dist-info/METADATA,sha256=SyXQI7Rk34gY3DTZtn04yG0L2FjainU5mL_N2oEfENo,548
3918
+ py2docfx-0.1.20.dev2245016.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
3919
+ py2docfx-0.1.20.dev2245016.dist-info/top_level.txt,sha256=5dH2uP81dczt_qQJ38wiZ-gzoVWasfiJALWRSjdbnYU,9
3920
+ py2docfx-0.1.20.dev2245016.dist-info/RECORD,,