From e6df06c600b25fb455a9d3cbe386df073359752e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Wed, 26 Dec 2018 16:18:09 +0100 Subject: [PATCH] New header file pkcs1-internal.h --- ChangeLog | 10 ++++++ Makefile.in | 2 +- pkcs1-decrypt.c | 2 +- pkcs1-internal.h | 53 ++++++++++++++++++++++++++++++ pkcs1-sec-decrypt.c | 3 +- rsa-decrypt-tr.c | 1 + rsa-internal.h | 14 -------- rsa-sec-decrypt.c | 1 + testsuite/pkcs1-sec-decrypt-test.c | 3 +- 9 files changed, 69 insertions(+), 20 deletions(-) create mode 100644 pkcs1-internal.h diff --git a/ChangeLog b/ChangeLog index fd487df1..74ab64a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2018-12-26 Niels Möller <nisse@lysator.liu.se> + * pkcs1-internal.h: New header file, moved declarations of + _pkcs1_sec_decrypt and _pkcs1_sec_decrypt_variable here. + * rsa-internal.h: ... old location. + * Makefile.in (DISTFILES): Added pkcs1-internal.h. + * pkcs1-decrypt.c: Include new file. + * pkcs1-sec-decrypt.c: Likewise. + * rsa-decrypt-tr.c: Likewise. + * rsa-sec-decrypt.c: Likewise. + * testsuite/pkcs1-sec-decrypt-test.c: Likewise. + * tools/nettle-pbkdf2.c: Add #define _GNU_SOURCE, needed for strdup with gcc -std=c89. * testsuite/ed25519-test.c: Add #define _GNU_SOURCE, needed for diff --git a/Makefile.in b/Makefile.in index c7db0aed..35df8a14 100644 --- a/Makefile.in +++ b/Makefile.in @@ -234,7 +234,7 @@ DISTFILES = $(SOURCES) $(HEADERS) getopt.h getopt_int.h \ memxor-internal.h nettle-internal.h nettle-write.h \ ctr-internal.h chacha-internal.h sha3-internal.h \ salsa20-internal.h umac-internal.h hogweed-internal.h \ - rsa-internal.h dsa-internal.h eddsa-internal.h \ + rsa-internal.h pkcs1-internal.h dsa-internal.h eddsa-internal.h \ gmp-glue.h ecc-internal.h fat-setup.h \ mini-gmp.h asm.m4 \ nettle.texinfo nettle.info nettle.html nettle.pdf sha-example.c diff --git a/pkcs1-decrypt.c b/pkcs1-decrypt.c index 1a02c706..40f6c3dd 100644 --- a/pkcs1-decrypt.c +++ b/pkcs1-decrypt.c @@ -38,10 +38,10 @@ #include <string.h> #include "pkcs1.h" +#include "pkcs1-internal.h" #include "bignum.h" #include "gmp-glue.h" -#include "rsa-internal.h" int pkcs1_decrypt (size_t key_size, diff --git a/pkcs1-internal.h b/pkcs1-internal.h new file mode 100644 index 00000000..507cdfbb --- /dev/null +++ b/pkcs1-internal.h @@ -0,0 +1,53 @@ +/* pkcs1-internal.h + + Copyright (C) 2018 Niels Möller + Copyright (C) 2018 Red Hat, Inc. + + 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_PKCS1_INTERNAL_H_INCLUDED +#define NETTLE_PKCS1_INTERNAL_H_INCLUDED + +#include "nettle-types.h" + +#define _pkcs1_sec_decrypt _nettle_pkcs1_sec_decrypt +#define _pkcs1_sec_decrypt_variable _nettle_pkcs1_sec_decrypt_variable + +/* additional resistance to memory access side-channel attacks. + * Note: message buffer is returned unchanged on error */ +int +_pkcs1_sec_decrypt (size_t length, uint8_t *message, + size_t padded_message_length, + const volatile uint8_t *padded_message); + +int +_pkcs1_sec_decrypt_variable(size_t *length, uint8_t *message, + size_t padded_message_length, + const volatile uint8_t *padded_message); + +#endif /* NETTLE_PKCS1_INTERNAL_H_INCLUDED */ diff --git a/pkcs1-sec-decrypt.c b/pkcs1-sec-decrypt.c index 722044b0..4f13080e 100644 --- a/pkcs1-sec-decrypt.c +++ b/pkcs1-sec-decrypt.c @@ -43,8 +43,7 @@ #include "memops.h" #include "gmp-glue.h" -#include "rsa.h" -#include "rsa-internal.h" +#include "pkcs1-internal.h" /* Inputs are always cast to uint32_t values. But all values used in this * function should never exceed the maximum value of a uint32_t anyway. diff --git a/rsa-decrypt-tr.c b/rsa-decrypt-tr.c index 1e6ad934..0224c0b7 100644 --- a/rsa-decrypt-tr.c +++ b/rsa-decrypt-tr.c @@ -37,6 +37,7 @@ #endif #include "rsa-internal.h" +#include "pkcs1-internal.h" #include "gmp-glue.h" int diff --git a/rsa-internal.h b/rsa-internal.h index 264c0a6a..b828e451 100644 --- a/rsa-internal.h +++ b/rsa-internal.h @@ -44,8 +44,6 @@ #define _rsa_sec_compute_root_itch _nettle_rsa_sec_compute_root_itch #define _rsa_sec_compute_root _nettle_rsa_sec_compute_root #define _rsa_sec_compute_root_tr _nettle_rsa_sec_compute_root_tr -#define _pkcs1_sec_decrypt _nettle_pkcs1_sec_decrypt -#define _pkcs1_sec_decrypt_variable _nettle_pkcs1_sec_decrypt_variable /* Internal functions. */ int @@ -87,16 +85,4 @@ _rsa_sec_compute_root_tr(const struct rsa_public_key *pub, void *random_ctx, nettle_random_func *random, mp_limb_t *x, const mp_limb_t *m, size_t mn); -/* additional resistance to memory access side-channel attacks. - * Note: message buffer is returned unchanged on error */ -int -_pkcs1_sec_decrypt (size_t length, uint8_t *message, - size_t padded_message_length, - const volatile uint8_t *padded_message); - -int -_pkcs1_sec_decrypt_variable(size_t *length, uint8_t *message, - size_t padded_message_length, - const volatile uint8_t *padded_message); - #endif /* NETTLE_RSA_INTERNAL_H_INCLUDED */ diff --git a/rsa-sec-decrypt.c b/rsa-sec-decrypt.c index e6a4b267..6866e7c8 100644 --- a/rsa-sec-decrypt.c +++ b/rsa-sec-decrypt.c @@ -39,6 +39,7 @@ #endif #include "rsa.h" +#include "pkcs1-internal.h" #include "rsa-internal.h" #include "gmp-glue.h" diff --git a/testsuite/pkcs1-sec-decrypt-test.c b/testsuite/pkcs1-sec-decrypt-test.c index 9c7b06d5..c7fcdcb6 100644 --- a/testsuite/pkcs1-sec-decrypt-test.c +++ b/testsuite/pkcs1-sec-decrypt-test.c @@ -1,7 +1,6 @@ #include "testutils.h" -#include "rsa.h" -#include "rsa-internal.h" +#include "pkcs1-internal.h" #if HAVE_VALGRIND_MEMCHECK_H # include <valgrind/memcheck.h> -- GitLab