From: Wouter Wijngaards Date: Wed, 23 Jun 2010 08:03:59 +0000 (+0000) Subject: Check if libcrypto provides GOST. X-Git-Tag: release-1.6.6~34 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bbb0f0b0d0530fbf2520443ff13df83e6464ef4c;p=thirdparty%2Fldns.git Check if libcrypto provides GOST. --- diff --git a/examples/ldns-key2ds.c b/examples/ldns-key2ds.c index 1c04c328..8c94a44d 100644 --- a/examples/ldns-key2ds.c +++ b/examples/ldns-key2ds.c @@ -92,6 +92,10 @@ main(int argc, char *argv[]) } #ifdef USE_GOST if (strcmp(argv[0], "-g") == 0) { + if(!ldns_key_EVP_load_gost_id()) { + fprintf(stderr, "error: libcrypto does not provide GOST\n"); + exit(EXIT_FAILURE); + } h = LDNS_HASH_GOST; similar_hash = 0; } diff --git a/examples/ldns-keygen.c b/examples/ldns-keygen.c index 9686eb46..905c3eed 100644 --- a/examples/ldns-keygen.c +++ b/examples/ldns-keygen.c @@ -157,6 +157,12 @@ main(int argc, char *argv[]) case LDNS_SIGN_HMACMD5: case LDNS_SIGN_HMACSHA1: case LDNS_SIGN_HMACSHA256: + case LDNS_SIGN_ECC_GOST: + if(!ldns_key_EVP_load_gost_id()) { + fprintf(stderr, "error: libcrypto does not provide GOST\n"); + exit(EXIT_FAILURE); + } + break; default: break; } diff --git a/examples/ldns-signzone.c b/examples/ldns-signzone.c index 258eb5a7..86584d37 100644 --- a/examples/ldns-signzone.c +++ b/examples/ldns-signzone.c @@ -703,7 +703,7 @@ main(int argc, char *argv[]) ldns_key_list_push_key(keys, key); } else { - fprintf(stderr, "Error reading key from %s at line %d\n", argv[argi], line_nr); + fprintf(stderr, "Error reading key from %s at line %d: %s\n", argv[argi], line_nr, ldns_get_errorstr_by_id(s)); } } /* and, if not unset by -p, find or create the corresponding DNSKEY record */ diff --git a/keys.c b/keys.c index 90769c2b..75168607 100644 --- a/keys.c +++ b/keys.c @@ -350,6 +350,10 @@ ldns_key_new_frm_fp_l(ldns_key **key, FILE *fp, int *line_nr) case LDNS_SIGN_ECC_GOST: ldns_key_set_algorithm(k, alg); #if defined(HAVE_SSL) && defined(USE_GOST) + if(!ldns_key_EVP_load_gost_id()) { + ldns_key_free(k); + return LDNS_STATUS_CRYPTO_ALGO_NOT_IMPL; + } ldns_key_set_evp_key(k, ldns_key_new_frm_fp_gost_l(fp, line_nr)); if(!k->_key.key) {