2020from cryptography .exceptions import InvalidSignature
2121from cryptography .hazmat .backends import default_backend
2222from cryptography .hazmat .primitives import hashes , serialization
23- from cryptography .hazmat .primitives .asymmetric import padding , utils
23+ from cryptography .hazmat .primitives .asymmetric import ec , padding , utils
2424from google .cloud import kms
2525import pytest
2626
27+ from check_state_import_job import check_state_import_job
28+ from check_state_imported_key import check_state_imported_key
29+ from create_import_job import create_import_job
2730from create_key_asymmetric_decrypt import create_key_asymmetric_decrypt
2831from create_key_asymmetric_sign import create_key_asymmetric_sign
32+ from create_key_for_import import create_key_for_import
2933from create_key_hsm import create_key_hsm
3034from create_key_labels import create_key_labels
3135from create_key_ring import create_key_ring
4549from iam_add_member import iam_add_member
4650from iam_get_policy import iam_get_policy
4751from iam_remove_member import iam_remove_member
52+ from import_manually_wrapped_key import import_manually_wrapped_key
4853from quickstart import quickstart
4954from restore_key_version import restore_key_version
5055from sign_asymmetric import sign_asymmetric
@@ -72,6 +77,16 @@ def location_id():
7277 return "us-east1"
7378
7479
80+ @pytest .fixture (scope = "module" )
81+ def import_job_id ():
82+ return "my-import-job"
83+
84+
85+ @pytest .fixture (scope = "module" )
86+ def import_tests_key_id ():
87+ return "my-import-job-ec-key"
88+
89+
7590@pytest .fixture (scope = "module" )
7691def key_ring_id (client , project_id , location_id ):
7792 location_name = f"projects/{ project_id } /locations/{ location_id } "
@@ -176,6 +191,24 @@ def wait_for_ready(client, key_version_name):
176191 pytest .fail ('{} not ready' .format (key_version_name ))
177192
178193
194+ def test_create_import_job (project_id , location_id , key_ring_id , import_job_id , capsys ):
195+ create_import_job (project_id , location_id , key_ring_id , import_job_id )
196+ out , _ = capsys .readouterr ()
197+ assert "Created import job" in out
198+
199+
200+ def test_check_state_import_job (project_id , location_id , key_ring_id , import_job_id , capsys ):
201+ check_state_import_job (project_id , location_id , key_ring_id , import_job_id )
202+ out , _ = capsys .readouterr ()
203+ assert "Current state" in out
204+
205+
206+ def test_check_state_imported_key (project_id , location_id , key_ring_id , import_job_id , capsys ):
207+ check_state_imported_key (project_id , location_id , key_ring_id , import_job_id )
208+ out , _ = capsys .readouterr ()
209+ assert "Current state" in out
210+
211+
179212def test_create_key_asymmetric_decrypt (project_id , location_id , key_ring_id ):
180213 key_id = '{}' .format (uuid .uuid4 ())
181214 key = create_key_asymmetric_decrypt (project_id , location_id , key_ring_id , key_id )
@@ -190,6 +223,12 @@ def test_create_key_asymmetric_sign(project_id, location_id, key_ring_id):
190223 assert key .version_template .algorithm == kms .CryptoKeyVersion .CryptoKeyVersionAlgorithm .RSA_SIGN_PKCS1_2048_SHA256
191224
192225
226+ def test_create_key_for_import (project_id , location_id , key_ring_id , import_tests_key_id , capsys ):
227+ create_key_for_import (project_id , location_id , key_ring_id , import_tests_key_id )
228+ out , _ = capsys .readouterr ()
229+ assert "Generated key" in out
230+
231+
193232def test_create_key_hsm (project_id , location_id , key_ring_id ):
194233 key_id = '{}' .format (uuid .uuid4 ())
195234 key = create_key_hsm (project_id , location_id , key_ring_id , key_id )
@@ -347,6 +386,17 @@ def test_iam_remove_member(client, project_id, location_id, key_ring_id, asymmet
347386 assert any (
'group:[email protected] ' in b .
members for b in policy .
bindings )
348387
349388
389+ def test_import_manually_wrapped_key (project_id , location_id , key_ring_id , import_job_id , import_tests_key_id , capsys ):
390+ key = ec .generate_private_key (ec .SECP256R1 , default_backend ())
391+ formatted_key = key .private_bytes (
392+ serialization .Encoding .DER ,
393+ serialization .PrivateFormat .PKCS8 ,
394+ serialization .NoEncryption ())
395+ import_manually_wrapped_key (project_id , location_id , key_ring_id , import_tests_key_id , import_job_id , formatted_key )
396+ out , _ = capsys .readouterr ()
397+ assert "Imported" in out
398+
399+
350400def test_sign_asymmetric (client , project_id , location_id , key_ring_id , asymmetric_sign_rsa_key_id ):
351401 message = 'my message'
352402
0 commit comments