@@ -1203,6 +1203,44 @@ def do_test_to_openssl(self, curve, hash_name="SHA1"):
1203
1203
)
1204
1204
1205
1205
1206
+ class TooSmallCurve (unittest .TestCase ):
1207
+ @pytest .mark .skipif ("prime192v1" not in OPENSSL_SUPPORTED_CURVES ,
1208
+ reason = "system openssl does not support prime192v1" )
1209
+ def test_sign_too_small_curve_dont_allow_truncate_raises (self ):
1210
+ sk = SigningKey .generate (curve = NIST192p )
1211
+ vk = sk .get_verifying_key ()
1212
+ data = b ("data" )
1213
+ with self .assertRaises (ecdsa .keys .BadDigestError ):
1214
+ sk .sign (
1215
+ data ,
1216
+ hashfunc = partial (hashlib .new , "SHA256" ),
1217
+ sigencode = sigencode_der ,
1218
+ allow_truncate = False ,
1219
+ )
1220
+
1221
+ @pytest .mark .skipif ("prime192v1" not in OPENSSL_SUPPORTED_CURVES ,
1222
+ reason = "system openssl does not support prime192v1" )
1223
+ def test_verify_too_small_curve_dont_allow_truncate_raises (self ):
1224
+ sk = SigningKey .generate (curve = NIST192p )
1225
+ vk = sk .get_verifying_key ()
1226
+ data = b ("data" )
1227
+ sig_der = sk .sign (
1228
+ data ,
1229
+ hashfunc = partial (hashlib .new , "SHA256" ),
1230
+ sigencode = sigencode_der ,
1231
+ allow_truncate = True ,
1232
+ )
1233
+ with self .assertRaises (BadDigestError ):
1234
+ vk .verify (
1235
+ sig_der ,
1236
+ data ,
1237
+ hashfunc = partial (hashlib .new , "SHA256" ),
1238
+ sigdecode = sigdecode_der ,
1239
+ allow_truncate = False ,
1240
+ )
1241
+
1242
+
1243
+
1206
1244
class DER (unittest .TestCase ):
1207
1245
def test_integer (self ):
1208
1246
self .assertEqual (der .encode_integer (0 ), b ("\x02 \x01 \x00 " ))
0 commit comments