From 8870621e1de271894efd70b034d4dcc8855d20a2 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Tue, 12 Sep 2006 18:05:54 +0000 Subject: r8785@Kushana: nickm | 2006-09-12 14:05:46 -0400 Add non-dist utility for weasel svn:r8373 --- contrib/id_to_fp.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 contrib/id_to_fp.c (limited to 'contrib/id_to_fp.c') diff --git a/contrib/id_to_fp.c b/contrib/id_to_fp.c new file mode 100644 index 000000000..c8f74ff16 --- /dev/null +++ b/contrib/id_to_fp.c @@ -0,0 +1,50 @@ +/* Copyright 2006 Nick Mathewson; see LICENSE for licensing information */ +/* $Id$ */ + +/* id_to_fp.c : Helper for directory authority ops. When somebody sends us + * a private key, this utility converts the private key into a fingerprint + * so you can de-list that fingerprint. + */ + +#include +#include +#include +#include + +#include +#include + +#define die(s) do { fprintf(stderr, s "\n"); return 1; } while (0) + +int +main(int argc, char **argv) +{ + BIO *b; + RSA *key; + unsigned char *buf, *bufp; + int len, i; + unsigned char digest[20]; + + if (argc != 2) + die("I want a filename"); + if (!(b = BIO_new_file(argv[1], "r"))) + die("couldn't open file"); + + if (!(key = PEM_read_bio_RSAPrivateKey(b, NULL, NULL, NULL))) + die("couldn't parse key"); + + len = i2d_RSAPublicKey(key, NULL); + bufp = buf = malloc(len+1); + len = i2d_RSAPublicKey(key, &bufp); + if (len < 0) + die("Bizarre key"); + + SHA1(buf, len, digest); + for (i=0; i < 20; i += 2) { + printf("%02X%02X ", (int)digest[i], (int)digest[i+1]); + } + printf("\n"); + + return 0; +} + -- cgit v1.2.3