File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 5959 "rsa" ,
6060 "rsa-pkcs1v15-sha512" ,
6161 ),
62+ CryptoKeyVersion .CryptoKeyVersionAlgorithm .PQ_SIGN_ML_DSA_44 : (
63+ "ml-dsa" ,
64+ "ml-dsa-44/1" ,
65+ ),
66+ CryptoKeyVersion .CryptoKeyVersionAlgorithm .PQ_SIGN_ML_DSA_65 : (
67+ "ml-dsa" ,
68+ "ml-dsa-65/1" ,
69+ ),
70+ CryptoKeyVersion .CryptoKeyVersionAlgorithm .PQ_SIGN_ML_DSA_87 : (
71+ "ml-dsa" ,
72+ "ml-dsa-87/1" ,
73+ ),
6274 }
6375except ImportError :
6476 GCP_IMPORT_ERROR = (
@@ -176,10 +188,16 @@ def sign(self, payload: bytes) -> Signature:
176188 # NOTE: request and response can contain CRC32C of the digest/sig:
177189 # Verifying could be useful but would require another dependency...
178190
179- hasher = hashlib .new (self .hash_algorithm )
180- hasher .update (payload )
181- digest = {self .hash_algorithm : hasher .digest ()}
182- request = {"name" : self .gcp_keyid , "digest" : digest }
191+ if self .public_key .keytype == "ml-dsa" :
192+ hasher = hashlib .new ("sha512" )
193+ hasher .update (payload )
194+ pre_signing_string = b"tuf" + bytes ([1 ]) + hasher .digest ()
195+ request = {"name" : self .gcp_keyid , "data" : pre_signing_string }
196+ else :
197+ hasher = hashlib .new (self .hash_algorithm )
198+ hasher .update (payload )
199+ digest = {self .hash_algorithm : hasher .digest ()}
200+ request = {"name" : self .gcp_keyid , "digest" : digest }
183201
184202 logger .debug ("signing request %s" , request )
185203 response = self .client .asymmetric_sign (request )
Original file line number Diff line number Diff line change @@ -252,7 +252,12 @@ def get_hash_algorithm_name(self) -> str:
252252 ]:
253253 return f"sha{ self .scheme [- 3 :]} "
254254
255- elif self .scheme == "ecdsa-sha2-nistp521" :
255+ elif self .scheme in [
256+ "ecdsa-sha2-nistp521" ,
257+ "ml-dsa-44/1" ,
258+ "ml-dsa-65/1" ,
259+ "ml-dsa-87/1" ,
260+ ]:
256261 return "sha512"
257262
258263 raise ValueError (f"method not supported for scheme { self .scheme } " )
You can’t perform that action at this time.
0 commit comments