[openssl] master update
Richard Levitte
levitte at openssl.org
Fri Dec 20 15:16:35 UTC 2019
The branch master has been updated
via cc731bc3f66701cad1de07dfc9ba64d0fc709d45 (commit)
via c0d47492a77e67ce49cf3c538bdaf82ca90367cb (commit)
from 0ab6fc79a9a63370be1a615729dc2a6ed0d6c89b (commit)
- Log -----------------------------------------------------------------
commit cc731bc3f66701cad1de07dfc9ba64d0fc709d45
Author: Richard Levitte <levitte at openssl.org>
Date: Thu Dec 19 13:33:35 2019 +0100
EVP & PROV: Fix all platform inclusions
Reviewed-by: Shane Lontis <shane.lontis at oracle.com>
Reviewed-by: Matt Caswell <matt at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10662)
commit c0d47492a77e67ce49cf3c538bdaf82ca90367cb
Author: Richard Levitte <levitte at openssl.org>
Date: Thu Dec 19 13:31:29 2019 +0100
CRYPTO: split cipher_platform.h into algorithm specific headers
aes_platform.h
cmll_platform.h
des_platform.h
To make this possible, we must also define DES_ASM and CMLL_ASM to
indicate that we have the necessary internal support.
Reviewed-by: Shane Lontis <shane.lontis at oracle.com>
Reviewed-by: Matt Caswell <matt at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10662)
-----------------------------------------------------------------------
Summary of changes:
crypto/camellia/build.info | 2 +
crypto/des/build.info | 3 ++
crypto/evp/e_aes.c | 2 +-
crypto/evp/e_camellia.c | 2 +-
.../{ciphermode_platform.h => aes_platform.h} | 51 ++--------------------
include/crypto/cmll_platform.h | 51 ++++++++++++++++++++++
include/crypto/des_platform.h | 35 +++++++++++++++
providers/build.info | 2 +-
providers/implementations/ciphers/cipher_aes.h | 1 +
providers/implementations/ciphers/cipher_aes_ccm.h | 1 +
providers/implementations/ciphers/cipher_aes_gcm.h | 1 +
providers/implementations/ciphers/cipher_aes_ocb.h | 1 +
providers/implementations/ciphers/cipher_aes_siv.h | 3 +-
providers/implementations/ciphers/cipher_aes_xts.h | 1 +
.../implementations/ciphers/cipher_camellia.h | 1 +
providers/implementations/ciphers/cipher_des.h | 1 +
providers/implementations/ciphers/cipher_tdes.h | 1 +
.../implementations/include/prov/ciphercommon.h | 1 -
util/fix-includes.sed | 2 +-
19 files changed, 108 insertions(+), 54 deletions(-)
rename include/crypto/{ciphermode_platform.h => aes_platform.h} (89%)
create mode 100644 include/crypto/cmll_platform.h
create mode 100644 include/crypto/des_platform.h
diff --git a/crypto/camellia/build.info b/crypto/camellia/build.info
index c10babc726..02f9afeb80 100644
--- a/crypto/camellia/build.info
+++ b/crypto/camellia/build.info
@@ -10,10 +10,12 @@ IF[{- !$disabled{asm} -}]
# appropriate one
IF[$CMLLASM_{- $target{asm_arch} -}]
$CMLLASM=$CMLLASM_{- $target{asm_arch} -}
+ $CMLLDEF=CMLL_ASM
ENDIF
ENDIF
SOURCE[../../libcrypto]=cmll_ecb.c cmll_ofb.c cmll_cfb.c cmll_ctr.c $CMLLASM
+DEFINE[../../libcrypto]=$CMLLDEF
GENERATE[cmll-x86.s]=asm/cmll-x86.pl
DEPEND[cmll-x86.s]=../perlasm/x86asm.pl
diff --git a/crypto/des/build.info b/crypto/des/build.info
index b1c1e624c2..40e874823c 100644
--- a/crypto/des/build.info
+++ b/crypto/des/build.info
@@ -9,6 +9,7 @@ IF[{- !$disabled{asm} -}]
# appropriate one
IF[$DESASM_{- $target{asm_arch} -}]
$DESASM=$DESASM_{- $target{asm_arch} -}
+ $DESDEF=DES_ASM
ENDIF
ENDIF
@@ -21,6 +22,8 @@ SOURCE[../../libcrypto]=$COMMON\
str2key.c pcbc_enc.c qud_cksm.c rand_key.c \
fcrypt.c xcbc_enc.c cbc_cksm.c
SOURCE[../../providers/libfips.a]=$COMMON
+DEFINE[../../libcrypto]=$DESDEF
+DEFINE[../../providers/libfips.a]=$DESDEF
GENERATE[des_enc-sparc.S]=asm/des_enc.m4
GENERATE[dest4-sparcv9.S]=asm/dest4-sparcv9.pl
diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c
index b95adf0bbf..29836844d4 100644
--- a/crypto/evp/e_aes.c
+++ b/crypto/evp/e_aes.c
@@ -20,7 +20,7 @@
#include "internal/cryptlib.h"
#include "crypto/modes.h"
#include "crypto/siv.h"
-#include "crypto/ciphermode_platform.h"
+#include "crypto/aes_platform.h"
#include "evp_local.h"
typedef struct {
diff --git a/crypto/evp/e_camellia.c b/crypto/evp/e_camellia.c
index 50febca9bc..1c75c3a4c0 100644
--- a/crypto/evp/e_camellia.c
+++ b/crypto/evp/e_camellia.c
@@ -19,7 +19,7 @@ NON_EMPTY_TRANSLATION_UNIT
# include <openssl/camellia.h>
# include "crypto/evp.h"
# include "crypto/modes.h"
-# include "crypto/ciphermode_platform.h"
+# include "crypto/cmll_platform.h"
static int camellia_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
const unsigned char *iv, int enc);
diff --git a/include/crypto/ciphermode_platform.h b/include/crypto/aes_platform.h
similarity index 89%
rename from include/crypto/ciphermode_platform.h
rename to include/crypto/aes_platform.h
index e6a65bb99d..483a1949ee 100644
--- a/include/crypto/ciphermode_platform.h
+++ b/include/crypto/aes_platform.h
@@ -7,8 +7,8 @@
* https://www.openssl.org/source/license.html
*/
-#ifndef OSSL_CRYPTO_CIPHERMODE_PLATFORM_H
-# define OSSL_CRYPTO_CIPHERMODE_PLATFORM_H
+#ifndef OSSL_AES_PLATFORM_H
+# define OSSL_AES_PLATFORM_H
# include "openssl/aes.h"
@@ -223,39 +223,7 @@ void gcm_ghash_avx(u64 Xi[2], const u128 Htable[16], const u8 *in, size_t len);
extern unsigned int OPENSSL_sparcv9cap_P[];
# include "sparc_arch.h"
-# ifndef OPENSSL_NO_CAMELLIA
-# define SPARC_CMLL_CAPABLE (OPENSSL_sparcv9cap_P[1] & CFR_CAMELLIA)
-# include "openssl/camellia.h"
-
-void cmll_t4_set_key(const unsigned char *key, int bits, CAMELLIA_KEY *ks);
-void cmll_t4_encrypt(const unsigned char *in, unsigned char *out,
- const CAMELLIA_KEY *key);
-void cmll_t4_decrypt(const unsigned char *in, unsigned char *out,
- const CAMELLIA_KEY *key);
-
-void cmll128_t4_cbc_encrypt(const unsigned char *in, unsigned char *out,
- size_t len, const CAMELLIA_KEY *key,
- unsigned char *ivec);
-void cmll128_t4_cbc_decrypt(const unsigned char *in, unsigned char *out,
- size_t len, const CAMELLIA_KEY *key,
- unsigned char *ivec);
-void cmll256_t4_cbc_encrypt(const unsigned char *in, unsigned char *out,
- size_t len, const CAMELLIA_KEY *key,
- unsigned char *ivec);
-void cmll256_t4_cbc_decrypt(const unsigned char *in, unsigned char *out,
- size_t len, const CAMELLIA_KEY *key,
- unsigned char *ivec);
-void cmll128_t4_ctr32_encrypt(const unsigned char *in, unsigned char *out,
- size_t blocks, const CAMELLIA_KEY *key,
- unsigned char *ivec);
-void cmll256_t4_ctr32_encrypt(const unsigned char *in, unsigned char *out,
- size_t blocks, const CAMELLIA_KEY *key,
- unsigned char *ivec);
-# endif /* OPENSSL_NO_CAMELLIA */
-
-
# define SPARC_AES_CAPABLE (OPENSSL_sparcv9cap_P[1] & CFR_AES)
-# define SPARC_DES_CAPABLE (OPENSSL_sparcv9cap_P[1] & CFR_DES)
# define HWAES_CAPABLE (OPENSSL_sparcv9cap_P[0] & SPARCV9_FJAESX)
# define HWAES_set_encrypt_key aes_fx_set_encrypt_key
# define HWAES_set_decrypt_key aes_fx_set_decrypt_key
@@ -321,19 +289,6 @@ void aes256_t4_xts_decrypt(const unsigned char *in, unsigned char *out,
size_t blocks, const AES_KEY *key1,
const AES_KEY *key2, const unsigned char *ivec);
-# ifndef OPENSSL_NO_DES
-# include <openssl/des.h>
-void des_t4_key_expand(const void *key, DES_key_schedule *ks);
-void des_t4_ede3_cbc_encrypt(const void *inp, void *out, size_t len,
- const DES_key_schedule ks[3], unsigned char iv[8]);
-void des_t4_ede3_cbc_decrypt(const void *inp, void *out, size_t len,
- const DES_key_schedule ks[3], unsigned char iv[8]);
-void des_t4_cbc_encrypt(const void *inp, void *out, size_t len,
- const DES_key_schedule *ks, unsigned char iv[8]);
-void des_t4_cbc_decrypt(const void *inp, void *out, size_t len,
- const DES_key_schedule *ks, unsigned char iv[8]);
-# endif /* OPENSSL_NO_DES */
-
# elif defined(OPENSSL_CPUID_OBJ) && defined(__s390__)
/* IBM S390X support */
# include "s390x_arch.h"
@@ -480,4 +435,4 @@ void HWAES_ocb_decrypt(const unsigned char *in, unsigned char *out,
# endif /* HWAES_CAPABLE */
-#endif /* OSSL_CRYPTO_CIPHERMODE_PLATFORM_H */
+#endif /* OSSL_AES_PLATFORM_H */
diff --git a/include/crypto/cmll_platform.h b/include/crypto/cmll_platform.h
new file mode 100644
index 0000000000..c82cf9f961
--- /dev/null
+++ b/include/crypto/cmll_platform.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#ifndef OSSL_CMLL_PLATFORM_H
+# define OSSL_CMLL_PLATFORM_H
+
+# if defined(CMLL_ASM) && (defined(__sparc) || defined(__sparc__))
+
+/* Fujitsu SPARC64 X support */
+extern unsigned int OPENSSL_sparcv9cap_P[];
+# include "sparc_arch.h"
+
+# ifndef OPENSSL_NO_CAMELLIA
+# define SPARC_CMLL_CAPABLE (OPENSSL_sparcv9cap_P[1] & CFR_CAMELLIA)
+# include <openssl/camellia.h>
+
+void cmll_t4_set_key(const unsigned char *key, int bits, CAMELLIA_KEY *ks);
+void cmll_t4_encrypt(const unsigned char *in, unsigned char *out,
+ const CAMELLIA_KEY *key);
+void cmll_t4_decrypt(const unsigned char *in, unsigned char *out,
+ const CAMELLIA_KEY *key);
+
+void cmll128_t4_cbc_encrypt(const unsigned char *in, unsigned char *out,
+ size_t len, const CAMELLIA_KEY *key,
+ unsigned char *ivec);
+void cmll128_t4_cbc_decrypt(const unsigned char *in, unsigned char *out,
+ size_t len, const CAMELLIA_KEY *key,
+ unsigned char *ivec);
+void cmll256_t4_cbc_encrypt(const unsigned char *in, unsigned char *out,
+ size_t len, const CAMELLIA_KEY *key,
+ unsigned char *ivec);
+void cmll256_t4_cbc_decrypt(const unsigned char *in, unsigned char *out,
+ size_t len, const CAMELLIA_KEY *key,
+ unsigned char *ivec);
+void cmll128_t4_ctr32_encrypt(const unsigned char *in, unsigned char *out,
+ size_t blocks, const CAMELLIA_KEY *key,
+ unsigned char *ivec);
+void cmll256_t4_ctr32_encrypt(const unsigned char *in, unsigned char *out,
+ size_t blocks, const CAMELLIA_KEY *key,
+ unsigned char *ivec);
+# endif /* OPENSSL_NO_CAMELLIA */
+
+# endif /* CMLL_ASM && sparc */
+
+#endif /* OSSL_CRYPTO_CIPHERMODE_PLATFORM_H */
diff --git a/include/crypto/des_platform.h b/include/crypto/des_platform.h
new file mode 100644
index 0000000000..28e319f50e
--- /dev/null
+++ b/include/crypto/des_platform.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License"). You may not use
+ * this file except in compliance with the License. You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#ifndef OSSL_DES_PLATFORM_H
+# define OSSL_DES_PLATFORM_H
+
+# if defined(DES_ASM) && (defined(__sparc) || defined(__sparc__))
+
+/* Fujitsu SPARC64 X support */
+extern unsigned int OPENSSL_sparcv9cap_P[];
+# include "sparc_arch.h"
+
+# ifndef OPENSSL_NO_DES
+# define SPARC_DES_CAPABLE (OPENSSL_sparcv9cap_P[1] & CFR_DES)
+# include <openssl/des.h>
+void des_t4_key_expand(const void *key, DES_key_schedule *ks);
+void des_t4_ede3_cbc_encrypt(const void *inp, void *out, size_t len,
+ const DES_key_schedule ks[3], unsigned char iv[8]);
+void des_t4_ede3_cbc_decrypt(const void *inp, void *out, size_t len,
+ const DES_key_schedule ks[3], unsigned char iv[8]);
+void des_t4_cbc_encrypt(const void *inp, void *out, size_t len,
+ const DES_key_schedule *ks, unsigned char iv[8]);
+void des_t4_cbc_decrypt(const void *inp, void *out, size_t len,
+ const DES_key_schedule *ks, unsigned char iv[8]);
+# endif /* OPENSSL_NO_DES */
+
+# endif /* DES_ASM && sparc */
+
+#endif /* OSSL_CRYPTO_CIPHERMODE_PLATFORM_H */
diff --git a/providers/build.info b/providers/build.info
index 2121a72cb2..6d4f6ae82c 100644
--- a/providers/build.info
+++ b/providers/build.info
@@ -40,7 +40,7 @@ $LIBNONFIPS=libnonfips.a
$LIBFIPS=libfips.a
# Enough of our implementations include prov/ciphercommon.h (present in
-# providers/implementations/include), which includes crypto/ciphermode_platform.h
+# providers/implementations/include), which includes crypto/*_platform.h
# (present in include), which in turn may include very internal header
# files in crypto/, so let's have a common include list for them all.
$COMMON_INCLUDES=../crypto ../include implementations/include common/include
diff --git a/providers/implementations/ciphers/cipher_aes.h b/providers/implementations/ciphers/cipher_aes.h
index f05ff1b7d5..f2ee746295 100644
--- a/providers/implementations/ciphers/cipher_aes.h
+++ b/providers/implementations/ciphers/cipher_aes.h
@@ -9,6 +9,7 @@
#include <openssl/aes.h>
#include "prov/ciphercommon.h"
+#include "crypto/aes_platform.h"
typedef struct prov_aes_ctx_st {
PROV_CIPHER_CTX base; /* Must be first */
diff --git a/providers/implementations/ciphers/cipher_aes_ccm.h b/providers/implementations/ciphers/cipher_aes_ccm.h
index a0dc4b6f25..ee0257c5f6 100644
--- a/providers/implementations/ciphers/cipher_aes_ccm.h
+++ b/providers/implementations/ciphers/cipher_aes_ccm.h
@@ -10,6 +10,7 @@
#include <openssl/aes.h>
#include "prov/ciphercommon.h"
#include "prov/ciphercommon_ccm.h"
+#include "crypto/aes_platform.h"
typedef struct prov_aes_ccm_ctx_st {
PROV_CCM_CTX base; /* Must be first */
diff --git a/providers/implementations/ciphers/cipher_aes_gcm.h b/providers/implementations/ciphers/cipher_aes_gcm.h
index 6c81790640..d7006408de 100644
--- a/providers/implementations/ciphers/cipher_aes_gcm.h
+++ b/providers/implementations/ciphers/cipher_aes_gcm.h
@@ -10,6 +10,7 @@
#include <openssl/aes.h>
#include "prov/ciphercommon.h"
#include "prov/ciphercommon_gcm.h"
+#include "crypto/aes_platform.h"
typedef struct prov_aes_gcm_ctx_st {
PROV_GCM_CTX base; /* must be first entry in struct */
diff --git a/providers/implementations/ciphers/cipher_aes_ocb.h b/providers/implementations/ciphers/cipher_aes_ocb.h
index ba515241e2..94d8183167 100644
--- a/providers/implementations/ciphers/cipher_aes_ocb.h
+++ b/providers/implementations/ciphers/cipher_aes_ocb.h
@@ -9,6 +9,7 @@
#include <openssl/aes.h>
#include "prov/ciphercommon.h"
+#include "crypto/aes_platform.h"
#define OCB_MAX_TAG_LEN AES_BLOCK_SIZE
#define OCB_MAX_DATA_LEN AES_BLOCK_SIZE
diff --git a/providers/implementations/ciphers/cipher_aes_siv.h b/providers/implementations/ciphers/cipher_aes_siv.h
index 8f35d757dc..05411d7012 100644
--- a/providers/implementations/ciphers/cipher_aes_siv.h
+++ b/providers/implementations/ciphers/cipher_aes_siv.h
@@ -8,7 +8,8 @@
*/
#include "prov/ciphercommon.h"
-#include "include/crypto/siv.h"
+#include "crypto/aes_platform.h"
+#include "crypto/siv.h"
typedef struct prov_cipher_hw_aes_siv_st {
int (*initkey)(void *ctx, const uint8_t *key, size_t keylen);
diff --git a/providers/implementations/ciphers/cipher_aes_xts.h b/providers/implementations/ciphers/cipher_aes_xts.h
index 615ee61905..23ae696197 100644
--- a/providers/implementations/ciphers/cipher_aes_xts.h
+++ b/providers/implementations/ciphers/cipher_aes_xts.h
@@ -9,6 +9,7 @@
#include <openssl/aes.h>
#include "prov/ciphercommon.h"
+#include "crypto/aes_platform.h"
/*
* Available in cipher_fips.c, and compiled with different values depending
diff --git a/providers/implementations/ciphers/cipher_camellia.h b/providers/implementations/ciphers/cipher_camellia.h
index 58636f1d32..07f67dbad8 100644
--- a/providers/implementations/ciphers/cipher_camellia.h
+++ b/providers/implementations/ciphers/cipher_camellia.h
@@ -9,6 +9,7 @@
#include "openssl/camellia.h"
#include "prov/ciphercommon.h"
+#include "crypto/cmll_platform.h"
typedef struct prov_camellia_ctx_st {
PROV_CIPHER_CTX base; /* Must be first */
diff --git a/providers/implementations/ciphers/cipher_des.h b/providers/implementations/ciphers/cipher_des.h
index 92dcfa11e9..aedb38177e 100644
--- a/providers/implementations/ciphers/cipher_des.h
+++ b/providers/implementations/ciphers/cipher_des.h
@@ -8,6 +8,7 @@
*/
#include <openssl/des.h>
+#include "crypto/des_platform.h"
/* TODO(3.0) Figure out what flags need to be here */
#define TDES_FLAGS (EVP_CIPH_RAND_KEY)
diff --git a/providers/implementations/ciphers/cipher_tdes.h b/providers/implementations/ciphers/cipher_tdes.h
index 7bb879fb4f..e1fb760e23 100644
--- a/providers/implementations/ciphers/cipher_tdes.h
+++ b/providers/implementations/ciphers/cipher_tdes.h
@@ -9,6 +9,7 @@
#include <openssl/des.h>
#include <openssl/core_numbers.h>
+#include "crypto/des_platform.h"
#define DES_BLOCK_SIZE 8
#define TDES_IVLEN 8
diff --git a/providers/implementations/include/prov/ciphercommon.h b/providers/implementations/include/prov/ciphercommon.h
index bf77a4021e..d4dc5ed1db 100644
--- a/providers/implementations/include/prov/ciphercommon.h
+++ b/providers/implementations/include/prov/ciphercommon.h
@@ -13,7 +13,6 @@
#include <openssl/evp.h>
#include "internal/cryptlib.h"
#include "crypto/modes.h"
-#include "crypto/ciphermode_platform.h"
#define MAXCHUNK ((size_t)1 << (sizeof(long) * 8 - 2))
#define MAXBITCHUNK ((size_t)1 << (sizeof(size_t) * 8 - 4))
diff --git a/util/fix-includes.sed b/util/fix-includes.sed
index 5272e363fc..db66809a19 100644
--- a/util/fix-includes.sed
+++ b/util/fix-includes.sed
@@ -1,5 +1,5 @@
s|internal/([a-z0-9_]+)_int\.h|crypto/\1.h|g ;
-s at internal/(aria.h|asn1_dsa.h|async.h|bn_conf.h|bn_conf.h|bn_dh.h|bn_srp.h|chacha.h|ciphermode_platform.h|ctype.h|__DECC_INCLUDE_EPILOGUE.H|__DECC_INCLUDE_PROLOGUE.H|dso_conf.h|dso_conf.h|engine.h|lhash.h|md32_common.h|objects.h|poly1305.h|sha.h|siphash.h|sm2err.h|sm2.h|sm4.h|sparse_array.h|store.h|foobar)@crypto/\1 at g ;
+s at internal/(aria.h|asn1_dsa.h|async.h|bn_conf.h|bn_conf.h|bn_dh.h|bn_srp.h|chacha.h|(aes|des|cmll)_platform.h|ctype.h|__DECC_INCLUDE_EPILOGUE.H|__DECC_INCLUDE_PROLOGUE.H|dso_conf.h|dso_conf.h|engine.h|lhash.h|md32_common.h|objects.h|poly1305.h|sha.h|siphash.h|sm2err.h|sm2.h|sm4.h|sparse_array.h|store.h|foobar)@crypto/\1 at g ;
s/constant_time_locl/constant_time/g ;
s/_lo?cl\.h/_local.h/g ;
s/_int\.h/_local.h/g ;
More information about the openssl-commits
mailing list