diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-05-24 06:19:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2023-05-24 06:19:41 +0000 |
commit | cd62ffe686f9779e440aa6394e6c3476dca43b6f (patch) | |
tree | 9c5665b1259fdb884b1863b9a53106f7ebc607f2 /src/tsig.c | |
parent | Adding upstream version 2.11.2. (diff) | |
download | dnsperf-cd62ffe686f9779e440aa6394e6c3476dca43b6f.tar.xz dnsperf-cd62ffe686f9779e440aa6394e6c3476dca43b6f.zip |
Adding upstream version 2.12.0.upstream/2.12.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/tsig.c')
-rw-r--r-- | src/tsig.c | 43 |
1 files changed, 37 insertions, 6 deletions
@@ -183,15 +183,27 @@ perf_tsigkey_t* perf_tsig_parsekey(const char* arg) perf_log_fatal("unable to setup TSIG, OpenSSL HMAC context failed to be created"); } HMAC_CTX_init(tsigkey->hmac); -#else +#elif OPENSSL_VERSION_NUMBER < 0x30000000L if (!(tsigkey->hmac = HMAC_CTX_new())) { perf_log_fatal("unable to setup TSIG, OpenSSL HMAC context failed to be created"); } +#else + if (!(tsigkey->pkey = EVP_PKEY_new_raw_private_key(EVP_PKEY_HMAC, 0, key, keylen))) { + perf_log_fatal("unable to setup TSIG, OpenSSL EVP PKEY failed to be created"); + } + if (!(tsigkey->mdctx = EVP_MD_CTX_create())) { + perf_log_fatal("unable to setup TSIG, OpenSSL EVP MD context failed to be created"); + } + if (!EVP_DigestSignInit(tsigkey->mdctx, 0, md, 0, tsigkey->pkey)) { + perf_log_fatal("unable to setup TSIG, OpenSSL EVP DigestSign init failed"); + } #endif +#if OPENSSL_VERSION_NUMBER < 0x30000000L if (!HMAC_Init_ex(tsigkey->hmac, key, keylen, md, 0)) { perf_log_fatal("unable to setup TSIG, OpenSSL HMAC init failed"); } +#endif free(key); @@ -206,8 +218,11 @@ void perf_tsig_destroykey(perf_tsigkey_t** tsigkeyp) #if OPENSSL_VERSION_NUMBER < 0x10100000L HMAC_CTX_cleanup((*tsigkeyp)->hmac); free((*tsigkeyp)->hmac); -#else +#elif OPENSSL_VERSION_NUMBER < 0x30000000L HMAC_CTX_free((*tsigkeyp)->hmac); +#else + EVP_MD_CTX_free((*tsigkeyp)->mdctx); + EVP_PKEY_free((*tsigkeyp)->pkey); #endif free(*tsigkeyp); @@ -222,20 +237,27 @@ perf_result_t perf_add_tsig(perf_buffer_t* packet, perf_tsigkey_t* tsigkey) unsigned char* base; size_t rdlen, totallen; unsigned char tmpdata[512], md[EVP_MAX_MD_SIZE]; - unsigned int mdlen; perf_buffer_t tmp; uint32_t now; perf_result_t result; now = time(NULL); +#if OPENSSL_VERSION_NUMBER < 0x30000000L if (!HMAC_Init_ex(tsigkey->hmac, 0, 0, 0, 0)) { perf_log_fatal("adding TSIG: OpenSSL HMAC reinit failed"); } - if (!HMAC_Update(tsigkey->hmac, perf_buffer_base(packet), perf_buffer_usedlength(packet))) { perf_log_fatal("adding TSIG: OpenSSL HMAC update failed"); } +#else + if (!EVP_DigestSignInit(tsigkey->mdctx, 0, 0, 0, 0)) { + perf_log_fatal("adding TSIG: OpenSSL EVP DigestSign reinit failed"); + } + if (!EVP_DigestSignUpdate(tsigkey->mdctx, perf_buffer_base(packet), perf_buffer_usedlength(packet))) { + perf_log_fatal("adding TSIG: OpenSSL EVP DigestSign update failed"); + } +#endif /* Digest the TSIG record */ perf_buffer_init(&tmp, tmpdata, sizeof tmpdata); @@ -267,14 +289,23 @@ perf_result_t perf_add_tsig(perf_buffer_t* packet, perf_tsigkey_t* tsigkey) perf_buffer_putuint16(&tmp, 0); /* error */ perf_buffer_putuint16(&tmp, 0); /* other length */ +#if OPENSSL_VERSION_NUMBER < 0x30000000L + unsigned int mdlen = sizeof(md); if (!HMAC_Update(tsigkey->hmac, perf_buffer_base(&tmp), perf_buffer_usedlength(&tmp))) { perf_log_fatal("adding TSIG: OpenSSL HMAC update failed"); } - - mdlen = sizeof(md); if (!HMAC_Final(tsigkey->hmac, md, &mdlen)) { perf_log_fatal("adding TSIG: OpenSSL HMAC final failed"); } +#else + size_t mdlen = sizeof(md); + if (!EVP_DigestSignUpdate(tsigkey->mdctx, perf_buffer_base(&tmp), perf_buffer_usedlength(&tmp))) { + perf_log_fatal("adding TSIG: OpenSSL EVP DigestSign update failed"); + } + if (!EVP_DigestSignFinal(tsigkey->mdctx, md, &mdlen)) { + perf_log_fatal("adding TSIG: OpenSSL EVP DigestSign final failed"); + } +#endif /* Make sure everything will fit */ rdlen = tsigkey->alglen + 18 + mdlen; |