@@ -1255,3 +1255,51 @@ fn should_get_x509_key_usage() {
1255
1255
assert ! ( !usage. contains( X509KeyUsage :: ENCIPHER_ONLY ) ) ;
1256
1256
assert ! ( !usage. contains( X509KeyUsage :: DECIPHER_ONLY ) ) ;
1257
1257
}
1258
+
1259
+ #[ cfg( ossl110) ]
1260
+ #[ test]
1261
+ fn should_get_x509_key_usage_when_no_set ( ) {
1262
+ use crate :: x509:: X509KeyUsage ;
1263
+
1264
+ let pkey = pkey ( ) ;
1265
+
1266
+ let mut name = X509Name :: builder ( ) . unwrap ( ) ;
1267
+ name. append_entry_by_nid ( Nid :: COMMONNAME , "key_usage.com" )
1268
+ . unwrap ( ) ;
1269
+ let name = name. build ( ) ;
1270
+
1271
+ let mut builder = X509 :: builder ( ) . unwrap ( ) ;
1272
+ builder. set_version ( 2 ) . unwrap ( ) ;
1273
+ builder. set_subject_name ( & name) . unwrap ( ) ;
1274
+ builder. set_issuer_name ( & name) . unwrap ( ) ;
1275
+ builder
1276
+ . set_not_before ( & Asn1Time :: days_from_now ( 0 ) . unwrap ( ) )
1277
+ . unwrap ( ) ;
1278
+ builder
1279
+ . set_not_after ( & Asn1Time :: days_from_now ( 365 ) . unwrap ( ) )
1280
+ . unwrap ( ) ;
1281
+ builder. set_pubkey ( & pkey) . unwrap ( ) ;
1282
+
1283
+ let mut serial = BigNum :: new ( ) . unwrap ( ) ;
1284
+ serial. rand ( 128 , MsbOption :: MAYBE_ZERO , false ) . unwrap ( ) ;
1285
+ builder
1286
+ . set_serial_number ( & serial. to_asn1_integer ( ) . unwrap ( ) )
1287
+ . unwrap ( ) ;
1288
+
1289
+ builder. sign ( & pkey, MessageDigest :: sha256 ( ) ) . unwrap ( ) ;
1290
+
1291
+ let x509 = builder. build ( ) ;
1292
+
1293
+ assert ! ( pkey. public_eq( & x509. public_key( ) . unwrap( ) ) ) ;
1294
+ assert ! ( x509. verify( & pkey) . unwrap( ) ) ;
1295
+
1296
+ let cn = x509
1297
+ . subject_name ( )
1298
+ . entries_by_nid ( Nid :: COMMONNAME )
1299
+ . next ( )
1300
+ . unwrap ( ) ;
1301
+ assert_eq ! ( cn. data( ) . as_slice( ) , b"key_usage.com" ) ;
1302
+
1303
+ let usage = x509. key_usage ( ) ;
1304
+ assert_eq ! ( usage, X509KeyUsage :: empty( ) ) ;
1305
+ }
0 commit comments