Kernel Crypto

一、Kernel Crypto Arch

基于kernel 5.13 对crypto目录粗略分类

1、crypto_register_alg/crypto_register_algs

crypto_register_alg

arch/arm/crypto/aes-cipher-glue.c, line 54
arch/arm64/crypto/aes-ce-glue.c, line 170
arch/arm64/crypto/aes-cipher-glue.c, line 49
arch/arm64/crypto/sm4-ce-glue.c, line 65
arch/powerpc/crypto/aes-spe-glue.c, line 493
arch/s390/crypto/aes_s390.c, line 1000
arch/s390/crypto/des_s390.c, line 407
arch/sparc/crypto/aes_glue.c, line 451
arch/sparc/crypto/camellia_glue.c, line 270
arch/x86/crypto/aesni-intel_glue.c, line 1163
arch/x86/crypto/blowfish_glue.c, line 330
arch/x86/crypto/camellia_glue.c, line 1392
arch/x86/crypto/des3_ede_glue.c, line 374
arch/x86/crypto/twofish_glue.c, line 86
crypto/842.c, line 126
crypto/acompress.c, line 158
crypto/aead.c, line 247
crypto/aes_generic.c, line 1306
crypto/aes_ti.c, line 70
crypto/ahash.c, line 593
crypto/akcipher.c, line 137
crypto/algapi.c
line 432
line 472
crypto/anubis.c, line 692
crypto/blowfish_generic.c, line 118
crypto/camellia_generic.c, line 1059
crypto/cast5_generic.c, line 526
crypto/cast6_generic.c, line 266
crypto/deflate.c, line 315
crypto/fcrypt.c, line 406
crypto/khazad.c, line 869
crypto/kpp.c, line 104
crypto/lz4.c, line 136
crypto/lz4hc.c, line 137
crypto/lzo-rle.c, line 139
crypto/lzo.c, line 139
crypto/rng.c, line 188
crypto/scompress.c, line 265
crypto/seed.c, line 461
crypto/serpent_generic.c, line 594
crypto/shash.c, line 564
crypto/skcipher.c, line 819
crypto/sm4_generic.c, line 226
crypto/twofish_generic.c, line 182
crypto/zstd.c, line 236
drivers/crypto/cavium/zip/zip_main.c
line 406
line 412
drivers/crypto/geode-aes.c, line 389
drivers/crypto/nx/nx-842-pseries.c, line 1020
drivers/crypto/nx/nx-common-powernv.c, line 1113
drivers/crypto/padlock-aes.c, line 496
drivers/crypto/vmx/vmx.c, line 30

crypto_register_algs

arch/sparc/crypto/des_glue.c, line 458
crypto/algapi.c, line 485
crypto/crypto_null.c, line 192
crypto/des_generic.c, line 117
crypto/tea.c, line 263

 

2、crypto_register_template/crypto_register_templates

crypto_register_template

crypto/adiantum.c, line 605
crypto/algapi.c
line 516
line 523
crypto/authenc.c, line 456
crypto/authencesn.c, line 471
crypto/cbc.c, line 210
crypto/cfb.c, line 240
crypto/cmac.c, line 303
crypto/cryptd.c, line 1076
crypto/cts.c, line 397
crypto/ecb.c, line 91
crypto/echainiv.c, line 152
crypto/essiv.c, line 633
crypto/hmac.c, line 246
crypto/keywrap.c, line 305
crypto/lrw.c, line 417
crypto/ofb.c, line 92
crypto/pcbc.c, line 181
crypto/pcrypt.c, line 352
crypto/rsa.c, line 266
crypto/seqiv.c, line 175
crypto/vmac.c, line 683
crypto/xcbc.c, line 262
crypto/xts.c, line 454

crypto_register_templates

crypto/algapi.c, line 534
crypto/ccm.c, line 939
crypto/chacha20poly1305.c, line 661
crypto/ctr.c, line 345
crypto/gcm.c, line 1144

 

3、crypto_register_aead

 crypto_register_aead

arch/arm64/crypto/aes-ce-ccm-glue.c, line 363
arch/arm64/crypto/ghash-ce-glue.c, line 605
arch/s390/crypto/aes_s390.c, line 1040
crypto/aead.c
line 249
line 262
crypto/aegis128-core.c
line 548
line 554
crypto/simd.c, line 441
drivers/crypto/amcc/crypto4xx_core.c, line 1024
drivers/crypto/atmel-aes.c
line 2390
line 2408
drivers/crypto/bcm/cipher.c, line 4559
drivers/crypto/caam/caamalg.c, line 3639
drivers/crypto/caam/caamalg_qi.c, line 2712
drivers/crypto/caam/caamalg_qi2.c, line 5309
drivers/crypto/ccp/ccp-crypto-aes-galois.c, line 231
drivers/crypto/ccree/cc_aead.c, line 2646
drivers/crypto/chelsio/chcr_algo.c, line 4463
drivers/crypto/inside-secure/safexcel.c, line 1282
drivers/crypto/ixp4xx_crypto.c, line 1472
drivers/crypto/nx/nx.c, line 524
drivers/crypto/omap-aes.c, line 1216
drivers/crypto/sa2ul.c, line 2233
drivers/crypto/talitos.c, line 3510
drivers/crypto/xilinx/zynqmp-aes-gcm.c, line 408

 

