You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto updates from Herbert Xu:
"Algorithms:
- Fix rmmod crash with x86/curve25519
- Add ECDH NIST P384
- Generate assembly files at build-time with perl scripts on arm
- Switch to HMAC SHA512 DRBG as default DRBG
Drivers:
- Add sl3516 crypto engine
- Add ECDH NIST P384 support in hisilicon/hpre
- Add {ofb,cfb,ctr} over {aes,sm4} in hisilicon/sec
- Add {ccm,gcm} over {aes,sm4} in hisilicon/sec
- Enable omap hwrng driver for TI K3 family
- Add support for AEAD algorithms in qce"
* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (142 commits)
crypto: sl3516 - depends on HAS_IOMEM
crypto: hisilicon/qm - implement for querying hardware tasks status.
crypto: sl3516 - Fix build warning without CONFIG_PM
MAINTAINERS: update caam crypto driver maintainers list
crypto: nx - Fix numerous sparse byte-order warnings
crypto: nx - Fix RCU warning in nx842_OF_upd_status
crypto: api - Move crypto attr definitions out of crypto.h
crypto: nx - Fix memcpy() over-reading in nonce
crypto: hisilicon/sec - Fix spelling mistake "fallbcak" -> "fallback"
crypto: sa2ul - Remove unused auth_len variable
crypto: sl3516 - fix duplicated inclusion
crypto: hisilicon/zip - adds the max shaper type rate
crypto: hisilicon/hpre - adds the max shaper type rate
crypto: hisilicon/sec - adds the max shaper type rate
crypto: hisilicon/qm - supports to inquiry each function's QoS
crypto: hisilicon/qm - add pf ping single vf function
crypto: hisilicon/qm - merges the work initialization process into a single function
crypto: hisilicon/qm - add the "alg_qos" file node
crypto: hisilicon/qm - supports writing QoS int the host
crypto: api - remove CRYPTOA_U32 and related functions
...
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/crypto/cortina,sl3516-crypto.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: SL3516 cryptographic offloader driver
|
||||
|
||||
maintainers:
|
||||
- Corentin Labbe <clabbe@baylibre.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- cortina,sl3516-crypto
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- clocks
|
||||
- resets
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/clock/cortina,gemini-clock.h>
|
||||
#include <dt-bindings/reset/cortina,gemini-reset.h>
|
||||
|
||||
crypto@62000000 {
|
||||
compatible = "cortina,sl3516-crypto";
|
||||
reg = <0x62000000 0x10000>;
|
||||
interrupts = <7 IRQ_TYPE_EDGE_RISING>;
|
||||
resets = <&syscon GEMINI_RESET_SECURITY>;
|
||||
clocks = <&syscon GEMINI_CLK_GATE_SECURITY>;
|
||||
};
|
||||
@@ -0,0 +1,47 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
# Copyright 2018 Linaro Ltd.
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: "http://devicetree.org/schemas/crypto/intel,ixp4xx-crypto.yaml#"
|
||||
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
|
||||
|
||||
title: Intel IXP4xx cryptographic engine
|
||||
|
||||
maintainers:
|
||||
- Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
description: |
|
||||
The Intel IXP4xx cryptographic engine makes use of the IXP4xx NPE
|
||||
(Network Processing Engine). Since it is not a device on its own
|
||||
it is defined as a subnode of the NPE, if crypto support is
|
||||
available on the platform.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: intel,ixp4xx-crypto
|
||||
|
||||
intel,npe-handle:
|
||||
$ref: '/schemas/types.yaml#/definitions/phandle-array'
|
||||
maxItems: 1
|
||||
description: phandle to the NPE this crypto engine is using, the cell
|
||||
describing the NPE instance to be used.
|
||||
|
||||
queue-rx:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
maxItems: 1
|
||||
description: phandle to the RX queue on the NPE, the cell describing
|
||||
the queue instance to be used.
|
||||
|
||||
queue-txready:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
maxItems: 1
|
||||
description: phandle to the TX READY queue on the NPE, the cell describing
|
||||
the queue instance to be used.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- intel,npe-handle
|
||||
- queue-rx
|
||||
- queue-txready
|
||||
|
||||
additionalProperties: false
|
||||
@@ -26,9 +26,16 @@ properties:
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: NPE0 register range
|
||||
- description: NPE1 register range
|
||||
- description: NPE2 register range
|
||||
- description: NPE0 (NPE-A) register range
|
||||
- description: NPE1 (NPE-B) register range
|
||||
- description: NPE2 (NPE-C) register range
|
||||
|
||||
crypto:
|
||||
$ref: /schemas/crypto/intel,ixp4xx-crypto.yaml#
|
||||
type: object
|
||||
description: Optional node for the embedded crypto engine, the node
|
||||
should be named with the instance number of the NPE engine used for
|
||||
the crypto engine.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
@@ -38,8 +45,15 @@ additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
npe@c8006000 {
|
||||
npe: npe@c8006000 {
|
||||
compatible = "intel,ixp4xx-network-processing-engine";
|
||||
reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>;
|
||||
|
||||
crypto {
|
||||
compatible = "intel,ixp4xx-crypto";
|
||||
intel,npe-handle = <&npe 2>;
|
||||
queue-rx = <&qmgr 30>;
|
||||
queue-txready = <&qmgr 29>;
|
||||
};
|
||||
};
|
||||
...
|
||||
|
||||
23
MAINTAINERS
23
MAINTAINERS
@@ -1811,6 +1811,7 @@ F: Documentation/devicetree/bindings/net/cortina,gemini-ethernet.txt
|
||||
F: Documentation/devicetree/bindings/pinctrl/cortina,gemini-pinctrl.txt
|
||||
F: Documentation/devicetree/bindings/rtc/faraday,ftrtc010.txt
|
||||
F: arch/arm/mach-gemini/
|
||||
F: drivers/crypto/gemini/
|
||||
F: drivers/net/ethernet/cortina/
|
||||
F: drivers/pinctrl/pinctrl-gemini.c
|
||||
F: drivers/rtc/rtc-ftrtc010.c
|
||||
@@ -1972,6 +1973,7 @@ F: Documentation/devicetree/bindings/interrupt-controller/intel,ixp4xx-interrupt
|
||||
F: Documentation/devicetree/bindings/timer/intel,ixp4xx-timer.yaml
|
||||
F: arch/arm/mach-ixp4xx/
|
||||
F: drivers/clocksource/timer-ixp4xx.c
|
||||
F: drivers/crypto/ixp4xx_crypto.c
|
||||
F: drivers/gpio/gpio-ixp4xx.c
|
||||
F: drivers/irqchip/irq-ixp4xx.c
|
||||
F: include/linux/irqchip/irq-ixp4xx.h
|
||||
@@ -7179,7 +7181,7 @@ F: include/video/
|
||||
|
||||
FREESCALE CAAM (Cryptographic Acceleration and Assurance Module) DRIVER
|
||||
M: Horia Geantă <horia.geanta@nxp.com>
|
||||
M: Aymen Sghaier <aymen.sghaier@nxp.com>
|
||||
M: Pankaj Gupta <pankaj.gupta@nxp.com>
|
||||
L: linux-crypto@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/crypto/fsl-sec4.txt
|
||||
@@ -7569,6 +7571,12 @@ M: Kieran Bingham <kbingham@kernel.org>
|
||||
S: Supported
|
||||
F: scripts/gdb/
|
||||
|
||||
GEMINI CRYPTO DRIVER
|
||||
M: Corentin Labbe <clabbe@baylibre.com>
|
||||
L: linux-crypto@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/crypto/gemini/
|
||||
|
||||
GEMTEK FM RADIO RECEIVER DRIVER
|
||||
M: Hans Verkuil <hverkuil@xs4all.nl>
|
||||
L: linux-media@vger.kernel.org
|
||||
@@ -9240,6 +9248,12 @@ F: Documentation/admin-guide/media/ipu3_rcb.svg
|
||||
F: Documentation/userspace-api/media/v4l/pixfmt-meta-intel-ipu3.rst
|
||||
F: drivers/staging/media/ipu3/
|
||||
|
||||
INTEL IXP4XX CRYPTO SUPPORT
|
||||
M: Corentin Labbe <clabbe@baylibre.com>
|
||||
L: linux-crypto@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/crypto/ixp4xx_crypto.c
|
||||
|
||||
INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
|
||||
M: Krzysztof Halasa <khalasa@piap.pl>
|
||||
S: Maintained
|
||||
@@ -15143,6 +15157,13 @@ S: Maintained
|
||||
F: Documentation/devicetree/bindings/opp/qcom-nvmem-cpufreq.txt
|
||||
F: drivers/cpufreq/qcom-cpufreq-nvmem.c
|
||||
|
||||
QUALCOMM CRYPTO DRIVERS
|
||||
M: Thara Gopinath <thara.gopinath@linaro.org>
|
||||
L: linux-crypto@vger.kernel.org
|
||||
L: linux-arm-msm@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/crypto/qce/
|
||||
|
||||
QUALCOMM EMAC GIGABIT ETHERNET DRIVER
|
||||
M: Timur Tabi <timur@kernel.org>
|
||||
L: netdev@vger.kernel.org
|
||||
|
||||
@@ -45,20 +45,12 @@ poly1305-arm-y := poly1305-core.o poly1305-glue.o
|
||||
nhpoly1305-neon-y := nh-neon-core.o nhpoly1305-neon-glue.o
|
||||
curve25519-neon-y := curve25519-core.o curve25519-glue.o
|
||||
|
||||
ifdef REGENERATE_ARM_CRYPTO
|
||||
quiet_cmd_perl = PERL $@
|
||||
cmd_perl = $(PERL) $(<) > $(@)
|
||||
|
||||
$(src)/poly1305-core.S_shipped: $(src)/poly1305-armv4.pl
|
||||
$(obj)/%-core.S: $(src)/%-armv4.pl
|
||||
$(call cmd,perl)
|
||||
|
||||
$(src)/sha256-core.S_shipped: $(src)/sha256-armv4.pl
|
||||
$(call cmd,perl)
|
||||
|
||||
$(src)/sha512-core.S_shipped: $(src)/sha512-armv4.pl
|
||||
$(call cmd,perl)
|
||||
endif
|
||||
|
||||
clean-files += poly1305-core.S sha256-core.S sha512-core.S
|
||||
|
||||
# massage the perlasm code a bit so we only get the NEON routine if we need it
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -233,12 +233,38 @@ static struct platform_device *ixp46x_devices[] __initdata = {
|
||||
unsigned long ixp4xx_exp_bus_size;
|
||||
EXPORT_SYMBOL(ixp4xx_exp_bus_size);
|
||||
|
||||
static struct platform_device_info ixp_dev_info __initdata = {
|
||||
.name = "ixp4xx_crypto",
|
||||
.id = 0,
|
||||
.dma_mask = DMA_BIT_MASK(32),
|
||||
};
|
||||
|
||||
static int __init ixp_crypto_register(void)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
|
||||
if (!(~(*IXP4XX_EXP_CFG2) & (IXP4XX_FEATURE_HASH |
|
||||
IXP4XX_FEATURE_AES | IXP4XX_FEATURE_DES))) {
|
||||
printk(KERN_ERR "ixp_crypto: No HW crypto available\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
pdev = platform_device_register_full(&ixp_dev_info);
|
||||
if (IS_ERR(pdev))
|
||||
return PTR_ERR(pdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __init ixp4xx_sys_init(void)
|
||||
{
|
||||
ixp4xx_exp_bus_size = SZ_16M;
|
||||
|
||||
platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices));
|
||||
|
||||
if (IS_ENABLED(CONFIG_CRYPTO_DEV_IXP4XX))
|
||||
ixp_crypto_register();
|
||||
|
||||
if (cpu_is_ixp46x()) {
|
||||
int region;
|
||||
|
||||
|
||||
@@ -68,19 +68,13 @@ CFLAGS_aes-glue-ce.o := -DUSE_V8_CRYPTO_EXTENSIONS
|
||||
$(obj)/aes-glue-%.o: $(src)/aes-glue.c FORCE
|
||||
$(call if_changed_rule,cc_o_c)
|
||||
|
||||
ifdef REGENERATE_ARM64_CRYPTO
|
||||
quiet_cmd_perlasm = PERLASM $@
|
||||
cmd_perlasm = $(PERL) $(<) void $(@)
|
||||
|
||||
$(src)/poly1305-core.S_shipped: $(src)/poly1305-armv8.pl
|
||||
$(obj)/%-core.S: $(src)/%-armv8.pl
|
||||
$(call cmd,perlasm)
|
||||
|
||||
$(src)/sha256-core.S_shipped: $(src)/sha512-armv8.pl
|
||||
$(obj)/sha256-core.S: $(src)/sha512-armv8.pl
|
||||
$(call cmd,perlasm)
|
||||
|
||||
$(src)/sha512-core.S_shipped: $(src)/sha512-armv8.pl
|
||||
$(call cmd,perlasm)
|
||||
|
||||
endif
|
||||
|
||||
clean-files += poly1305-core.S sha256-core.S sha512-core.S
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1500,7 +1500,7 @@ static int __init curve25519_mod_init(void)
|
||||
static void __exit curve25519_mod_exit(void)
|
||||
{
|
||||
if (IS_REACHABLE(CONFIG_CRYPTO_KPP) &&
|
||||
(boot_cpu_has(X86_FEATURE_BMI2) || boot_cpu_has(X86_FEATURE_ADX)))
|
||||
static_branch_likely(&curve25519_use_bmi2_adx))
|
||||
crypto_unregister_kpp(&curve25519_alg);
|
||||
}
|
||||
|
||||
|
||||
@@ -411,7 +411,7 @@ int af_alg_make_sg(struct af_alg_sgl *sgl, struct iov_iter *iter, int len)
|
||||
if (n < 0)
|
||||
return n;
|
||||
|
||||
npages = (off + n + PAGE_SIZE - 1) >> PAGE_SHIFT;
|
||||
npages = DIV_ROUND_UP(off + n, PAGE_SIZE);
|
||||
if (WARN_ON(npages == 0))
|
||||
return -EINVAL;
|
||||
/* Add one extra for linking */
|
||||
|
||||
@@ -868,24 +868,6 @@ const char *crypto_attr_alg_name(struct rtattr *rta)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(crypto_attr_alg_name);
|
||||
|
||||
int crypto_attr_u32(struct rtattr *rta, u32 *num)
|
||||
{
|
||||
struct crypto_attr_u32 *nu32;
|
||||
|
||||
if (!rta)
|
||||
return -ENOENT;
|
||||
if (RTA_PAYLOAD(rta) < sizeof(*nu32))
|
||||
return -EINVAL;
|
||||
if (rta->rta_type != CRYPTOA_U32)
|
||||
return -EINVAL;
|
||||
|
||||
nu32 = RTA_DATA(rta);
|
||||
*num = nu32->num;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(crypto_attr_u32);
|
||||
|
||||
int crypto_inst_setname(struct crypto_instance *inst, const char *name,
|
||||
struct crypto_alg *alg)
|
||||
{
|
||||
|
||||
@@ -28,16 +28,9 @@ struct cryptomgr_param {
|
||||
struct crypto_attr_type data;
|
||||
} type;
|
||||
|
||||
union {
|
||||
struct {
|
||||
struct rtattr attr;
|
||||
struct {
|
||||
struct rtattr attr;
|
||||
struct crypto_attr_alg data;
|
||||
} alg;
|
||||
struct {
|
||||
struct rtattr attr;
|
||||
struct crypto_attr_u32 data;
|
||||
} nu32;
|
||||
struct crypto_attr_alg data;
|
||||
} attrs[CRYPTO_MAX_ATTRS];
|
||||
|
||||
char template[CRYPTO_MAX_ALG_NAME];
|
||||
@@ -104,12 +97,10 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)
|
||||
|
||||
i = 0;
|
||||
for (;;) {
|
||||
int notnum = 0;
|
||||
|
||||
name = ++p;
|
||||
|
||||
for (; isalnum(*p) || *p == '-' || *p == '_'; p++)
|
||||
notnum |= !isdigit(*p);
|
||||
;
|
||||
|
||||
if (*p == '(') {
|
||||
int recursion = 0;
|
||||
@@ -123,7 +114,6 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)
|
||||
break;
|
||||
}
|
||||
|
||||
notnum = 1;
|
||||
p++;
|
||||
}
|
||||
|
||||
@@ -131,18 +121,9 @@ static int cryptomgr_schedule_probe(struct crypto_larval *larval)
|
||||
if (!len)
|
||||
goto err_free_param;
|
||||
|
||||
if (notnum) {
|
||||
param->attrs[i].alg.attr.rta_len =
|
||||
sizeof(param->attrs[i].alg);
|
||||
param->attrs[i].alg.attr.rta_type = CRYPTOA_ALG;
|
||||
memcpy(param->attrs[i].alg.data.name, name, len);
|
||||
} else {
|
||||
param->attrs[i].nu32.attr.rta_len =
|
||||
sizeof(param->attrs[i].nu32);
|
||||
param->attrs[i].nu32.attr.rta_type = CRYPTOA_U32;
|
||||
param->attrs[i].nu32.data.num =
|
||||
simple_strtol(name, NULL, 0);
|
||||
}
|
||||
param->attrs[i].attr.rta_len = sizeof(param->attrs[i]);
|
||||
param->attrs[i].attr.rta_type = CRYPTOA_ALG;
|
||||
memcpy(param->attrs[i].data.name, name, len);
|
||||
|
||||
param->tb[i + 1] = ¶m->attrs[i].attr;
|
||||
i++;
|
||||
|
||||
@@ -176,18 +176,18 @@ static const struct drbg_core drbg_cores[] = {
|
||||
.blocklen_bytes = 48,
|
||||
.cra_name = "hmac_sha384",
|
||||
.backend_cra_name = "hmac(sha384)",
|
||||
}, {
|
||||
.flags = DRBG_HMAC | DRBG_STRENGTH256,
|
||||
.statelen = 64, /* block length of cipher */
|
||||
.blocklen_bytes = 64,
|
||||
.cra_name = "hmac_sha512",
|
||||
.backend_cra_name = "hmac(sha512)",
|
||||
}, {
|
||||
.flags = DRBG_HMAC | DRBG_STRENGTH256,
|
||||
.statelen = 32, /* block length of cipher */
|
||||
.blocklen_bytes = 32,
|
||||
.cra_name = "hmac_sha256",
|
||||
.backend_cra_name = "hmac(sha256)",
|
||||
}, {
|
||||
.flags = DRBG_HMAC | DRBG_STRENGTH256,
|
||||
.statelen = 64, /* block length of cipher */
|
||||
.blocklen_bytes = 64,
|
||||
.cra_name = "hmac_sha512",
|
||||
.backend_cra_name = "hmac(sha512)",
|
||||
},
|
||||
#endif /* CONFIG_CRYPTO_DRBG_HMAC */
|
||||
};
|
||||
|
||||
@@ -141,7 +141,7 @@ static struct kpp_alg ecdh_nist_p192 = {
|
||||
.init = ecdh_nist_p192_init_tfm,
|
||||
.base = {
|
||||
.cra_name = "ecdh-nist-p192",
|
||||
.cra_driver_name = "ecdh-generic",
|
||||
.cra_driver_name = "ecdh-nist-p192-generic",
|
||||
.cra_priority = 100,
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_ctxsize = sizeof(struct ecdh_ctx),
|
||||
@@ -166,7 +166,32 @@ static struct kpp_alg ecdh_nist_p256 = {
|
||||
.init = ecdh_nist_p256_init_tfm,
|
||||
.base = {
|
||||
.cra_name = "ecdh-nist-p256",
|
||||
.cra_driver_name = "ecdh-generic",
|
||||
.cra_driver_name = "ecdh-nist-p256-generic",
|
||||
.cra_priority = 100,
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_ctxsize = sizeof(struct ecdh_ctx),
|
||||
},
|
||||
};
|
||||
|
||||
static int ecdh_nist_p384_init_tfm(struct crypto_kpp *tfm)
|
||||
{
|
||||
struct ecdh_ctx *ctx = ecdh_get_ctx(tfm);
|
||||
|
||||
ctx->curve_id = ECC_CURVE_NIST_P384;
|
||||
ctx->ndigits = ECC_CURVE_NIST_P384_DIGITS;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct kpp_alg ecdh_nist_p384 = {
|
||||
.set_secret = ecdh_set_secret,
|
||||
.generate_public_key = ecdh_compute_value,
|
||||
.compute_shared_secret = ecdh_compute_value,
|
||||
.max_size = ecdh_max_size,
|
||||
.init = ecdh_nist_p384_init_tfm,
|
||||
.base = {
|
||||
.cra_name = "ecdh-nist-p384",
|
||||
.cra_driver_name = "ecdh-nist-p384-generic",
|
||||
.cra_priority = 100,
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_ctxsize = sizeof(struct ecdh_ctx),
|
||||
@@ -179,10 +204,27 @@ static int ecdh_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* NIST p192 will fail to register in FIPS mode */
|
||||
ret = crypto_register_kpp(&ecdh_nist_p192);
|
||||
ecdh_nist_p192_registered = ret == 0;
|
||||
|
||||
return crypto_register_kpp(&ecdh_nist_p256);
|
||||
ret = crypto_register_kpp(&ecdh_nist_p256);
|
||||
if (ret)
|
||||
goto nist_p256_error;
|
||||
|
||||
ret = crypto_register_kpp(&ecdh_nist_p384);
|
||||
if (ret)
|
||||
goto nist_p384_error;
|
||||
|
||||
return 0;
|
||||
|
||||
nist_p384_error:
|
||||
crypto_unregister_kpp(&ecdh_nist_p256);
|
||||
|
||||
nist_p256_error:
|
||||
if (ecdh_nist_p192_registered)
|
||||
crypto_unregister_kpp(&ecdh_nist_p192);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void ecdh_exit(void)
|
||||
@@ -190,6 +232,7 @@ static void ecdh_exit(void)
|
||||
if (ecdh_nist_p192_registered)
|
||||
crypto_unregister_kpp(&ecdh_nist_p192);
|
||||
crypto_unregister_kpp(&ecdh_nist_p256);
|
||||
crypto_unregister_kpp(&ecdh_nist_p384);
|
||||
}
|
||||
|
||||
subsys_initcall(ecdh_init);
|
||||
|
||||
@@ -29,6 +29,18 @@ struct crypto_larval {
|
||||
u32 mask;
|
||||
};
|
||||
|
||||
enum {
|
||||
CRYPTOA_UNSPEC,
|
||||
CRYPTOA_ALG,
|
||||
CRYPTOA_TYPE,
|
||||
__CRYPTOA_MAX,
|
||||
};
|
||||
|
||||
#define CRYPTOA_MAX (__CRYPTOA_MAX - 1)
|
||||
|
||||
/* Maximum number of (rtattr) parameters for each template. */
|
||||
#define CRYPTO_MAX_ATTRS 32
|
||||
|
||||
extern struct list_head crypto_alg_list;
|
||||
extern struct rw_semaphore crypto_alg_sem;
|
||||
extern struct blocking_notifier_head crypto_chain;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user