summaryrefslogtreecommitdiff
path: root/src/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common.c')
-rw-r--r--src/common.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/common.c b/src/common.c
index 28452fd589..664513c9ad 100644
--- a/src/common.c
+++ b/src/common.c
@@ -876,6 +876,43 @@ void print_list(const char *priorities, int verbose)
}
}
+void
+print_key_material(gnutls_session_t session, const char *label, size_t size)
+{
+ gnutls_datum_t bin = { NULL, 0 }, hex = { NULL, 0 };
+ int ret;
+
+ bin.data = gnutls_malloc(size);
+ if (!bin.data) {
+ fprintf(stderr, "Error in gnutls_malloc: %s\n",
+ gnutls_strerror(GNUTLS_E_MEMORY_ERROR));
+ goto out;
+ }
+
+ bin.size = size;
+
+ ret = gnutls_prf_rfc5705(session, strlen(label), label,
+ 0, NULL, size, (char *)bin.data);
+ if (ret < 0) {
+ fprintf(stderr, "Error in gnutls_prf_rfc5705: %s\n",
+ gnutls_strerror(ret));
+ goto out;
+ }
+
+ ret = gnutls_hex_encode2(&bin, &hex);
+ if (ret < 0) {
+ fprintf(stderr, "Error in hex encoding: %s\n",
+ gnutls_strerror(ret));
+ goto out;
+ }
+ log_msg(stdout, "- Key material: %s\n", hex.data);
+ fflush(stdout);
+
+ out:
+ gnutls_free(bin.data);
+ gnutls_free(hex.data);
+}
+
int check_command(gnutls_session_t session, const char *str, unsigned no_cli_cert)
{
size_t len = strnlen(str, 128);