4、crypto_register_shash/crypto_register_shashes

 crypto_register_shash

arch/arm/crypto/crct10dif-ce-glue.c, line 75
arch/arm/crypto/ghash-ce-glue.c, line 359
arch/arm/crypto/nhpoly1305-neon-glue.c, line 63
arch/arm/crypto/poly1305-glue.c, line 248
arch/arm/crypto/sha1-ce-glue.c, line 83
arch/arm/crypto/sha1_glue.c, line 72
arch/arm/crypto/sha1_neon_glue.c, line 91
arch/arm64/crypto/crct10dif-ce-glue.c, line 125
arch/arm64/crypto/ghash-ce-glue.c, line 607
arch/arm64/crypto/nhpoly1305-neon-glue.c, line 63
arch/arm64/crypto/poly1305-glue.c, line 217
arch/arm64/crypto/sha1-ce-glue.c, line 138
arch/arm64/crypto/sm3-ce-glue.c, line 80
arch/mips/cavium-octeon/crypto/octeon-md5.c, line 195
arch/mips/cavium-octeon/crypto/octeon-sha1.c, line 223
arch/mips/crypto/crc32-mips.c
line 320
line 325
arch/mips/crypto/poly1305-glue.c, line 177
arch/powerpc/crypto/crc32c-vpmsum_glue.c, line 158
arch/powerpc/crypto/crct10dif-vpmsum_glue.c, line 111
arch/powerpc/crypto/md5-glue.c, line 143
arch/powerpc/crypto/sha1-spe-glue.c, line 189
arch/powerpc/crypto/sha1.c, line 134
arch/s390/crypto/ghash_s390.c, line 140
arch/s390/crypto/sha1_s390.c, line 90
arch/s390/crypto/sha256_s390.c
line 121
line 124
arch/s390/crypto/sha3_256_s390.c
line 123
line 127
arch/s390/crypto/sha3_512_s390.c
line 134
line 137
arch/s390/crypto/sha512_s390.c
line 131
line 133
arch/sparc/crypto/crc32c_glue.c, line 162
arch/sparc/crypto/md5_glue.c, line 171
arch/sparc/crypto/sha1_glue.c, line 165
arch/sparc/crypto/sha256_glue.c
line 209
line 213
arch/sparc/crypto/sha512_glue.c
line 194
line 198
arch/x86/crypto/crc32-pclmul_glue.c, line 186
arch/x86/crypto/crc32c-intel_glue.c, line 234
arch/x86/crypto/crct10dif-pclmul_glue.c, line 127
arch/x86/crypto/ghash-clmulni-intel_glue.c, line 328
arch/x86/crypto/nhpoly1305-avx2-glue.c, line 64
arch/x86/crypto/nhpoly1305-sse2-glue.c, line 63
arch/x86/crypto/poly1305_glue.c, line 274
arch/x86/crypto/sha1_ssse3_glue.c
line 106
line 166
line 237
line 287
crypto/crc32_generic.c, line 117
crypto/crc32c_generic.c, line 153
crypto/crct10dif_generic.c, line 107
crypto/crypto_null.c, line 196
crypto/ghash-generic.c, line 170
crypto/md4.c, line 228
crypto/md5.c, line 237
crypto/michael_mic.c, line 160
crypto/nhpoly1305.c, line 240
crypto/poly1305_generic.c, line 134
crypto/rmd160.c, line 353
crypto/sha1_generic.c, line 81
crypto/shash.c
line 566
line 579
crypto/sm3_generic.c, line 184
crypto/xxhash_generic.c, line 91
drivers/crypto/nx/nx.c, line 532
drivers/crypto/padlock-sha.c
line 519
line 523
drivers/crypto/vmx/vmx.c, line 26

 crypto_register_shashes

