summaryrefslogtreecommitdiff
path: root/src/tpmtool.c
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2012-07-21 22:11:38 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2012-07-21 22:11:38 +0200
commit67b3de5fe34d022593ed9ce216122c10a9c4679d (patch)
tree05d96fd67e5186fca9e7d6c3a793f995b6d88b45 /src/tpmtool.c
parent8dedcd323bd0e93313e5f48cdbcb93115e2da6a8 (diff)
downloadgnutls-67b3de5fe34d022593ed9ce216122c10a9c4679d.tar.gz
tpmtool now accepts the --inder and --outder options.
Diffstat (limited to 'src/tpmtool.c')
-rw-r--r--src/tpmtool.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/tpmtool.c b/src/tpmtool.c
index edd219a056..25cee8e4c5 100644
--- a/src/tpmtool.c
+++ b/src/tpmtool.c
@@ -55,6 +55,9 @@ static void tpm_pubkey(const char* url, FILE* outfile);
static void tpm_delete(const char* url, FILE* outfile);
static void tpm_list(FILE* outfile);
+static gnutls_x509_crt_fmt_t incert_format, outcert_format;
+static gnutls_tpmkey_fmt_t inkey_format, outkey_format;
+
static FILE *outfile;
static FILE *infile;
int batch = 0;
@@ -95,6 +98,28 @@ cmd_parser (int argc, char **argv)
if (HAVE_OPT(DEBUG))
debug = OPT_VALUE_DEBUG;
+ if (HAVE_OPT(INDER))
+ {
+ incert_format = GNUTLS_X509_FMT_DER;
+ inkey_format = GNUTLS_TPMKEY_FMT_DER;
+ }
+ else
+ {
+ incert_format = GNUTLS_X509_FMT_PEM;
+ inkey_format = GNUTLS_TPMKEY_FMT_PEM;
+ }
+
+ if (HAVE_OPT(OUTDER))
+ {
+ outcert_format = GNUTLS_X509_FMT_DER;
+ outkey_format = GNUTLS_TPMKEY_FMT_DER;
+ }
+ else
+ {
+ outcert_format = GNUTLS_X509_FMT_PEM;
+ outkey_format = GNUTLS_TPMKEY_FMT_PEM;
+ }
+
if (HAVE_OPT(REGISTER))
genflags |= GNUTLS_TPM_REGISTER_KEY;
if (!HAVE_OPT(LEGACY))
@@ -177,7 +202,8 @@ static void tpm_generate(FILE* outfile, unsigned int key_type, unsigned int bits
key_pass = strdup(srk_pass);
ret = gnutls_tpm_privkey_generate(key_type, bits, srk_pass, key_pass,
- GNUTLS_X509_FMT_PEM, &privkey, &pubkey,
+ outkey_format, outcert_format,
+ &privkey, &pubkey,
flags);
free(key_pass);