Ticket #11464: tor-certkey.c

File tor-certkey.c, 1.3 KB (added by nickm, 5 years ago)

kludgy tool to find cert signing keys.

Line 
1#include "or.h"
2#include "config.h"
3#include "routerparse.h"
4#include <stdio.h>
5
6static void
7dump_digest(const char *filename)
8{
9  authority_cert_t *cert;
10  char *s = read_file_to_str(filename, 0, NULL);
11  if (!s) {
12    perror("can't read!"); return;
13  }
14  if (!strcmpstart(s, "@type dir-key-certificate")) {
15    s = strchr(s, '\n');
16    if (!s) { fprintf(stderr, "wtf annotation\n"); return; }
17    ++s;
18  }
19
20  cert = authority_cert_parse_from_string(s, NULL);
21  if (!cert) {
22    fprintf(stderr,"Can't parse cert!\n"); return;
23  }
24
25  printf("%s\n", hex_str(cert->signing_key_digest, DIGEST_LEN));
26
27  /* leaks! */
28}
29
30char tor_git_revision[] = "";
31
32int main(int c, char **v)
33{
34  or_options_t *options;
35  int i;
36  char *errmsg = NULL;
37
38  update_approx_time(time(NULL));
39  tor_threads_init();
40  init_logging();
41  crypto_global_init(0,NULL,NULL);
42
43  {
44    log_severity_list_t s;
45    memset(&s, 0, sizeof(s));
46    set_log_severity_config(LOG_NOTICE, LOG_ERR, &s);
47    add_stream_log(&s, "", fileno(stdout));
48  }
49  options = options_new();
50  options_init(options);
51  options->DataDirectory = tor_strdup(".");
52  options->EntryStatistics = 1;
53  options->command = CMD_RUN_UNITTESTS;
54  if (set_options(options, &errmsg) < 0) {
55    printf("Failed to set initial options: %s\n", errmsg);
56    tor_free(errmsg);
57    return 1;
58  }
59
60  for (i=1;i<c;++i) {
61    dump_digest(v[i]);
62  }
63  return 0;
64}