massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-pyright / node_modules / pyright / dist / typeshed-fallback / stubs / cryptography / cryptography / hazmat / primitives / asymmetric / ec.pyi
1 from abc import ABCMeta, abstractmethod
2 from typing import ClassVar
3
4 from cryptography.hazmat.backends.interfaces import EllipticCurveBackend
5 from cryptography.hazmat.primitives.asymmetric import AsymmetricVerificationContext
6 from cryptography.hazmat.primitives.asymmetric.utils import Prehashed
7 from cryptography.hazmat.primitives.hashes import HashAlgorithm
8 from cryptography.hazmat.primitives.serialization import Encoding, KeySerializationEncryption, PrivateFormat, PublicFormat
9 from cryptography.x509 import ObjectIdentifier
10
11 class EllipticCurve(metaclass=ABCMeta):
12     @property
13     @abstractmethod
14     def key_size(self) -> int: ...
15     @property
16     @abstractmethod
17     def name(self) -> str: ...
18
19 class BrainpoolP256R1(EllipticCurve):
20     key_size: int = ...
21     name: str = ...
22
23 class BrainpoolP384R1(EllipticCurve):
24     key_size: int = ...
25     name: str = ...
26
27 class BrainpoolP512R1(EllipticCurve):
28     key_size: int = ...
29     name: str = ...
30
31 class SECP192R1(EllipticCurve):
32     key_size: int = ...
33     name: str = ...
34
35 class SECP224R1(EllipticCurve):
36     key_size: int = ...
37     name: str = ...
38
39 class SECP256K1(EllipticCurve):
40     key_size: int = ...
41     name: str = ...
42
43 class SECP256R1(EllipticCurve):
44     key_size: int = ...
45     name: str = ...
46
47 class SECP384R1(EllipticCurve):
48     key_size: int = ...
49     name: str = ...
50
51 class SECP521R1(EllipticCurve):
52     key_size: int = ...
53     name: str = ...
54
55 class SECT163K1(EllipticCurve):
56     key_size: int = ...
57     name: str = ...
58
59 class SECT163R2(EllipticCurve):
60     key_size: int = ...
61     name: str = ...
62
63 class SECT233K1(EllipticCurve):
64     key_size: int = ...
65     name: str = ...
66
67 class SECT233R1(EllipticCurve):
68     key_size: int = ...
69     name: str = ...
70
71 class SECT283K1(EllipticCurve):
72     key_size: int = ...
73     name: str = ...
74
75 class SECT283R1(EllipticCurve):
76     key_size: int = ...
77     name: str = ...
78
79 class SECT409K1(EllipticCurve):
80     key_size: int = ...
81     name: str = ...
82
83 class SECT409R1(EllipticCurve):
84     key_size: int = ...
85     name: str = ...
86
87 class SECT571K1(EllipticCurve):
88     key_size: int = ...
89     name: str = ...
90
91 class SECT571R1(EllipticCurve):
92     key_size: int = ...
93     name: str = ...
94
95 class EllipticCurveOID(object):
96     SECP192R1: ClassVar[ObjectIdentifier]
97     SECP224R1: ClassVar[ObjectIdentifier]
98     SECP256K1: ClassVar[ObjectIdentifier]
99     SECP256R1: ClassVar[ObjectIdentifier]
100     SECP384R1: ClassVar[ObjectIdentifier]
101     SECP521R1: ClassVar[ObjectIdentifier]
102     BRAINPOOLP256R1: ClassVar[ObjectIdentifier]
103     BRAINPOOLP384R1: ClassVar[ObjectIdentifier]
104     BRAINPOOLP512R1: ClassVar[ObjectIdentifier]
105     SECT163K1: ClassVar[ObjectIdentifier]
106     SECT163R2: ClassVar[ObjectIdentifier]
107     SECT233K1: ClassVar[ObjectIdentifier]
108     SECT233R1: ClassVar[ObjectIdentifier]
109     SECT283K1: ClassVar[ObjectIdentifier]
110     SECT283R1: ClassVar[ObjectIdentifier]
111     SECT409K1: ClassVar[ObjectIdentifier]
112     SECT409R1: ClassVar[ObjectIdentifier]
113     SECT571K1: ClassVar[ObjectIdentifier]
114     SECT571R1: ClassVar[ObjectIdentifier]
115
116 class EllipticCurvePrivateKey(metaclass=ABCMeta):
117     @property
118     @abstractmethod
119     def curve(self) -> EllipticCurve: ...
120     @property
121     @abstractmethod
122     def key_size(self) -> int: ...
123     @abstractmethod
124     def exchange(self, algorithm: ECDH, peer_public_key: EllipticCurvePublicKey) -> bytes: ...
125     @abstractmethod
126     def public_key(self) -> EllipticCurvePublicKey: ...
127     @abstractmethod
128     def sign(self, data: bytes, signature_algorithm: EllipticCurveSignatureAlgorithm) -> bytes: ...
129
130 class EllipticCurvePrivateKeyWithSerialization(EllipticCurvePrivateKey):
131     @abstractmethod
132     def private_bytes(
133         self, encoding: Encoding, format: PrivateFormat, encryption_algorithm: KeySerializationEncryption
134     ) -> bytes: ...
135     @abstractmethod
136     def private_numbers(self) -> EllipticCurvePrivateNumbers: ...
137
138 class EllipticCurvePrivateNumbers(object):
139     @property
140     def private_value(self) -> int: ...
141     @property
142     def public_numbers(self) -> EllipticCurvePublicNumbers: ...
143     def __init__(self, private_value: int, public_numbers: EllipticCurvePublicNumbers) -> None: ...
144     def private_key(self, backend: EllipticCurveBackend | None = ...) -> EllipticCurvePrivateKey: ...
145
146 class EllipticCurvePublicKey(metaclass=ABCMeta):
147     @property
148     @abstractmethod
149     def curve(self) -> EllipticCurve: ...
150     @property
151     @abstractmethod
152     def key_size(self) -> int: ...
153     @classmethod
154     def from_encoded_point(cls, curve: EllipticCurve, data: bytes) -> EllipticCurvePublicKey: ...
155     @abstractmethod
156     def public_bytes(self, encoding: Encoding, format: PublicFormat) -> bytes: ...
157     @abstractmethod
158     def public_numbers(self) -> EllipticCurvePublicNumbers: ...
159     @abstractmethod
160     def verifier(
161         self, signature: bytes, signature_algorithm: EllipticCurveSignatureAlgorithm
162     ) -> AsymmetricVerificationContext: ...
163     @abstractmethod
164     def verify(self, signature: bytes, data: bytes, signature_algorithm: EllipticCurveSignatureAlgorithm) -> None: ...
165
166 EllipticCurvePublicKeyWithSerialization = EllipticCurvePublicKey
167
168 class EllipticCurvePublicNumbers(object):
169     @property
170     def curve(self) -> EllipticCurve: ...
171     @property
172     def x(self) -> int: ...
173     @property
174     def y(self) -> int: ...
175     def __init__(self, x: int, y: int, curve: EllipticCurve) -> None: ...
176     @classmethod
177     def from_encoded_point(cls, curve: EllipticCurve, data: bytes) -> EllipticCurvePublicNumbers: ...
178     def public_key(self, backend: EllipticCurveBackend | None = ...) -> EllipticCurvePublicKey: ...
179
180 class EllipticCurveSignatureAlgorithm(metaclass=ABCMeta):
181     @property
182     @abstractmethod
183     def algorithm(self) -> HashAlgorithm | Prehashed: ...
184
185 class ECDH(object): ...
186
187 class ECDSA(EllipticCurveSignatureAlgorithm):
188     def __init__(self, algorithm: HashAlgorithm | Prehashed): ...
189     @property
190     def algorithm(self) -> HashAlgorithm | Prehashed: ...
191
192 def derive_private_key(
193     private_value: int, curve: EllipticCurve, backend: EllipticCurveBackend | None = ...
194 ) -> EllipticCurvePrivateKey: ...
195 def generate_private_key(curve: EllipticCurve, backend: EllipticCurveBackend | None = ...) -> EllipticCurvePrivateKey: ...
196 def get_curve_for_oid(oid: ObjectIdentifier) -> EllipticCurve: ...