Password example extended to include PKCS8 58/72358/2
authorLukasz Pawelczyk <l.pawelczyk@samsung.com>
Tue, 31 May 2016 13:06:36 +0000 (15:06 +0200)
committerLukasz Pawelczyk <l.pawelczyk@samsung.com>
Wed, 1 Jun 2016 09:12:11 +0000 (11:12 +0200)
Change-Id: I507ae76e16bfcc2a276e8d681e5a511da623daa4

examples/key_password.c

index 7890464..772aca3 100644 (file)
 #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;
 }