def test_rsa_provider_basic(self): silently_remove('./rsa-test.public_key.pem') silently_remove('./rsa-test.private_key.pem') provider = LocalRsaProvider(dir='./', key='rsa-test', passphrase=random_string(8)) self.assertEqual(provider.wrap_alg, "RSA/NONE/OAEPWithSHA-1AndMGF1Padding") self.assertEqual(provider.cipher.alg, "AES/CTR/NoPadding") plain_key = provider.get_key() self.assertEqual(len(plain_key), provider.cipher.key_len) plain_iv = provider.get_iv() with patch.object(oss2.utils, 'random_key', return_value=plain_key, autospect=True): with patch.object(oss2.utils, 'random_iv', return_value=plain_iv, autospect=True): content_crypto_material = provider.create_content_material() self.assertFalse(content_crypto_material.is_unencrypted()) decrypted_key = provider.decrypt_encrypted_key( content_crypto_material.encrypted_key) decrypted_iv = provider.decrypt_encrypted_iv( content_crypto_material.encrypted_iv) self.assertEqual(plain_key, decrypted_key) self.assertEqual(plain_iv, decrypted_iv) silently_remove('./rsa-test.public_key.pem') silently_remove('./rsa-test.private_key.pem') provider = RsaProvider(key_pair=key_pair, passphrase=random_string(8)) self.assertEqual(provider.wrap_alg, "RSA/NONE/PKCS1Padding") self.assertEqual(provider.cipher.alg, "AES/CTR/NoPadding") plain_key = provider.get_key() self.assertEqual(len(plain_key), provider.cipher.key_len) plain_iv = provider.get_iv() with patch.object(oss2.utils, 'random_key', return_value=plain_key, autospect=True): with patch.object(oss2.utils, 'random_iv', return_value=plain_iv, autospect=True): content_crypto_material = provider.create_content_material() self.assertFalse(content_crypto_material.is_unencrypted()) decrypted_key = provider.decrypt_encrypted_key( content_crypto_material.encrypted_key) decrypted_iv = provider.decrypt_encrypted_iv( content_crypto_material.encrypted_iv) self.assertEqual(plain_key, decrypted_key) self.assertEqual(plain_iv, decrypted_iv)
def test_local_rsa_provider_diff_keys(self): silently_remove('./rsa-test.public_key.pem') silently_remove('./rsa-test.private_key.pem') silently_remove('./rsa-test-diff.public_key.pem') silently_remove('./rsa-test-diff.private_key.pem') provider = LocalRsaProvider(dir='./', key='rsa-test') provider_diff = LocalRsaProvider(dir='./', key='rsa-test-diff') plain_key = provider.get_key() plain_iv = provider.get_iv() with patch.object(oss2.utils, 'random_key', return_value=plain_key, autospect=True): with patch.object(oss2.utils, 'random_iv', return_value=plain_iv, autospect=True): content_crypto_material = provider.create_content_material() self.assertFalse(content_crypto_material.is_unencrypted()) self.assertRaises(ClientError, provider_diff.decrypt_encrypted_key, content_crypto_material.encrypted_key) self.assertRaises(ClientError, provider_diff.decrypt_encrypted_iv, content_crypto_material.encrypted_iv) silently_remove('./rsa-test.public_key.pem') silently_remove('./rsa-test.private_key.pem') silently_remove('./rsa-test-diff.public_key.pem') silently_remove('./rsa-test-diff.private_key.pem') provider = RsaProvider(key_pair=key_pair) provider_diff = RsaProvider(key_pair=key_pair_compact) plain_key = provider.get_key() plain_iv = provider.get_iv() with patch.object(oss2.utils, 'random_key', return_value=plain_key, autospect=True): with patch.object(oss2.utils, 'random_iv', return_value=plain_iv, autospect=True): content_crypto_material = provider.create_content_material() self.assertFalse(content_crypto_material.is_unencrypted()) self.assertRaises(ClientError, provider_diff.decrypt_encrypted_key, content_crypto_material.encrypted_key) self.assertRaises(ClientError, provider_diff.decrypt_encrypted_iv, content_crypto_material.encrypted_iv)