commit 678656efdcc61c5246bc5b3f37ff468c84a2a7c7
parent cce594e358be881c12b93c53ac36118795ece50c
Author: Matthieu Rakotojaona <matthieu.rakotojaona@gmail.com>
Date: Thu, 12 Feb 2015 20:57:22 +0100
Add else clause in detection of GPG key type
We also switch gpg's on-disk format to the newer gpg2 format.
Diffstat:
10 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/lib/sup/crypto.rb b/lib/sup/crypto.rb
@@ -467,6 +467,7 @@ private
when GPGME::PK_DSA then "DSA "
when GPGME::PK_ELG then "ElGamel "
when GPGME::PK_ELG_E then "ElGamel "
+ else "unknown key type (#{subkey.pubkey_algo}) "
end
end
diff --git a/test/gnupg_test_home/.gpg-v21-migrated b/test/gnupg_test_home/.gpg-v21-migrated
diff --git a/test/gnupg_test_home/key_ecc.gen b/test/gnupg_test_home/key_ecc.gen
@@ -0,0 +1,13 @@
+ %echo Generating a standard key
+ Key-Type: eddsa
+ Key-Curve: Ed25519
+ Name-Real: Sup Test ECC
+ Name-Comment: Test ECC key
+ Name-Email: sup-test-ecc@foo.bar
+ Expire-Date: 1y
+ %no-protection
+ %pubring pubring.gpg
+ %secring secring.gpg
+ # Do a commit here, so that we can later print "done" :-)
+ %commit
+ %echo done
diff --git a/test/gnupg_test_home/private-keys-v1.d/719C7455A7169C6EE8819C6E91002E4F9DD00A65.key b/test/gnupg_test_home/private-keys-v1.d/719C7455A7169C6EE8819C6E91002E4F9DD00A65.key
@@ -0,0 +1 @@
+(11:private-key(3:ecc(5:curve7:Ed25519)(5:flags5:eddsa)(1:q33:@�R���:_��eݒ�٥�K����28iA-�t)(1:d32:��}������y���U����D��h��T��@)))
+\ No newline at end of file
diff --git a/test/gnupg_test_home/private-keys-v1.d/8A130806A754AA29D59487D76BD355040D9F26C0.key b/test/gnupg_test_home/private-keys-v1.d/8A130806A754AA29D59487D76BD355040D9F26C0.key
Binary files differ.
diff --git a/test/gnupg_test_home/private-keys-v1.d/B7AA46B22BD8A6AD1B4F266C19A3B124A32DDD71.key b/test/gnupg_test_home/private-keys-v1.d/B7AA46B22BD8A6AD1B4F266C19A3B124A32DDD71.key
Binary files differ.
diff --git a/test/gnupg_test_home/private-keys-v1.d/FA64ACD7CC871371BDF57285A6CDF0E618827783.key b/test/gnupg_test_home/private-keys-v1.d/FA64ACD7CC871371BDF57285A6CDF0E618827783.key
Binary files differ.
diff --git a/test/gnupg_test_home/pubring.gpg b/test/gnupg_test_home/pubring.gpg
Binary files differ.
diff --git a/test/gnupg_test_home/regen_keys.sh b/test/gnupg_test_home/regen_keys.sh
@@ -26,6 +26,9 @@ mv pubring.gpg receiver_pubring.gpg
echo "generate sender key.."
gpg --batch --gen-key key1.gen
+echo "generate ecc key.."
+gpg --batch --gen-key key_ecc.gen
+
echo "import receiver key.."
gpg --import sup-test-2@foo.bar.asc
diff --git a/test/test_crypto.rb b/test/test_crypto.rb
@@ -29,6 +29,7 @@ class TestCryptoManager < Minitest::Test
def setup
@from_email = 'sup-test-1@foo.bar'
+ @from_email_ecc = 'sup-fake-ecc@fake.fake'
@to_email = 'sup-test-2@foo.bar'
# Use test gnupg setup
@orig_gnupghome = ENV['GNUPGHOME']
@@ -37,7 +38,7 @@ class TestCryptoManager < Minitest::Test
@path = Dir.mktmpdir
Redwood::HookManager.init File.join(@path, 'hooks')
- am = {:default=> {:name => "test", :email=> 'sup-test-1@foo.bar'}}
+ am = {:default=> {name: "test", email: @from_email, alternates: [@from_email_ecc]}}
Redwood::AccountManager.init am
Redwood::CryptoManager.init
@@ -104,6 +105,15 @@ class TestCryptoManager < Minitest::Test
CryptoManager.verify signed.body[0], signed.body[1], true
end
end
+
+ def test_verify_unknown_keytype
+ if CryptoManager.have_crypto?
+ signed = CryptoManager.sign @from_email_ecc, @to_email, "ABCDEFG"
+ assert_instance_of RMail::Message, signed
+ assert_instance_of String, (signed.body[1].body)
+ CryptoManager.verify signed.body[0], signed.body[1], true
+ end
+ end
end
end