Some assembler are allergic to lea reg,BYTE PTR[...].
[openssl.git] / apps / pkcs12.c
index 9fa33f64dc8fe7c3ad93f856e8bb21e4a05ee3f9..1a63bf2ea41249df90818bed33e1bf50799ac4b1 100644 (file)
@@ -155,10 +155,13 @@ int MAIN(int argc, char **argv)
                        cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
                else if (!strcmp (*args, "-export")) export_cert = 1;
                else if (!strcmp (*args, "-des")) enc=EVP_des_cbc();
+               else if (!strcmp (*args, "-des3")) enc = EVP_des_ede3_cbc();
 #ifndef OPENSSL_NO_IDEA
                else if (!strcmp (*args, "-idea")) enc=EVP_idea_cbc();
 #endif
-               else if (!strcmp (*args, "-des3")) enc = EVP_des_ede3_cbc();
+#ifndef OPENSSL_NO_SEED
+               else if (!strcmp(*args, "-seed")) enc=EVP_seed_cbc();
+#endif
 #ifndef OPENSSL_NO_AES
                else if (!strcmp(*args,"-aes128")) enc=EVP_aes_128_cbc();
                else if (!strcmp(*args,"-aes192")) enc=EVP_aes_192_cbc();
@@ -293,6 +296,9 @@ int MAIN(int argc, char **argv)
 #ifndef OPENSSL_NO_IDEA
        BIO_printf (bio_err, "-idea         encrypt private keys with idea\n");
 #endif
+#ifndef OPENSSL_NO_SEED
+       BIO_printf (bio_err, "-seed         encrypt private keys with seed\n");
+#endif
 #ifndef OPENSSL_NO_AES
        BIO_printf (bio_err, "-aes128, -aes192, -aes256\n");
        BIO_printf (bio_err, "              encrypt PEM output with cbc aes\n");
@@ -303,11 +309,14 @@ int MAIN(int argc, char **argv)
 #endif
        BIO_printf (bio_err, "-nodes        don't encrypt private keys\n");
        BIO_printf (bio_err, "-noiter       don't use encryption iteration\n");
+       BIO_printf (bio_err, "-nomaciter    don't use MAC iteration\n");
        BIO_printf (bio_err, "-maciter      use MAC iteration\n");
+       BIO_printf (bio_err, "-nomac        don't generate MAC\n");
        BIO_printf (bio_err, "-twopass      separate MAC, encryption passwords\n");
        BIO_printf (bio_err, "-descert      encrypt PKCS#12 certificates with triple DES (default RC2-40)\n");
        BIO_printf (bio_err, "-certpbe alg  specify certificate PBE algorithm (default RC2-40)\n");
        BIO_printf (bio_err, "-keypbe alg   specify private key PBE algorithm (default 3DES)\n");
+       BIO_printf (bio_err, "-macalg alg   digest algorithm used in MAC (default SHA1)\n");
        BIO_printf (bio_err, "-keyex        set MS key exchange type\n");
        BIO_printf (bio_err, "-keysig       set MS key signature type\n");
        BIO_printf (bio_err, "-password p   set import/export password source\n");
@@ -319,6 +328,7 @@ int MAIN(int argc, char **argv)
        BIO_printf(bio_err,  "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
        BIO_printf(bio_err,  "              load the file (or the files in the directory) into\n");
        BIO_printf(bio_err,  "              the random number generator\n");
+       BIO_printf(bio_err,  "-CSP name     Microsoft CSP name\n");
        goto end;
     }
 
@@ -459,7 +469,7 @@ int MAIN(int argc, char **argv)
                                        X509_keyid_set1(ucert, NULL, 0);
                                        X509_alias_set1(ucert, NULL, 0);
                                        /* Remove from list */
-                                       sk_X509_delete(certs, i);
+                                       (void)sk_X509_delete(certs, i);
                                        break;
                                        }
                                }
@@ -524,8 +534,11 @@ int MAIN(int argc, char **argv)
                    X509_free(sk_X509_value(chain2, 0));
                    sk_X509_free(chain2);
                } else {
-                       BIO_printf (bio_err, "Error %s getting chain.\n",
+                       if (vret >= 0)
+                               BIO_printf (bio_err, "Error %s getting chain.\n",
                                        X509_verify_cert_error_string(vret));
+                       else
+                               ERR_print_errors(bio_err);
                        goto export_end;
                }                       
        }
@@ -809,7 +822,7 @@ int get_cert_chain (X509 *cert, X509_STORE *store, STACK_OF(X509) **chain)
 {
        X509_STORE_CTX store_ctx;
        STACK_OF(X509) *chn;
-       int i;
+       int i = 0;
 
        /* FIXME: Should really check the return status of X509_STORE_CTX_init
         * for an error, but how that fits into the return value of this
@@ -817,14 +830,17 @@ int get_cert_chain (X509 *cert, X509_STORE *store, STACK_OF(X509) **chain)
        X509_STORE_CTX_init(&store_ctx, store, cert, NULL);
        if (X509_verify_cert(&store_ctx) <= 0) {
                i = X509_STORE_CTX_get_error (&store_ctx);
+               if (i == 0)
+                       /* avoid returning 0 if X509_verify_cert() did not
+                        * set an appropriate error value in the context */
+                       i = -1;
+               chn = NULL;
                goto err;
-       }
-       chn =  X509_STORE_CTX_get1_chain(&store_ctx);
-       i = 0;
-       *chain = chn;
+       } else
+               chn = X509_STORE_CTX_get1_chain(&store_ctx);
 err:
        X509_STORE_CTX_cleanup(&store_ctx);
-       *chain = NULL;
+       *chain = chn;
        
        return i;
 }