arch/arm/crypto/blake2b-neon-glue.c, line 82
arch/arm/crypto/blake2s-glue.c, line 54
arch/arm/crypto/crc32-ce-glue.c, line 225
arch/arm/crypto/poly1305-glue.c, line 251
arch/arm/crypto/sha2-ce-glue.c, line 100
arch/arm/crypto/sha256_glue.c
line 89
line 95
arch/arm/crypto/sha512-glue.c
line 86
line 92
arch/arm64/crypto/aes-glue.c, line 1027
arch/arm64/crypto/crct10dif-ce-glue.c, line 121
arch/arm64/crypto/sha2-ce-glue.c, line 174
arch/arm64/crypto/sha256-glue.c
line 175
line 180
arch/arm64/crypto/sha3-ce-glue.c, line 157
arch/arm64/crypto/sha512-ce-glue.c, line 112
arch/arm64/crypto/sha512-glue.c, line 83
arch/mips/cavium-octeon/crypto/octeon-sha256.c, line 259
arch/mips/cavium-octeon/crypto/octeon-sha512.c, line 256
arch/powerpc/crypto/sha256-spe-glue.c, line 251
arch/s390/crypto/crc32-vx.c, line 292
arch/x86/crypto/blake2s-glue.c, line 113
arch/x86/crypto/sha256_ssse3_glue.c
line 134
line 210
line 284
line 350
arch/x86/crypto/sha512_ssse3_glue.c
line 132
line 208
line 283
crypto/blake2b_generic.c, line 166
crypto/blake2s_generic.c, line 56
crypto/sha256_generic.c, line 105
crypto/sha3_generic.c, line 284
crypto/sha512_generic.c, line 213
crypto/shash.c, line 592
crypto/streebog_generic.c, line 1077
crypto/wp512.c, line 1162
drivers/crypto/stm32/stm32-crc32.c, line 364

 

5、crypto_register_skcipher/crypto_register_skciphers

 crypto_register_skcipher

arch/s390/crypto/aes_s390.c, line 968
arch/s390/crypto/des_s390.c, line 417
arch/s390/crypto/paes_s390.c
line 757
line 765
line 772
line 785
crypto/arc4.c, line 73
crypto/crypto_null.c, line 200
crypto/simd.c, line 194
crypto/skcipher.c
line 821
line 834
drivers/crypto/allwinner/sun4i-ss/sun4i-ss-core.c, line 474
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c, line 796
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c, line 589
drivers/crypto/amcc/crypto4xx_core.c, line 1036
drivers/crypto/amlogic/amlogic-gxl-core.c, line 186
drivers/crypto/atmel-aes.c
line 2374
line 2382
line 2398
drivers/crypto/atmel-tdes.c, line 1119
drivers/crypto/bcm/cipher.c, line 4475
drivers/crypto/caam/caamalg.c, line 3587
drivers/crypto/caam/caamalg_qi.c, line 2666
drivers/crypto/caam/caamalg_qi2.c, line 5259
drivers/crypto/ccp/ccp-crypto-aes-xts.c, line 262
drivers/crypto/ccp/ccp-crypto-aes.c, line 333
drivers/crypto/ccp/ccp-crypto-des3.c, line 203
drivers/crypto/ccree/cc_cipher.c, line 1491
drivers/crypto/chelsio/chcr_algo.c, line 4451
drivers/crypto/hifn_795x.c, line 2411
drivers/crypto/inside-secure/safexcel.c, line 1280
drivers/crypto/ixp4xx_crypto.c, line 1439
drivers/crypto/marvell/cesa/cesa.c, line 196
drivers/crypto/n2_core.c, line 1349
drivers/crypto/nx/nx.c, line 518
drivers/crypto/omap-aes.c, line 1200
drivers/crypto/omap-des.c, line 1059
drivers/crypto/padlock-aes.c
line 499
line 502
drivers/crypto/qce/skcipher.c, line 485
drivers/crypto/rockchip/rk3288_crypto.c, line 268
drivers/crypto/s5p-sss.c, line 2262
drivers/crypto/sa2ul.c, line 2227
drivers/crypto/sahara.c, line 1303
drivers/crypto/talitos.c, line 3504
drivers/crypto/ux500/cryp/cryp_core.c, line 1228
drivers/crypto/virtio/virtio_crypto_algs.c, line 632
drivers/crypto/vmx/vmx.c

 crypto_register_skciphers

