@@ -153,26 +153,26 @@ def curve_key_size(self) -> int:
153153
154154 @classmethod
155155 def import_key (
156- cls : t . Any ,
156+ cls ,
157157 value : AnyKey | EllipticCurvePrivateKey | EllipticCurvePublicKey ,
158158 parameters : KeyParameters | None = None ,
159- password : t . Any = None ,
160- ) -> "ECKey" :
161- key : ECKey
159+ password : str | bytes | None = None ,
160+ ) -> t . Self :
161+ key : t . Self
162162 if isinstance (value , (EllipticCurvePrivateKey , EllipticCurvePublicKey )):
163163 key = cls (value , value , parameters )
164164 else :
165- key = super (ECKey , cls ).import_key (value , parameters , password )
165+ key = super ().import_key (value , parameters , password )
166166 return key
167167
168168 @classmethod
169169 def generate_key (
170- cls : type [ "ECKey" ] ,
170+ cls ,
171171 crv : str | None = "P-256" ,
172172 parameters : KeyParameters | None = None ,
173173 private : bool = True ,
174174 auto_kid : bool = False ,
175- ) -> "ECKey" :
175+ ) -> t . Self :
176176 """Generate a ``ECKey`` with the given "crv" value.
177177
178178 :param crv: ECKey curve name
@@ -187,15 +187,15 @@ def generate_key(
187187
188188 @classmethod
189189 def derive_key (
190- cls : type [ "ECKey" ] ,
190+ cls ,
191191 secret : bytes | str ,
192192 crv : str = "P-256" ,
193193 parameters : KeyParameters | None = None ,
194194 private : bool = True ,
195195 auto_kid : bool = False ,
196196 kdf_name : t .Literal ["HKDF" , "PBKDF2" ] = "HKDF" ,
197197 kdf_options : dict [str , t .Any ] | None = None ,
198- ) -> "ECKey" :
198+ ) -> t . Self :
199199 """
200200 Generate an elliptic curve cryptographic key derived from a secret input using a key
201201 derivation function (KDF). This allows the creation of deterministic elliptic curve
@@ -249,13 +249,16 @@ def derive_key(
249249 return _wrap_key (cls , raw_key , private , auto_kid , parameters )
250250
251251
252+ ECKeyType = t .TypeVar ("ECKeyType" , bound = ECKey )
253+
254+
252255def _wrap_key (
253- cls : type ["ECKey" ],
256+ cls : type [ECKeyType ],
254257 raw_key : EllipticCurvePrivateKey ,
255258 private : bool ,
256259 auto_kid : bool ,
257260 parameters : KeyParameters | None = None ,
258- ) -> ECKey :
261+ ) -> ECKeyType :
259262 if private :
260263 key = cls (raw_key , raw_key , parameters )
261264 else :
0 commit comments