@@ -1131,5 +1131,42 @@ mod tests {
1131
1131
assert_eq ! ( "42" , & format!( "{}" , ChildNumber :: from_normal_idx( 42 ) . unwrap( ) ) ) ;
1132
1132
assert_eq ! ( "000042" , & format!( "{:06}" , ChildNumber :: from_normal_idx( 42 ) . unwrap( ) ) ) ;
1133
1133
}
1134
+
1135
+ #[ test]
1136
+ #[ should_panic( expected = "Secp256k1(InvalidSecretKey)" ) ]
1137
+ fn schnorr_broken_privkey_zeros ( ) {
1138
+ /* this is how we generate key:
1139
+ let mut sk = secp256k1::key::ONE_KEY;
1140
+
1141
+ let zeros = [0u8; 32];
1142
+ unsafe {
1143
+ sk.as_mut_ptr().copy_from(zeros.as_ptr(), 32);
1144
+ }
1145
+
1146
+ let xpriv = ExtendedPrivKey {
1147
+ network: Network::Bitcoin,
1148
+ depth: 0,
1149
+ parent_fingerprint: Default::default(),
1150
+ child_number: ChildNumber::Normal { index: 0 },
1151
+ private_key: sk,
1152
+ chain_code: ChainCode::from(&[0u8; 32][..])
1153
+ };
1154
+
1155
+ println!("{}", xpriv);
1156
+ */
1157
+
1158
+ // Xpriv having secret key set to all zeros
1159
+ let xpriv_str = "xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzF93Y5wvzdUayhgkkFoicQZcP3y52uPPxFnfoLZB21Teqt1VvEHx" ;
1160
+ ExtendedPrivKey :: from_str ( xpriv_str) . unwrap ( ) ;
1161
+ }
1162
+
1163
+
1164
+ #[ test]
1165
+ #[ should_panic( expected = "Secp256k1(InvalidSecretKey)" ) ]
1166
+ fn schnorr_broken_privkey_ffs ( ) {
1167
+ // Xpriv having secret key set to all 0xFF's
1168
+ let xpriv_str = "xprv9s21ZrQH143K24Mfq5zL5MhWK9hUhhGbd45hLXo2Pq2oqzMMo63oStZzFAzHGBP2UuGCqWLTAPLcMtD9y5gkZ6Eq3Rjuahrv17fENZ3QzxW" ;
1169
+ ExtendedPrivKey :: from_str ( xpriv_str) . unwrap ( ) ;
1170
+ }
1134
1171
}
1135
1172
0 commit comments