lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 25 Aug 2020 09:24:40 +0200 From: Stephan Müller <smueller@...onox.de> To: Arnd Bergmann <arnd@...db.de> Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>, linux-crypto@...r.kernel.org, LKML <linux-kernel@...r.kernel.org>, linux-api@...r.kernel.org, "Eric W. Biederman" <ebiederm@...ssion.com>, "Alexander E. Patrakov" <patrakov@...il.com>, "Ahmed S. Darwish" <darwish.07@...il.com>, "Theodore Y. Ts'o" <tytso@....edu>, Willy Tarreau <w@....eu>, Matthew Garrett <mjg59@...f.ucam.org>, Vito Caputo <vcaputo@...garu.com>, Andreas Dilger <adilger.kernel@...ger.ca>, Jan Kara <jack@...e.cz>, Ray Strode <rstrode@...hat.com>, William Jon McCann <mccann@....edu>, zhangjs <zachary@...shancloud.com>, Andy Lutomirski <luto@...nel.org>, Florian Weimer <fweimer@...hat.com>, Lennart Poettering <mzxreary@...inter.de>, Nicolai Stange <nstange@...e.de>, "Peter, Matthias" <matthias.peter@....bund.de>, Marcelo Henrique Cerri <marcelo.cerri@...onical.com>, Roman Drahtmueller <draht@...altsekun.de>, Neil Horman <nhorman@...hat.com>, Randy Dunlap <rdunlap@...radead.org>, Julia Lawall <julia.lawall@...ia.fr>, Dan Carpenter <dan.carpenter@...cle.com>, Andy Lavr <andy.lavr@...il.com> Subject: [PATCH v34 05/12] crypto: DRBG - externalize DRBG functions for LRNG This patch allows several DRBG functions to be called by the LRNG kernel code paths outside the drbg.c file. CC: "Eric W. Biederman" <ebiederm@...ssion.com> CC: "Alexander E. Patrakov" <patrakov@...il.com> CC: "Ahmed S. Darwish" <darwish.07@...il.com> CC: "Theodore Y. Ts'o" <tytso@....edu> CC: Willy Tarreau <w@....eu> CC: Matthew Garrett <mjg59@...f.ucam.org> CC: Vito Caputo <vcaputo@...garu.com> CC: Andreas Dilger <adilger.kernel@...ger.ca> CC: Jan Kara <jack@...e.cz> CC: Ray Strode <rstrode@...hat.com> CC: William Jon McCann <mccann@....edu> CC: zhangjs <zachary@...shancloud.com> CC: Andy Lutomirski <luto@...nel.org> CC: Florian Weimer <fweimer@...hat.com> CC: Lennart Poettering <mzxreary@...inter.de> CC: Nicolai Stange <nstange@...e.de> Reviewed-by: Roman Drahtmueller <draht@...altsekun.de> Tested-by: Roman Drahtmüller <draht@...altsekun.de> Tested-by: Marcelo Henrique Cerri <marcelo.cerri@...onical.com> Tested-by: Neil Horman <nhorman@...hat.com> Signed-off-by: Stephan Mueller <smueller@...onox.de> --- crypto/drbg.c | 16 ++++++++++------ include/crypto/drbg.h | 7 +++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/crypto/drbg.c b/crypto/drbg.c index e99fe34cfa00..3644e954785a 100644 --- a/crypto/drbg.c +++ b/crypto/drbg.c @@ -113,7 +113,7 @@ * the SHA256 / AES 256 over other ciphers. Thus, the favored * DRBGs are the latest entries in this array. */ -static const struct drbg_core drbg_cores[] = { +const struct drbg_core drbg_cores[] = { #ifdef CONFIG_CRYPTO_DRBG_CTR { .flags = DRBG_CTR | DRBG_STRENGTH128, @@ -190,6 +190,7 @@ static const struct drbg_core drbg_cores[] = { }, #endif /* CONFIG_CRYPTO_DRBG_HMAC */ }; +EXPORT_SYMBOL(drbg_cores); static int drbg_uninstantiate(struct drbg_state *drbg); @@ -205,7 +206,7 @@ static int drbg_uninstantiate(struct drbg_state *drbg); * Return: normalized strength in *bytes* value or 32 as default * to counter programming errors */ -static inline unsigned short drbg_sec_strength(drbg_flag_t flags) +unsigned short drbg_sec_strength(drbg_flag_t flags) { switch (flags & DRBG_STRENGTH_MASK) { case DRBG_STRENGTH128: @@ -218,6 +219,7 @@ static inline unsigned short drbg_sec_strength(drbg_flag_t flags) return 32; } } +EXPORT_SYMBOL(drbg_sec_strength); /* * FIPS 140-2 continuous self test for the noise source @@ -1214,7 +1216,7 @@ static int drbg_seed(struct drbg_state *drbg, struct drbg_string *pers, } /* Free all substructures in a DRBG state without the DRBG state structure */ -static inline void drbg_dealloc_state(struct drbg_state *drbg) +void drbg_dealloc_state(struct drbg_state *drbg) { if (!drbg) return; @@ -1235,12 +1237,13 @@ static inline void drbg_dealloc_state(struct drbg_state *drbg) drbg->fips_primed = false; } } +EXPORT_SYMBOL(drbg_dealloc_state); /* * Allocate all sub-structures for a DRBG state. * The DRBG state structure must already be allocated. */ -static inline int drbg_alloc_state(struct drbg_state *drbg) +int drbg_alloc_state(struct drbg_state *drbg) { int ret = -ENOMEM; unsigned int sb_size = 0; @@ -1321,6 +1324,7 @@ static inline int drbg_alloc_state(struct drbg_state *drbg) drbg_dealloc_state(drbg); return ret; } +EXPORT_SYMBOL(drbg_alloc_state); /************************************************************************* * DRBG interface functions @@ -1890,8 +1894,7 @@ static int drbg_kcapi_sym_ctr(struct drbg_state *drbg, * * return: flags */ -static inline void drbg_convert_tfm_core(const char *cra_driver_name, - int *coreref, bool *pr) +void drbg_convert_tfm_core(const char *cra_driver_name, int *coreref, bool *pr) { int i = 0; size_t start = 0; @@ -1918,6 +1921,7 @@ static inline void drbg_convert_tfm_core(const char *cra_driver_name, } } } +EXPORT_SYMBOL(drbg_convert_tfm_core); static int drbg_kcapi_init(struct crypto_tfm *tfm) { diff --git a/include/crypto/drbg.h b/include/crypto/drbg.h index c4165126937e..71d53e028e6d 100644 --- a/include/crypto/drbg.h +++ b/include/crypto/drbg.h @@ -278,4 +278,11 @@ enum drbg_prefixes { DRBG_PREFIX3 }; +extern int drbg_alloc_state(struct drbg_state *drbg); +extern void drbg_dealloc_state(struct drbg_state *drbg); +extern void drbg_convert_tfm_core(const char *cra_driver_name, int *coreref, + bool *pr); +extern const struct drbg_core drbg_cores[]; +extern unsigned short drbg_sec_strength(drbg_flag_t flags); + #endif /* _DRBG_H */ -- 2.26.2
Powered by blists - more mailing lists