]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
archive_cryptor: silence Nettle 3.5+ warnings
authorMartin Matuska <martin@matuska.org>
Mon, 2 Nov 2020 12:35:03 +0000 (13:35 +0100)
committerMartin Matuska <martin@matuska.org>
Mon, 2 Nov 2020 12:35:03 +0000 (13:35 +0100)
libarchive/archive_cryptor.c
libarchive/archive_cryptor_private.h

index 8ab2b0979676235c3a9543869128f2a410b48704..486e2999d579d33c03d47114dc26329087005073 100644 (file)
@@ -347,8 +347,35 @@ aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
 static int
 aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
 {
+#if NETTLE_VERSION_MAJOR < 3 || \
+       (NETTLE_VERSION_MAJOR == 3 && NETTLE_VERSION_MINOR < 5)
        aes_set_encrypt_key(&ctx->ctx, ctx->key_len, ctx->key);
        aes_encrypt(&ctx->ctx, AES_BLOCK_SIZE, ctx->encr_buf, ctx->nonce);
+#else
+       switch(ctx->key_len) {
+       case 16:
+               aes128_set_encrypt_key((struct aes128_ctx *)&ctx->ctx.u.ctx128,
+                   ctx->key);
+               aes128_encrypt((struct aes128_ctx *)&ctx->ctx.u.ctx128,
+                   AES_BLOCK_SIZE, ctx->encr_buf, ctx->nonce);
+               break;
+       case 24:
+               aes192_set_encrypt_key((struct aes192_ctx *)&ctx->ctx.u.ctx192,
+                   ctx->key);
+               aes192_encrypt((struct aes192_ctx *)&ctx->ctx.u.ctx192,
+                   AES_BLOCK_SIZE, ctx->encr_buf, ctx->nonce);
+               break;
+       case 32:
+               aes256_set_encrypt_key((struct aes256_ctx *)&ctx->ctx.u.ctx256,
+                   ctx->key);
+               aes256_encrypt((struct aes256_ctx *)&ctx->ctx.u.ctx256,
+                   AES_BLOCK_SIZE, ctx->encr_buf, ctx->nonce);
+               break;
+       default:
+               return -1;
+               break;
+       }
+#endif
        return 0;
 }
 
index 64a20556a3996317500d853c8993a7cafe9a58b6..bcd6c5839cc7164c1728414394e3ac805aa7459e 100644 (file)
@@ -104,6 +104,7 @@ typedef struct {
 #include <nettle/pbkdf2.h>
 #endif
 #include <nettle/aes.h>
+#include <nettle/version.h>
 
 typedef struct {
        struct aes_ctx  ctx;