|
@@ -1,77 +0,0 @@
|
|
|
-/* Copyright 2006 Nick Mathewson; see LICENSE for licensing information */
|
|
|
-
|
|
|
-/* 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 <openssl/rsa.h>
|
|
|
-#include <openssl/bio.h>
|
|
|
-#include <openssl/sha.h>
|
|
|
-#include <openssl/pem.h>
|
|
|
-
|
|
|
-#include <stdio.h>
|
|
|
-#include <stdlib.h>
|
|
|
-#include <string.h>
|
|
|
-
|
|
|
-#define die(s) do { fprintf(stderr, "%s\n", s); goto err; } while (0)
|
|
|
-
|
|
|
-int
|
|
|
-main(int argc, char **argv)
|
|
|
-{
|
|
|
- BIO *b = NULL;
|
|
|
- RSA *key = NULL;
|
|
|
- unsigned char *buf = NULL, *bufp;
|
|
|
- int len, i;
|
|
|
- unsigned char digest[20];
|
|
|
- int status = 1;
|
|
|
-
|
|
|
- if (argc < 2) {
|
|
|
- fprintf(stderr, "Reading key from stdin...\n");
|
|
|
- if (!(b = BIO_new_fp(stdin, BIO_NOCLOSE)))
|
|
|
- die("couldn't read from stdin");
|
|
|
- } else if (argc == 2) {
|
|
|
- if (strcmp(argv[1], "-h") == 0 ||
|
|
|
- strcmp(argv[1], "--help") == 0) {
|
|
|
- fprintf(stdout, "Usage: %s [keyfile]\n", argv[0]);
|
|
|
- status = 0;
|
|
|
- goto err;
|
|
|
- } else {
|
|
|
- if (!(b = BIO_new_file(argv[1], "r")))
|
|
|
- die("couldn't open file");
|
|
|
- }
|
|
|
- } else {
|
|
|
- fprintf(stderr, "Usage: %s [keyfile]\n", argv[0]);
|
|
|
- goto err;
|
|
|
- }
|
|
|
- if (!(key = PEM_read_bio_RSAPrivateKey(b, NULL, NULL, NULL)))
|
|
|
- die("couldn't parse key");
|
|
|
-
|
|
|
- len = i2d_RSAPublicKey(key, NULL);
|
|
|
- if (len < 0)
|
|
|
- die("Bizarre key");
|
|
|
- bufp = buf = malloc(len+1);
|
|
|
- if (!buf)
|
|
|
- die("Out of memory");
|
|
|
- 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");
|
|
|
-
|
|
|
- status = 0;
|
|
|
-
|
|
|
-err:
|
|
|
- if (buf)
|
|
|
- free(buf);
|
|
|
- if (key)
|
|
|
- RSA_free(key);
|
|
|
- if (b)
|
|
|
- BIO_free(b);
|
|
|
- return status;
|
|
|
-}
|
|
|
-
|