From 2764bbb5a9fc62a827d3aabb5b336d750734b7a5 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Thu, 28 Jun 2012 12:01:37 +0900 Subject: [PATCH] decryption test after keygen --- ChangeLog | 11 +++++++++-- test/features/204_decryption.feature | 19 +++++++++++++++++++ test/features/steps.py | 6 +++++- test/rsa_keys.py | 6 ++++++ 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 test/features/204_decryption.feature diff --git a/ChangeLog b/ChangeLog index 52511a2..efa2412 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,19 @@ 2012-06-28 Niibe Yutaka + * test/features/204_decryption.feature: New. + * test/features/203_compute_signature.feature: New. + * test/features/202_keygen.feature: New. + * test/features/201_setup_passphrase.feature: New. + * test/features/200_key_removal.feature: New. + + * test/rsa_keys.py (verify_signature): New. + (encrypt_with_pubkey): New. + * test/gnuk.py (gnuk_token): New method: increment_seq. (gnuk_token.icc_send_cmd): Handle timeout. (gnuk_token.cmd_genkey): New. (gnuk_token.cmd_get_public_key): New. - * test/rsa_keys.py (verify_signature): New. - 2012-06-27 Niibe Yutaka * test/features/101_decryption.feature: New. diff --git a/test/features/204_decryption.feature b/test/features/204_decryption.feature new file mode 100644 index 0000000..e1cc98c --- /dev/null +++ b/test/features/204_decryption.feature @@ -0,0 +1,19 @@ +@keygen +Feature: decryption + In order to use a token + A token should decrypt encrypted data + + Scenario: decrypt by OPENPGP.2 key (1) + Given a plain text "This is a test message." + And a public key from token for OPENPGP.2 + And encrypt it on host + And let a token decrypt encrypted data + Then decrypted data should be same as a plain text + + Scenario: decrypt by OPENPGP.2 key (2) + Given a plain text "RSA decryption is as easy as pie." + And a public key from token for OPENPGP.2 + And encrypt it on host + And let a token decrypt encrypted data + Then decrypted data should be same as a plain text + diff --git a/test/features/steps.py b/test/features/steps.py index dff6339..d995ccf 100644 --- a/test/features/steps.py +++ b/test/features/steps.py @@ -95,11 +95,15 @@ def compute_signature_on_host(keyno_str): def set_plaintext(content_str_repr): scc.plaintext = ast.literal_eval(content_str_repr) -@Given("encrypt it on host with RSA key pair (.*)") +@Given("encrypt it on host with RSA key pair (.*)$") def encrypt_on_host(keyno_str): keyno = int(keyno_str) scc.ciphertext = rsa_keys.encrypt(keyno, scc.plaintext) +@Given("encrypt it on host$") +def encrypt_on_host_public_key(): + scc.ciphertext = rsa_keys.encrypt_with_pubkey(scc.pubkey_info, scc.plaintext) + @Given("let a token decrypt encrypted data") def decrypt(): scc.result = ftc.token.cmd_pso_longdata(0x80, 0x86, scc.ciphertext) diff --git a/test/rsa_keys.py b/test/rsa_keys.py index 2193026..fe210b2 100644 --- a/test/rsa_keys.py +++ b/test/rsa_keys.py @@ -138,6 +138,12 @@ def encrypt(keyno, plaintext): m = pkcs1_pad_for_crypt(plaintext) return '\x00' + integer_to_bytes(pow(m, e, n)) +def encrypt_with_pubkey(pubkey_info, plaintext): + n = int(hexlify(pubkey_info[0]), 16) + e = int(hexlify(pubkey_info[1]), 16) + m = pkcs1_pad_for_crypt(plaintext) + return '\x00' + integer_to_bytes(pow(m, e, n)) + def verify_signature(pubkey_info, digestinfo, sig): n = int(hexlify(pubkey_info[0]), 16) e = int(hexlify(pubkey_info[1]), 16)