summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2023-02-06 20:36:45 +0100
committerNiels Möller <nisse@lysator.liu.se>2023-02-06 20:36:45 +0100
commitb36e3af1f715eaebefc4a3b97c7ec5a7e0b8990c (patch)
treeb2e44550c0083127d85f08c9ea4ada60f8bd953c
parentfbad65a2d94860e3a3be0769f5a92f51f203604e (diff)
downloadnettle-ocb-mode.tar.gz
Move ocb_aes128_ctx and nettle_ocb_aes128 to nettle-internal.{c,h} for now.ocb-mode
-rw-r--r--Makefile.in2
-rw-r--r--nettle-internal.c59
-rw-r--r--nettle-internal.h15
-rw-r--r--ocb-aes128-meta.c98
-rw-r--r--ocb-internal.h46
-rw-r--r--testsuite/ocb-test.c1
6 files changed, 75 insertions, 146 deletions
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 <stdlib.h>
#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