diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2014-07-22 17:39:09 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2014-07-22 17:39:09 +0200 |
commit | ead5d40a407d8066f509b8b3f1b542b9e893c7d5 (patch) | |
tree | 2b334e0c86e3a0886f2aba8e13d753c86108adad | |
parent | c0476c4acd23740cf7e3fdb1d58ef105d165c659 (diff) | |
download | gnutls-ead5d40a407d8066f509b8b3f1b542b9e893c7d5.tar.gz |
danetool: added option to print the raw entries.
-rw-r--r-- | src/danetool-args.def | 8 | ||||
-rw-r--r-- | src/danetool.c | 37 |
2 files changed, 45 insertions, 0 deletions
diff --git a/src/danetool-args.def b/src/danetool-args.def index 7df44d6a59..f6a4cb7f70 100644 --- a/src/danetool-args.def +++ b/src/danetool-args.def @@ -90,6 +90,14 @@ flag = { }; flag = { + name = print-raw; + descrip = "Print the received DANE data in raw format"; + disabled; + disable = "no"; + doc = "This option will print the received DANE data."; +}; + +flag = { name = tlsa-rr; descrip = "Print the DANE RR data on a certificate or public key"; flags_must = host; diff --git a/src/danetool.c b/src/danetool.c index 82904f87df..7055b94cc1 100644 --- a/src/danetool.c +++ b/src/danetool.c @@ -225,6 +225,43 @@ static void dane_check(const char *host, const char *proto, exit(1); } + if (ENABLED_OPT(PRINT_RAW)) { + unsigned entries; + gnutls_datum_t t; + char **dane_data; + int *dane_data_len; + int secure; + int bogus; + + ret = dane_query_to_raw_tlsa(q, &entries, &dane_data, + &dane_data_len, &secure, &bogus); + if (ret < 0) { + fprintf(stderr, "dane_query_to_raw_tlsa: %s\n", + dane_strerror(ret)); + exit(1); + } + + for (i=0;i<entries;i++) { + char *str; + size_t str_size; + t.data = (void*)dane_data[i]; + t.size = dane_data_len[i]; + + str_size = t.size * 2 + 1; + str = gnutls_malloc(str_size); + + ret = gnutls_hex_encode(&t, str, &str_size); + if (ret < 0) { + fprintf(stderr, "gnutls_hex_encode: %s\n", + dane_strerror(ret)); + exit(1); + } + fprintf(outfile, "[%u]: %s\n", i, str); + gnutls_free(str); + } + fprintf(outfile, "\n"); + } + entries = dane_query_entries(q); for (i = 0; i < entries; i++) { ret = dane_query_data(q, i, &usage, &type, &match, &data); |