File tree 3 files changed +17
-9
lines changed
docs/hazmat/primitives/asymmetric
3 files changed +17
-9
lines changed Original file line number Diff line number Diff line change @@ -314,6 +314,8 @@ Numbers
314
314
315
315
:returns: A new instance of :class: `DHParameters `.
316
316
317
+ :raises ValueError: If the parameters are invalid.
318
+
317
319
.. class :: DHPrivateNumbers(x, public_numbers)
318
320
319
321
.. versionadded :: 0.8
Original file line number Diff line number Diff line change @@ -119,7 +119,13 @@ fn dh_parameters_from_numbers(
119
119
. transpose ( ) ?;
120
120
let g = utils:: py_int_to_bn ( py, numbers. g . bind ( py) ) ?;
121
121
122
- Ok ( openssl:: dh:: Dh :: from_pqg ( p, q, g) ?)
122
+ let dh = openssl:: dh:: Dh :: from_pqg ( p, q, g) ?;
123
+ if !dh. check_key ( ) ? {
124
+ return Err ( CryptographyError :: from (
125
+ pyo3:: exceptions:: PyValueError :: new_err ( "Invalid DH parameters" ) ,
126
+ ) ) ;
127
+ }
128
+ Ok ( dh)
123
129
}
124
130
125
131
fn clone_dh < T : openssl:: pkey:: HasParams > (
@@ -415,14 +421,6 @@ impl DHPrivateNumbers {
415
421
let priv_key = utils:: py_int_to_bn ( py, self . x . bind ( py) ) ?;
416
422
417
423
let dh = dh. set_key ( pub_key, priv_key) ?;
418
- if !dh. check_key ( ) ? {
419
- return Err ( CryptographyError :: from (
420
- pyo3:: exceptions:: PyValueError :: new_err (
421
- "DH private numbers did not pass safety checks." ,
422
- ) ,
423
- ) ) ;
424
- }
425
-
426
424
let pkey = openssl:: pkey:: PKey :: from_dh ( dh) ?;
427
425
Ok ( DHPrivateKey { pkey } )
428
426
}
Original file line number Diff line number Diff line change @@ -72,6 +72,14 @@ def test_dh_parameternumbers():
72
72
dh .DHParameterNumbers (P_1536 , 2 , "hello" ) # type: ignore[arg-type]
73
73
74
74
75
+ @pytest .mark .skip_fips (reason = "RHEL8 FIPS doesn't like this" )
76
+ def test_dh_invalid_parameter_numbers ():
77
+ # invalid q
78
+ params = dh .DHParameterNumbers (P_1536 , 2 , 12345 )
79
+ with pytest .raises (ValueError ):
80
+ params .parameters ()
81
+
82
+
75
83
def test_dh_numbers ():
76
84
params = dh .DHParameterNumbers (P_1536 , 2 )
77
85
You can’t perform that action at this time.
0 commit comments