added openssl initialization and error reporting
authorDmitry Kasatkin <dmitry.kasatkin@intel.com>
Wed, 1 Feb 2012 08:29:33 +0000 (10:29 +0200)
committerDmitry Kasatkin <dmitry.kasatkin@intel.com>
Thu, 6 Sep 2012 11:08:52 +0000 (14:08 +0300)
Added openssl initialization and error reporting.

Signed-off-by: Dmitry Kasatkin <dmitry.kasatkin@intel.com>
src/evmctl.c

index 5fce085..35cdd95 100644 (file)
 #include <dirent.h>
 
 #include <openssl/sha.h>
-#include <openssl/sha.h>
 #include <openssl/rsa.h>
 #include <openssl/pem.h>
 #include <openssl/hmac.h>
+#include <openssl/engine.h>
+#include <openssl/evp.h>
+#include <openssl/err.h>
 
 #define USE_FPRINTF
 
@@ -404,8 +406,6 @@ static int calc_evm_hash(const char *file, const char *keyfile, unsigned char *h
        
        log_info("generation: %u\n", generation);
 
-       OpenSSL_add_all_digests();
-
        md = EVP_get_digestbyname("sha1");
        if (!md) {
                log_errno("EVP_get_digestbyname() failed");
@@ -500,8 +500,6 @@ static int calc_file_hash(const char *file, uint8_t *hash)
                return -1;
        }
        
-       OpenSSL_add_all_digests();
-
        md = EVP_get_digestbyname(hash_algo);
        if (!md) {
                log_errno("EVP_get_digestbyname() failed");
@@ -566,8 +564,6 @@ static int calc_dir_hash(const char *file, uint8_t *hash)
                return -1;
        }
        
-       OpenSSL_add_all_digests();
-
        md = EVP_get_digestbyname(hash_algo);
        if (!md) {
                log_errno("EVP_get_digestbyname() failed");
@@ -1221,10 +1217,19 @@ int main(int argc, char *argv[])
                }
        }
 
+       OpenSSL_add_all_algorithms();
+       ERR_load_crypto_strings();
+
        if (argv[optind] == NULL)
                usage();
        else
                err = call_command(cmds, argv[optind++]);
 
+       if (err)
+               log_err("error: %s\n", ERR_error_string(ERR_get_error(), NULL));
+
+       ERR_free_strings();
+       EVP_cleanup();
+
        return err;
 }