arch/arm/crypto/aes-ce-glue.c, line 703
arch/arm/crypto/aes-neonbs-glue.c, line 538
arch/arm/crypto/chacha-glue.c
line 301
line 325
arch/arm64/crypto/aes-glue.c, line 1023
arch/arm64/crypto/aes-neonbs-glue.c, line 540
arch/arm64/crypto/chacha-neon-glue.c, line 223
arch/mips/crypto/chacha-glue.c, line 132
arch/powerpc/crypto/aes-spe-glue.c, line 497
arch/sparc/crypto/aes_glue.c, line 454
arch/sparc/crypto/camellia_glue.c, line 273
arch/sparc/crypto/des_glue.c, line 461
arch/x86/crypto/blowfish_glue.c, line 334
arch/x86/crypto/camellia_glue.c, line 1396
arch/x86/crypto/chacha_glue.c, line 297
arch/x86/crypto/des3_ede_glue.c, line 378
arch/x86/crypto/twofish_glue_3way.c, line 153
crypto/chacha_generic.c, line 120
crypto/simd.c, line 239
crypto/skcipher.c, line 847
drivers/crypto/axis/artpec6_crypto.c, line 2935
drivers/crypto/cavium/cpt/cptvf_algs.c, line 454
drivers/crypto/cavium/nitrox/nitrox_skcipher.c, line 544
drivers/crypto/geode-aes.c, line 393
drivers/crypto/hisilicon/sec/sec_algs.c, line 1104
drivers/crypto/hisilicon/sec2/sec_crypto.c, line 1671
drivers/crypto/keembay/keembay-ocs-aes-core.c, line 1563
drivers/crypto/marvell/octeontx/otx_cptvf_algs.c, line 1600
drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c, line 1641
drivers/crypto/mxs-dcp.c, line 1087
drivers/crypto/qat/qat_common/qat_algs.c, line 1550
drivers/crypto/stm32/stm32-cryp.c, line 2002

 

6、crypto_register_rng/crypto_register_rngs

 crypto_register_rngs

crypto/ansi_cprng.c, line 457
crypto/drbg.c, line 2138
crypto/rng.c, line 216

 crypto_register_rng

crypto/jitterentropy-kcapi.c, line 209
crypto/rng.c
line 190
line 203
drivers/crypto/allwinner/sun4i-ss/sun4i-ss-core.c, line 490
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c, line 834
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c, line 598
drivers/crypto/amcc/crypto4xx_core.c, line 1032
drivers/crypto/exynos-rng.c, line 299
drivers/crypto/hisilicon/trng/trng.c, line 276
drivers/crypto/qcom-rng.c, line 182

 

7、crypto_register_kpp

crypto_register_kpp

arch/arm/crypto/curve25519-glue.c, line 120
arch/x86/crypto/curve25519-x86_64.c, line 1497
crypto/curve25519-generic.c, line 77
crypto/dh.c, line 265
crypto/ecdh.c
line 183
line 186
crypto/kpp.c, line 106
drivers/crypto/atmel-ecc.c, line 331
drivers/crypto/hisilicon/hpre/hpre_crypto.c
line 2005
line 2009
line 2033
line 2041
drivers/crypto/qat/qat_common/qat_asym_algs.c, line 1295

 

8、crypto_register_akcipher

crypto_register_akcipher

crypto/akcipher.c, line 139
crypto/ecdsa.c
line 340
line 343
line 347
crypto/ecrdsa.c, line 283
crypto/rsa.c, line 262
crypto/sm2.c, line 446
drivers/crypto/caam/caampkc.c, line 1177
drivers/crypto/ccp/ccp-crypto-rsa.c, line 263
drivers/crypto/hisilicon/hpre/hpre_crypto.c, line 2029
drivers/crypto/qat/qat_common/qat_asym_algs.c, line 1292

 

9、crypto_register_notifier

crypto_register_notifier

crypto/algapi.c, line 795
crypto/algboss.c, line 273
lib/crc-t10dif.c, line 95

 

10、af_alg_register_type

af_alg_register_type socket驱动

crypto/af_alg.c, line 87
crypto/algif_aead.c, line 592
crypto/algif_hash.c, line 470
crypto/algif_rng.c, line 332
crypto/algif_skcipher.c, line 377

 

11、其它文件

crypto/af_alg.c socket驱动
crypto/crypto_engine.c
crypto/crypto_user_base.c netlink通信
crypto/proc.c
crypto/scatterwalk.c
crypto/simd.c
crypto/tcrypt.c
crypto/testmgr.c

 

二、驱动

1、AES硬件加速引擎驱动代码

https://elixir.bootlin.com/linux/v5.13.13/source/drivers/crypto/geode-aes.c

https://elixir.bootlin.com/linux/v5.13.13/source/drivers/crypto/omap-aes.c

2、硬件加速驱动是否有配置 cra_alignmask;字段

 * @cra_alignmask: Alignment mask for the input and output data buffer. The data
 *           buffer containing the input data for the algorithm must be
 *           aligned to this alignment mask. The data buffer for the
 *           output data must be aligned to this alignment mask. Note that
 *           the Crypto API will do the re-alignment in software, but
 *           only under special conditions and there is a performance hit.
 *           The re-alignment happens at these occasions for different
 *           @cra_u types: cipher -- For both input data and output data
 *           buffer; ahash -- For output hash destination buf; shash --
 *           For output hash destination buf.
 *           This is needed on hardware which is flawed by design and
 *           cannot pick data from arbitrary addresses.

 

posted @ 2021-08-31 17:59  ReadingLover  阅读(263)  评论(0编辑  收藏  举报