def test_keys(self): """ test that two instances of 'the same' key sign and verify data in the same way """ priv_key, pub_key = rsa.create_signing_keypair(2048) priv_key_str = rsa.der_string_from_signing_key(priv_key) self.assertIsInstance(priv_key_str, native_bytes) priv_key2, pub_key2 = rsa.create_signing_keypair_from_string( priv_key_str) # instead of asking "are these two keys equal", we can instead # test their function: can the second key verify a signature # produced by the first (and FAIL a signature with different # data) data_to_sign = b"test data" sig0 = rsa.sign_data(priv_key, data_to_sign) rsa.verify_signature(pub_key2, sig0, data_to_sign) # ..and the other way sig1 = rsa.sign_data(priv_key2, data_to_sign) rsa.verify_signature(pub_key, sig1, data_to_sign) # ..and a failed way with self.assertRaises(rsa.BadSignature): rsa.verify_signature(pub_key, sig1, data_to_sign + b"more")
def test_sign_invalid_pubkey(self): ''' signing data using an invalid key-object fails ''' priv, pub = rsa.create_signing_keypair(1024) with self.assertRaises(ValueError) as ctx: rsa.sign_data(object(), b"data") self.assertIn("must be an RSAPrivateKey", str(ctx.exception))