From: Christian Grothoff Date: Thu, 15 Mar 2012 10:59:49 +0000 (+0000) Subject: add -P option for printing peer identities with gnunet-rsa X-Git-Tag: initial-import-from-subversion-38251~14253 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=06ab78ee651fdda7cf37a7c012445bb087060a05;p=oweals%2Fgnunet.git add -P option for printing peer identities with gnunet-rsa --- diff --git a/doc/man/gnunet-rsa.1 b/doc/man/gnunet-rsa.1 index 3d9aae8af..f3b1df3d3 100644 --- a/doc/man/gnunet-rsa.1 +++ b/doc/man/gnunet-rsa.1 @@ -1,4 +1,4 @@ -.TH GNUNET\-RSA 1 "Jan 4, 2012" "GNUnet" +.TH GNUNET\-RSA 1 "Mar 15, 2012" "GNUnet" .SH NAME gnunet\-rsa \- manipulate GNUnet RSA key files @@ -13,8 +13,11 @@ gnunet\-rsa \- manipulate GNUnet RSA key files .SH OPTIONS .B -.IP "\-p, \-\-print" -Print the corresponding public key (to stdout). +.IP "\-p, \-\-print-public-key" +Print the corresponding public key to stdout. +.B +.IP "\-P, \-\-print-peer-identity" +Print the corresponding peer identity (hash of the public key) to stdout. .B .IP "\-c FILENAME, \-\-config=FILENAME" Use the configuration file FILENAME. diff --git a/src/util/gnunet-rsa.c b/src/util/gnunet-rsa.c index 2dd1f376f..bfd854e65 100644 --- a/src/util/gnunet-rsa.c +++ b/src/util/gnunet-rsa.c @@ -28,9 +28,14 @@ /** - * Flag for reverse lookup. + * Flag for printing public key. */ -static int print; +static int print_public_key; + +/** + * Flag for printing hash of public key. + */ +static int print_peer_identity; /** @@ -47,7 +52,7 @@ run (void *cls, char *const *args, const char *cfgfile, { struct GNUNET_CRYPTO_RsaPrivateKey *pk; struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded pub; - char *s; + struct GNUNET_PeerIdentity pid; if (NULL == args[0]) { @@ -55,13 +60,24 @@ run (void *cls, char *const *args, const char *cfgfile, return; } pk = GNUNET_CRYPTO_rsa_key_create_from_file (args[0]); - if (print) + if (print_public_key) { + char *s; + GNUNET_CRYPTO_rsa_key_get_public (pk, &pub); s = GNUNET_CRYPTO_rsa_public_key_to_string (&pub); fprintf (stdout, "%s\n", s); GNUNET_free (s); } + if (print_peer_identity) + { + struct GNUNET_CRYPTO_HashAsciiEncoded enc; + + GNUNET_CRYPTO_rsa_key_get_public (pk, &pub); + GNUNET_CRYPTO_hash (&pub, sizeof (pub), &pid.hashPubKey); + GNUNET_CRYPTO_hash_to_enc (&pid.hashPubKey, &enc); + fprintf (stdout, "%s\n", enc.encoding); + } GNUNET_CRYPTO_rsa_key_free (pk); } @@ -77,9 +93,12 @@ int main (int argc, char *const *argv) { static const struct GNUNET_GETOPT_CommandLineOption options[] = { - { 'p', "print", NULL, + { 'p', "print-public-key", NULL, gettext_noop ("print the public key in ASCII format"), - 0, &GNUNET_GETOPT_set_one, &print }, + 0, &GNUNET_GETOPT_set_one, &print_public_key }, + { 'P', "print-peer-identity", NULL, + gettext_noop ("print the hash of the public key in ASCII format"), + 0, &GNUNET_GETOPT_set_one, &print_peer_identity }, GNUNET_GETOPT_OPTION_END }; return (GNUNET_OK ==