From b36e3af1f715eaebefc4a3b97c7ec5a7e0b8990c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Mon, 6 Feb 2023 20:36:45 +0100 Subject: Move ocb_aes128_ctx and nettle_ocb_aes128 to nettle-internal.{c,h} for now. --- Makefile.in | 2 +- nettle-internal.c | 59 +++++++++++++++++++++++++++++++ nettle-internal.h | 15 ++++++++ ocb-aes128-meta.c | 98 ---------------------------------------------------- ocb-internal.h | 46 ------------------------ testsuite/ocb-test.c | 1 - 6 files changed, 75 insertions(+), 146 deletions(-) delete mode 100644 ocb-aes128-meta.c delete mode 100644 ocb-internal.h diff --git a/Makefile.in b/Makefile.in index 70fb24df..081337a8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -134,7 +134,7 @@ nettle_SOURCES = aes-decrypt-internal.c aes-decrypt.c aes-decrypt-table.c \ nettle-lookup-hash.c \ nettle-meta-aeads.c nettle-meta-armors.c \ nettle-meta-ciphers.c nettle-meta-hashes.c nettle-meta-macs.c \ - ocb.c ocb-aes128.c ocb-aes128-meta.c \ + ocb.c ocb-aes128.c \ pbkdf2.c pbkdf2-hmac-gosthash94.c pbkdf2-hmac-sha1.c \ pbkdf2-hmac-sha256.c pbkdf2-hmac-sha384.c pbkdf2-hmac-sha512.c \ poly1305-aes.c poly1305-internal.c poly1305-update.c \ diff --git a/nettle-internal.c b/nettle-internal.c index dd293227..5f0f0086 100644 --- a/nettle-internal.c +++ b/nettle-internal.c @@ -248,3 +248,62 @@ nettle_cbc_aes256 = { NULL, NULL, }; + +static void +set_encrypt_key_wrapper (struct ocb_aes128_ctx *ctx, const uint8_t *key) +{ + ocb_aes128_set_encrypt_key(&ctx->key, key); +} + +static void +set_decrypt_key_wrapper (struct ocb_aes128_ctx *ctx, const uint8_t *key) +{ + ocb_aes128_set_decrypt_key(&ctx->key, &ctx->decrypt, key); +} + +static void +set_nonce_wrapper (struct ocb_aes128_ctx *ctx, const uint8_t *nonce) +{ + ocb_aes128_set_nonce (&ctx->ocb, &ctx->key, + OCB_DIGEST_SIZE, OCB_NONCE_SIZE, nonce); +} + +static void +update_wrapper (struct ocb_aes128_ctx *ctx, size_t length, const uint8_t *data) +{ + ocb_aes128_update (&ctx->ocb, &ctx->key, length, data); +} + +static void +encrypt_wrapper (struct ocb_aes128_ctx *ctx, + size_t length, uint8_t *dst, const uint8_t *src) +{ + ocb_aes128_encrypt (&ctx->ocb, &ctx->key, length, dst, src); +} + +static void +decrypt_wrapper (struct ocb_aes128_ctx *ctx, + size_t length, uint8_t *dst, const uint8_t *src) +{ + ocb_aes128_decrypt (&ctx->ocb, &ctx->key, &ctx->decrypt, length, dst, src); +} + +static void +digest_wrapper (struct ocb_aes128_ctx *ctx, size_t length, uint8_t *digest) +{ + ocb_aes128_digest (&ctx->ocb, &ctx->key, length, digest); +} + +const struct nettle_aead +nettle_ocb_aes128 = + { "ocb_aes128", sizeof(struct ocb_aes128_ctx), + OCB_BLOCK_SIZE, AES128_KEY_SIZE, + OCB_NONCE_SIZE, OCB_DIGEST_SIZE, + (nettle_set_key_func *) set_encrypt_key_wrapper, + (nettle_set_key_func *) set_decrypt_key_wrapper, + (nettle_set_key_func *) set_nonce_wrapper, + (nettle_hash_update_func *) update_wrapper, + (nettle_crypt_func *) encrypt_wrapper, + (nettle_crypt_func *) decrypt_wrapper, + (nettle_hash_digest_func *) digest_wrapper + }; diff --git a/nettle-internal.h b/nettle-internal.h index bf906c88..c41f3ee0 100644 --- a/nettle-internal.h +++ b/nettle-internal.h @@ -40,6 +40,8 @@ #include #include "nettle-meta.h" +#include "ocb.h" +#include "aes.h" /* For definition of NETTLE_MAX_HASH_CONTEXT_SIZE. */ #include "sha3.h" @@ -127,4 +129,17 @@ extern const struct nettle_hash nettle_openssl_sha1; extern const struct nettle_hash * const _nettle_hashes[]; +/* OCB-declarations to be moved to a public header file, once it's + settled which nonce and tag sizes to use. */ +#define OCB_NONCE_SIZE 12 + +struct ocb_aes128_ctx +{ + struct ocb_ctx ocb; + struct ocb_aes128_encrypt_key key; + struct aes128_ctx decrypt; +}; + +extern const struct nettle_aead nettle_ocb_aes128; + #endif /* NETTLE_INTERNAL_H_INCLUDED */ diff --git a/ocb-aes128-meta.c b/ocb-aes128-meta.c deleted file mode 100644 index 26f791fa..00000000 --- a/ocb-aes128-meta.c +++ /dev/null @@ -1,98 +0,0 @@ -/* ocb-aes128-meta.c - - Copyright (C) 2021 Niels Möller - - This file is part of GNU Nettle. - - GNU Nettle is free software: you can redistribute it and/or - modify it under the terms of either: - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your - option) any later version. - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at your - option) any later version. - - or both in parallel, as here. - - GNU Nettle is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see http://www.gnu.org/licenses/. -*/ - -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include "aes.h" -#include "ocb.h" -#include "ocb-internal.h" -#include "nettle-meta.h" - -static void -set_encrypt_key_wrapper (struct ocb_aes128_ctx *ctx, const uint8_t *key) -{ - ocb_aes128_set_encrypt_key(&ctx->key, key); -} - -static void -set_decrypt_key_wrapper (struct ocb_aes128_ctx *ctx, const uint8_t *key) -{ - ocb_aes128_set_decrypt_key(&ctx->key, &ctx->decrypt, key); -} - -static void -set_nonce_wrapper (struct ocb_aes128_ctx *ctx, const uint8_t *nonce) -{ - ocb_aes128_set_nonce (&ctx->ocb, &ctx->key, - OCB_DIGEST_SIZE, OCB_NONCE_SIZE, nonce); -} - -static void -update_wrapper (struct ocb_aes128_ctx *ctx, size_t length, const uint8_t *data) -{ - ocb_aes128_update (&ctx->ocb, &ctx->key, length, data); -} - -static void -encrypt_wrapper (struct ocb_aes128_ctx *ctx, - size_t length, uint8_t *dst, const uint8_t *src) -{ - ocb_aes128_encrypt (&ctx->ocb, &ctx->key, length, dst, src); -} - -static void -decrypt_wrapper (struct ocb_aes128_ctx *ctx, - size_t length, uint8_t *dst, const uint8_t *src) -{ - ocb_aes128_decrypt (&ctx->ocb, &ctx->key, &ctx->decrypt, length, dst, src); -} - -static void -digest_wrapper (struct ocb_aes128_ctx *ctx, size_t length, uint8_t *digest) -{ - ocb_aes128_digest (&ctx->ocb, &ctx->key, length, digest); -} - -const struct nettle_aead -nettle_ocb_aes128 = - { "ocb_aes128", sizeof(struct ocb_aes128_ctx), - OCB_BLOCK_SIZE, AES128_KEY_SIZE, - OCB_NONCE_SIZE, OCB_DIGEST_SIZE, - (nettle_set_key_func *) set_encrypt_key_wrapper, - (nettle_set_key_func *) set_decrypt_key_wrapper, - (nettle_set_key_func *) set_nonce_wrapper, - (nettle_hash_update_func *) update_wrapper, - (nettle_crypt_func *) encrypt_wrapper, - (nettle_crypt_func *) decrypt_wrapper, - (nettle_hash_digest_func *) digest_wrapper - }; diff --git a/ocb-internal.h b/ocb-internal.h deleted file mode 100644 index 2e49dcac..00000000 --- a/ocb-internal.h +++ /dev/null @@ -1,46 +0,0 @@ -/* ocb-internal.c - - Copyright (C) 2023 Niels Möller - - This file is part of GNU Nettle. - - GNU Nettle is free software: you can redistribute it and/or - modify it under the terms of either: - - * the GNU Lesser General Public License as published by the Free - Software Foundation; either version 3 of the License, or (at your - option) any later version. - - or - - * the GNU General Public License as published by the Free - Software Foundation; either version 2 of the License, or (at your - option) any later version. - - or both in parallel, as here. - - GNU Nettle is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received copies of the GNU General Public License and - the GNU Lesser General Public License along with this program. If - not, see http://www.gnu.org/licenses/. -*/ - -#ifndef NETTLE_OCB_INTERNAL_H_INCLUDED -#define NETTLE_OCB_INTERNAL_H_INCLUDED - -#include "ocb.h" - -#define OCB_NONCE_SIZE 12 - -struct ocb_aes128_ctx -{ - struct ocb_ctx ocb; - struct ocb_aes128_encrypt_key key; - struct aes128_ctx decrypt; -}; - -#endif /*NETTLE_OCB_INTERNAL_H_INCLUDED */ diff --git a/testsuite/ocb-test.c b/testsuite/ocb-test.c index 10821cf0..ecc73f62 100644 --- a/testsuite/ocb-test.c +++ b/testsuite/ocb-test.c @@ -1,6 +1,5 @@ #include "testutils.h" #include "nettle-internal.h" -#include "ocb-internal.h" /* For 96-bit tag */ static void -- cgit v1.2.1