[Pkg-privacy-commits] [msva-perl] 320/356: wrote GnuPGKey_to_OpenSSH_pub
Ximin Luo
infinity0 at moszumanska.debian.org
Mon Aug 24 07:42:09 UTC 2015
This is an automated email from the git hooks/post-receive script.
infinity0 pushed a commit to branch debian
in repository msva-perl.
commit 50f3e3f7149c3e880f364c07938df61b83abc659
Author: Daniel Kahn Gillmor <dkg at fifthhorseman.net>
Date: Wed Apr 20 00:32:48 2011 -0400
wrote GnuPGKey_to_OpenSSH_pub
---
Crypt/Monkeysphere/Keytrans.pm | 18 +++++++++-
unit-tests/40.keytrans/01.openssh_pack.t | 4 +--
unit-tests/40.keytrans/10.openpgp2ssh.t | 57 ++++++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 3 deletions(-)
diff --git a/Crypt/Monkeysphere/Keytrans.pm b/Crypt/Monkeysphere/Keytrans.pm
index d89d2a5..ab021d7 100644
--- a/Crypt/Monkeysphere/Keytrans.pm
+++ b/Crypt/Monkeysphere/Keytrans.pm
@@ -3,9 +3,11 @@ package Crypt::Monkeysphere::Keytrans;
use strict;
use warnings;
use Math::BigInt;
+use Carp;
+use MIME::Base64;
use Exporter qw(import);
-our @EXPORT_OK=qw(openssh_rsa_pubkey_pack);
+our @EXPORT_OK=qw();
# takes a Math::BigInt and returns it properly packed for openssh output.
@@ -46,4 +48,18 @@ sub openssh_rsa_pubkey_pack {
}
+sub GnuPGKey_to_OpenSSH_pub {
+ my $key = shift;
+
+ croak("not a GnuPG::Key!")
+ unless($key->isa('GnuPG::Key'));
+
+ croak("Not an RSA key!")
+ unless $key->algo_num == 1;
+
+ use Data::Dumper;
+
+ return encode_base64(openssh_rsa_pubkey_pack(@{$key->pubkey_data}), '');
+}
+
1;
diff --git a/unit-tests/40.keytrans/01.openssh_pack.t b/unit-tests/40.keytrans/01.openssh_pack.t
index 01eef0c..00cff1a 100644
--- a/unit-tests/40.keytrans/01.openssh_pack.t
+++ b/unit-tests/40.keytrans/01.openssh_pack.t
@@ -4,7 +4,7 @@ use Test::More;
use strict;
use warnings;
-use Crypt::Monkeysphere::Keytrans qw(openssh_rsa_pubkey_pack);
+use Crypt::Monkeysphere::Keytrans;
use MIME::Base64;
use File::Temp qw(tempdir);
@@ -15,7 +15,7 @@ my $exp = Math::BigInt->new('0x10001');
my $mod = Math::BigInt->new('0xBC358E82F23E5660301E5DBB370B42FD3EBAFE700B8E82F928798C0BA55DE5F96B984C2EA6D0BA67699E7777DA3FAF9CEA29A2030B81761603F8714E76AA2905A8DA2BAAFB19DEC147032E57585B6F4B3B1A4531942A1B3E635E1328AA50D98FA8CA7B2E64537CC26E0DE94F197A97854FE7C3B4F04F4FD96BCE8A311B2767CB0DB6E3A2D1871EE3B6B6309C0322EFCF9D3D30533575509B9A071C0C03A4B9C480D7B7E628BBF2A6714A54B5AA77F05CA7CDADD45A7C2C070DEB51F15122660B15919D7919A299E38D6BBD762C2E4BB306A0B506C7917DA3C0619E6116ADE290FDB35BA24D279 [...]
my $sshpubkey = 'AAAAB3NzaC1yc2EAAAADAQABAAABAQC8NY6C8j5WYDAeXbs3C0L9Prr+cAuOgvkoeYwLpV3l+WuYTC6m0LpnaZ53d9o/r5zqKaIDC4F2FgP4cU52qikFqNorqvsZ3sFHAy5XWFtvSzsaRTGUKhs+Y14TKKpQ2Y+oynsuZFN8wm4N6U8ZepeFT+fDtPBPT9lrzooxGydnyw2246LRhx7jtrYwnAMi78+dPTBTNXVQm5oHHAwDpLnEgNe35ii78qZxSlS1qnfwXKfNrdRafCwHDetR8VEiZgsVkZ15GaKZ441rvXYsLkuzBqC1BseRfaPAYZ5hFq3ikP2zW6JNJ5IS8k8JfR9wMmuSB8J+U2op/qoCJQQ3HMAb';
-my $out = encode_base64(openssh_rsa_pubkey_pack($mod, $exp), '');
+my $out = encode_base64(Crypt::Monkeysphere::Keytrans::openssh_rsa_pubkey_pack($mod, $exp), '');
is($out, $sshpubkey);
diff --git a/unit-tests/40.keytrans/10.openpgp2ssh.t b/unit-tests/40.keytrans/10.openpgp2ssh.t
new file mode 100644
index 0000000..a14b641
--- /dev/null
+++ b/unit-tests/40.keytrans/10.openpgp2ssh.t
@@ -0,0 +1,57 @@
+# -*- perl -*-
+use Test::More;
+
+use Crypt::Monkeysphere::Keytrans;
+use GnuPG::Interface;
+use File::Temp qw(tempdir);
+
+plan tests => 1;
+
+my $tempdir = tempdir("unitXXXXX", CLEANUP => 1);
+my $gnupg = new GnuPG::Interface();
+$gnupg->options->hash_init(homedir=>$tempdir);
+
+my $openpgpdata = "
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.11 (GNU/Linux)
+
+mI0ETa5YiwEEALJhsHgLEokvKM+d1oAAy+oaDywLWsbqzuCCqu5h9Hu7MYxeGmTA
+tg8fXatgXEBUUe+e1i1aF94kTqcqcS5M+71ce2yHNyxl7U0pGVMOPiFiRVKK8x/7
+wE2LTaPHhskc8kkKrxoJMbXmn0Oq5wn8xLkidIsVE+AyQ+HbD9C7UAnhABEBAAG0
+NXRlc3Qga2V5IChETyBOT1QgVVNFISkgPHRlc3RAZXhhbXBsZS5uZXQ+IChJTlNF
+Q1VSRSEpiL4EEwECACgFAk2uWIsCGwMFCQABUYAGCwkIBwMCBhUIAgkKCwQWAgMB
+Ah4BAheAAAoJEEi/A6Yee54PGcID/iL1tRDgFnNaNNdEpChbjrWcoCIQOIw2VvYH
+UJY3oiKPWv/f8NMOylFLBG9pjDUd96wkimUvAKccPDwuhwMQq+KTcDPZXm8AeeUX
+IMHmPE33qqvifV9dFGlIGa4a3tmGjJvjhKmNSJGJWG9wRK3C2BrJdQVF9sk2FHXd
+1nlddMRV
+=MxOB
+-----END PGP PUBLIC KEY BLOCK-----
+";
+
+
+my $sshdata = "AAAAB3NzaC1yc2EAAAADAQABAAAAgQCyYbB4CxKJLyjPndaAAMvqGg8sC1rG6s7ggqruYfR7uzGMXhpkwLYPH12rYFxAVFHvntYtWhfeJE6nKnEuTPu9XHtshzcsZe1NKRlTDj4hYkVSivMf+8BNi02jx4bJHPJJCq8aCTG15p9DqucJ/MS5InSLFRPgMkPh2w/Qu1AJ4Q==";
+
+
+my $input = IO::Handle->new();
+my $output = IO::Handle->new();
+my $handles = GnuPG::Handles->new(stdin => $input,
+ stdout => $output,
+ stderr => $output);
+
+my $pid = $gnupg->import_keys(handles => $handles);
+
+$input->write($openpgpdata);
+$input->close();
+waitpid($pid, 0);
+
+my @keys = $gnupg->get_public_keys();
+
+foreach $key (@keys) {
+ my $output = Crypt::Monkeysphere::Keytrans::GnuPGKey_to_OpenSSH_pub($key);
+ is($sshdata, $output);
+}
+
+
+
+
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/msva-perl.git
More information about the Pkg-privacy-commits
mailing list