From 2472a7211c77622b674f98b8a84319d178db68cc Mon Sep 17 00:00:00 2001 From: Lukasz Pawelczyk Date: Tue, 31 May 2016 15:06:36 +0200 Subject: [PATCH] Password example extended to include PKCS8 Change-Id: I507ae76e16bfcc2a276e8d681e5a511da623daa4 --- examples/key_password.c | 52 +++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/examples/key_password.c b/examples/key_password.c index 7890464..772aca3 100644 --- a/examples/key_password.c +++ b/examples/key_password.c @@ -25,45 +25,32 @@ #include "misc.h" #include "../src/debug.h" - -int main(int argc, char* argv[]) +void example_password(const yaca_key_h key, yaca_key_fmt_e key_fmt) { - yaca_debug_set_error_cb(debug_func); - - yaca_key_h key = YACA_KEY_NULL; char *k = NULL; size_t kl; int ret; char *password = NULL; - - ret = yaca_init(); - if (ret != YACA_ERROR_NONE) - goto exit; - - ret = yaca_key_gen(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_1024BIT, &key); - if (ret != YACA_ERROR_NONE) - goto exit; + yaca_key_h lkey = YACA_KEY_NULL; ret = read_stdin_line("encryption pass: ", &password); if (ret != YACA_ERROR_NONE) goto exit; - ret = yaca_key_export(key, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_PEM, password, &k, &kl); + ret = yaca_key_export(key, key_fmt, YACA_KEY_FILE_FORMAT_PEM, password, &k, &kl); if (ret != YACA_ERROR_NONE) goto exit; yaca_free(password); - yaca_key_free(key); password = NULL; - key = YACA_KEY_NULL; - ret = yaca_key_import(YACA_KEY_TYPE_RSA_PRIV, NULL, k, kl, &key); + ret = yaca_key_import(YACA_KEY_TYPE_RSA_PRIV, NULL, k, kl, &lkey); if (ret == YACA_ERROR_PASSWORD_INVALID) { ret = read_stdin_line("decryption pass: ", &password); if (ret != YACA_ERROR_NONE) goto exit; - ret = yaca_key_import(YACA_KEY_TYPE_RSA_PRIV, password, k, kl, &key); + ret = yaca_key_import(YACA_KEY_TYPE_RSA_PRIV, password, k, kl, &lkey); if (ret == YACA_ERROR_PASSWORD_INVALID) printf("invalid password\n"); @@ -77,7 +64,7 @@ int main(int argc, char* argv[]) yaca_free(k); k = NULL; - ret = yaca_key_export(key, YACA_KEY_FORMAT_DEFAULT, YACA_KEY_FILE_FORMAT_PEM, NULL, &k, &kl); + ret = yaca_key_export(lkey, key_fmt, YACA_KEY_FILE_FORMAT_PEM, NULL, &k, &kl); if (ret != YACA_ERROR_NONE) goto exit; @@ -86,9 +73,32 @@ int main(int argc, char* argv[]) exit: yaca_free(k); yaca_free(password); - yaca_key_free(key); + yaca_key_free(lkey); +} + +int main(int argc, char* argv[]) +{ + int ret; + yaca_key_h key = YACA_KEY_NULL; + yaca_debug_set_error_cb(debug_func); + + ret = yaca_init(); + if (ret != YACA_ERROR_NONE) + goto exit; + + ret = yaca_key_gen(YACA_KEY_TYPE_RSA_PRIV, YACA_KEY_1024BIT, &key); + if (ret != YACA_ERROR_NONE) + goto exit; + + printf("Default format:\n"); + example_password(key, YACA_KEY_FORMAT_DEFAULT); + printf("\nPKCS8 format:\n"); + example_password(key, YACA_KEY_FORMAT_PKCS8); + +exit: + yaca_key_free(key); yaca_exit(); - return YACA_ERROR_NONE; + return 0; } -- 2.7.4