github.com/google/syzkaller@v0.0.0-20240517125934-c0f1611a36d6/sys/linux/init_alg.go (about) 1 // Copyright 2017 syzkaller project authors. All rights reserved. 2 // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. 3 4 package linux 5 6 import ( 7 "math/rand" 8 9 "github.com/google/syzkaller/prog" 10 ) 11 12 func (arch *arch) generateSockaddrAlg(g *prog.Gen, typ0 prog.Type, dir prog.Dir, old prog.Arg) ( 13 arg prog.Arg, calls []*prog.Call) { 14 typ := typ0.(*prog.StructType) 15 family := g.GenerateArg(typ.Fields[0].Type, dir, &calls) 16 // There is very little point in generating feat/mask, 17 // because that can only fail otherwise correct bind. 18 feat := prog.MakeConstArg(typ.Fields[2].Type, dir, 0) 19 mask := prog.MakeConstArg(typ.Fields[3].Type, dir, 0) 20 if g.NOutOf(1, 1000) { 21 feat = g.GenerateArg(typ.Fields[2].Type, dir, &calls).(*prog.ConstArg) 22 mask = g.GenerateArg(typ.Fields[3].Type, dir, &calls).(*prog.ConstArg) 23 } 24 algType, algName := generateAlgName(g.Rand()) 25 // Extend/truncate type/name to their fixed sizes. 26 algTypeData := fixedSizeData(algType, typ.Fields[1].Type.Size()) 27 algNameData := fixedSizeData(algName, typ.Fields[4].Type.Size()) 28 arg = prog.MakeGroupArg(typ, dir, []prog.Arg{ 29 family, 30 prog.MakeDataArg(typ.Fields[1].Type, dir, algTypeData), 31 feat, 32 mask, 33 prog.MakeDataArg(typ.Fields[4].Type, dir, algNameData), 34 }) 35 return 36 } 37 38 func (arch *arch) generateAlgName(g *prog.Gen, typ prog.Type, dir prog.Dir, old prog.Arg) ( 39 arg prog.Arg, calls []*prog.Call) { 40 return generateAlgNameStruct(g, typ, dir, allTypes[g.Rand().Intn(len(allTypes))].typ) 41 } 42 43 func (arch *arch) generateAlgAeadName(g *prog.Gen, typ prog.Type, dir prog.Dir, old prog.Arg) ( 44 arg prog.Arg, calls []*prog.Call) { 45 return generateAlgNameStruct(g, typ, dir, ALG_AEAD) 46 } 47 48 func (arch *arch) generateAlgHashName(g *prog.Gen, typ prog.Type, dir prog.Dir, old prog.Arg) ( 49 arg prog.Arg, calls []*prog.Call) { 50 return generateAlgNameStruct(g, typ, dir, ALG_HASH) 51 } 52 53 func (arch *arch) generateAlgSkcipherhName(g *prog.Gen, typ prog.Type, dir prog.Dir, old prog.Arg) ( 54 arg prog.Arg, calls []*prog.Call) { 55 return generateAlgNameStruct(g, typ, dir, ALG_SKCIPHER) 56 } 57 58 func generateAlgNameStruct(g *prog.Gen, typ0 prog.Type, dir prog.Dir, algTyp int) ( 59 arg prog.Arg, calls []*prog.Call) { 60 typ := typ0.(*prog.StructType) 61 algName := generateAlg(g.Rand(), algTyp) 62 algNameData := fixedSizeData(algName, typ.Fields[0].Size()) 63 arg = prog.MakeGroupArg(typ, dir, []prog.Arg{ 64 prog.MakeDataArg(typ.Fields[0].Type, dir, algNameData), 65 }) 66 return 67 } 68 69 func generateAlgName(rnd *rand.Rand) (string, string) { 70 typ := allTypes[rnd.Intn(len(allTypes))] 71 name := generateAlg(rnd, typ.typ) 72 return typ.name, name 73 } 74 75 func generateAlg(rnd *rand.Rand, typ int) string { 76 algs := allAlgs[typ] 77 alg := algs[rnd.Intn(len(algs))] 78 return generateAlgImpl(rnd, alg) 79 } 80 81 func generateAlgImpl(rnd *rand.Rand, alg algDesc) string { 82 args := "" 83 if len(alg.args) != 0 { 84 args += "(" 85 for i, a := range alg.args { 86 if i != 0 { 87 args += "," 88 } 89 args += generateAlg(rnd, a) 90 } 91 args += ")" 92 } 93 return alg.name + args 94 } 95 96 func fixedSizeData(str string, sz uint64) []byte { 97 return append([]byte(str), make([]byte, sz)...)[:sz] 98 } 99 100 type algType struct { 101 name string 102 typ int 103 } 104 105 type algDesc struct { 106 name string 107 args []int 108 } 109 110 const ( 111 ALG_CIPHER = iota 112 ALG_SKCIPHER 113 ALG_AEAD 114 ALG_HASH 115 ALG_RNG 116 ) 117 118 var allTypes = []algType{ 119 {"aead", ALG_AEAD}, 120 {"skcipher", ALG_SKCIPHER}, 121 {"hash", ALG_HASH}, 122 {"rng", ALG_RNG}, 123 } 124 125 // Algorithms can be extracted with something along the following lines: 126 // 127 // cat /proc/crypto | grep -B 8 ": skcipher" | grep -B 7 "internal : no" | egrep "name |driver " | \ 128 // cut -b 16- | sort | uniq | awk '{printf("{\"%s\", nil},\n", $1)}' 129 // 130 // Note: the kernel needs to include all crypto configs and CPU needs to support AVX/NEON/etc. 131 var allAlgs = map[int][]algDesc{ 132 ALG_AEAD: { 133 // templates: 134 {"authenc", []int{ALG_HASH, ALG_SKCIPHER}}, 135 {"authencesn", []int{ALG_HASH, ALG_SKCIPHER}}, 136 {"ccm", []int{ALG_CIPHER}}, 137 {"ccm_base", []int{ALG_SKCIPHER, ALG_HASH}}, 138 {"echainiv", []int{ALG_AEAD}}, 139 {"essiv", []int{ALG_AEAD, ALG_HASH}}, 140 {"gcm", []int{ALG_CIPHER}}, 141 {"gcm_base", []int{ALG_SKCIPHER, ALG_HASH}}, 142 {"pcrypt", []int{ALG_AEAD}}, 143 {"rfc4106", []int{ALG_AEAD}}, 144 {"rfc4309", []int{ALG_AEAD}}, 145 {"rfc4543", []int{ALG_AEAD}}, 146 {"rfc7539", []int{ALG_SKCIPHER, ALG_HASH}}, 147 {"rfc7539esp", []int{ALG_SKCIPHER, ALG_HASH}}, 148 {"seqiv", []int{ALG_AEAD}}, 149 150 // algorithms: 151 {"aegis128", nil}, 152 {"aegis128-aesni", nil}, 153 {"aegis128-generic", nil}, 154 {"aegis128l", nil}, 155 {"aegis128l-aesni", nil}, 156 {"aegis128l-generic", nil}, 157 {"aegis256", nil}, 158 {"aegis256-aesni", nil}, 159 {"aegis256-generic", nil}, 160 {"ccm-aes-ce", nil}, 161 {"gcm(aes)", nil}, 162 {"gcm-aes-ce", nil}, 163 {"gcm_base(ctr(aes-aesni),ghash-generic)", nil}, 164 {"generic-gcm-aesni", nil}, 165 {"morus1280", nil}, 166 {"morus1280-avx2", nil}, 167 {"morus1280-generic", nil}, 168 {"morus1280-sse2", nil}, 169 {"morus640", nil}, 170 {"morus640-generic", nil}, 171 {"morus640-sse2", nil}, 172 {"rfc4106(gcm(aes))", nil}, 173 {"rfc4106-gcm-aesni", nil}, 174 }, 175 ALG_SKCIPHER: { 176 // templates: 177 {"adiantum", []int{ALG_SKCIPHER, ALG_CIPHER, ALG_HASH}}, 178 {"adiantum", []int{ALG_SKCIPHER, ALG_CIPHER}}, 179 {"cbc", []int{ALG_CIPHER}}, 180 {"cfb", []int{ALG_CIPHER}}, 181 {"cryptd", []int{ALG_SKCIPHER}}, 182 {"ctr", []int{ALG_CIPHER}}, 183 {"cts", []int{ALG_SKCIPHER}}, 184 {"ecb", []int{ALG_CIPHER}}, 185 {"essiv", []int{ALG_SKCIPHER, ALG_HASH}}, 186 {"fpu", []int{ALG_SKCIPHER}}, 187 {"kw", []int{ALG_CIPHER}}, 188 {"lrw", []int{ALG_SKCIPHER}}, 189 {"lrw", []int{ALG_CIPHER}}, 190 {"ofb", []int{ALG_CIPHER}}, 191 {"pcbc", []int{ALG_CIPHER}}, 192 {"rfc3686", []int{ALG_SKCIPHER}}, 193 {"xts", []int{ALG_SKCIPHER}}, 194 {"xts", []int{ALG_CIPHER}}, 195 196 // algorithms: 197 {"cbc(aes)", nil}, 198 {"cbc(aes-aesni)", nil}, 199 {"cbc-aes-aesni", nil}, 200 {"cbc(aes-arm)", nil}, 201 {"cbc(aes-ce)", nil}, 202 {"cbc-aes-ce", nil}, 203 {"cbc-aes-neonbs", nil}, 204 {"cbc(blowfish)", nil}, 205 {"cbc-blowfish-asm", nil}, 206 {"cbc(camellia)", nil}, 207 {"cbc-camellia-aesni", nil}, 208 {"cbc-camellia-aesni-avx2", nil}, 209 {"cbc-camellia-asm", nil}, 210 {"cbc(cast5)", nil}, 211 {"cbc-cast5-avx", nil}, 212 {"cbc(cast6)", nil}, 213 {"cbc-cast6-avx", nil}, 214 {"cbc(des3_ede)", nil}, 215 {"cbc-des3_ede-asm", nil}, 216 {"cbc(serpent)", nil}, 217 {"cbc-serpent-avx", nil}, 218 {"cbc-serpent-avx2", nil}, 219 {"cbc-serpent-sse2", nil}, 220 {"cbc(twofish)", nil}, 221 {"cbc-twofish-3way", nil}, 222 {"cbc-twofish-avx", nil}, 223 {"chacha20", nil}, 224 {"chacha20-arm", nil}, 225 {"chacha20-generic", nil}, 226 {"chacha20-neon", nil}, 227 {"chacha20-simd", nil}, 228 {"ctr(aes)", nil}, 229 {"ctr(aes-aesni)", nil}, 230 {"ctr(blowfish)", nil}, 231 {"ctr(camellia)", nil}, 232 {"ctr(cast5)", nil}, 233 {"ctr(cast6)", nil}, 234 {"ctr(des3_ede)", nil}, 235 {"ctr(serpent)", nil}, 236 {"ctr(twofish)", nil}, 237 {"ctr-aes-aesni", nil}, 238 {"ctr-aes-ce", nil}, 239 {"ctr-aes-neon", nil}, 240 {"ctr-aes-neonbs", nil}, 241 {"ctr-aes-neonbs-sync", nil}, 242 {"ctr-blowfish-asm", nil}, 243 {"ctr-camellia-aesni", nil}, 244 {"ctr-camellia-aesni-avx2", nil}, 245 {"ctr-camellia-asm", nil}, 246 {"ctr-cast5-avx", nil}, 247 {"ctr-cast6-avx", nil}, 248 {"ctr-des3_ede-asm", nil}, 249 {"ctr-serpent-avx", nil}, 250 {"ctr-serpent-avx2", nil}, 251 {"ctr-serpent-sse2", nil}, 252 {"ctr-twofish-3way", nil}, 253 {"ctr-twofish-avx", nil}, 254 {"cts(cbc(aes))", nil}, 255 {"cts-cbc-aes-aesni", nil}, 256 {"cts-cbc-aes-ce", nil}, 257 {"cts-cbc-aes-neon", nil}, 258 {"ecb(aes)", nil}, 259 {"ecb-aes-aesni", nil}, 260 {"ecb-aes-ce", nil}, 261 {"ecb-aes-neonbs", nil}, 262 {"ecb(arc4)", nil}, 263 {"ecb(arc4)-generic", nil}, 264 {"ecb(blowfish)", nil}, 265 {"ecb(camellia)", nil}, 266 {"ecb(cast5)", nil}, 267 {"ecb(cast6)", nil}, 268 {"ecb(cipher_null)", nil}, 269 {"ecb(des3_ede)", nil}, 270 {"ecb(serpent)", nil}, 271 {"ecb(twofish)", nil}, 272 {"ecb-aes-neon", nil}, 273 {"ecb-blowfish-asm", nil}, 274 {"ecb-camellia-aesni", nil}, 275 {"ecb-camellia-aesni-avx2", nil}, 276 {"ecb-camellia-asm", nil}, 277 {"ecb-cast5-avx", nil}, 278 {"ecb-cast6-avx", nil}, 279 {"ecb-cipher_null", nil}, 280 {"ecb-des3_ede-asm", nil}, 281 {"ecb-serpent-avx", nil}, 282 {"ecb-serpent-avx2", nil}, 283 {"ecb-serpent-sse2", nil}, 284 {"ecb-twofish-3way", nil}, 285 {"ecb-twofish-avx", nil}, 286 {"fpu(pcbc(aes))", nil}, 287 {"fpu(pcbc(aes-aesni))", nil}, 288 {"lrw(camellia)", nil}, 289 {"lrw(cast6)", nil}, 290 {"lrw(serpent)", nil}, 291 {"lrw(twofish)", nil}, 292 {"lrw-camellia-aesni", nil}, 293 {"lrw-camellia-aesni-avx2", nil}, 294 {"lrw-camellia-asm", nil}, 295 {"lrw-cast6-avx", nil}, 296 {"lrw-serpent-avx", nil}, 297 {"lrw-serpent-avx2", nil}, 298 {"lrw-serpent-sse2", nil}, 299 {"lrw-twofish-3way", nil}, 300 {"lrw-twofish-avx", nil}, 301 {"pcbc(aes)", nil}, 302 {"pcbc(aes-aesni)", nil}, 303 {"pcbc-aes-aesni", nil}, 304 {"salsa20", nil}, 305 {"salsa20-asm", nil}, 306 {"salsa20-generic", nil}, 307 {"essiv(cbc(aes),sha256)", nil}, 308 {"essiv-cbc-aes-sha256-ce", nil}, 309 {"essiv-cbc-aes-sha256-neon", nil}, 310 {"pcbc(fcrypt)", nil}, 311 {"pcbc(fcrypt-generic)", nil}, 312 {"xchacha12", nil}, 313 {"xchacha12-arm", nil}, 314 {"xchacha12-generic", nil}, 315 {"xchacha12-neon", nil}, 316 {"xchacha12-simd", nil}, 317 {"xchacha20", nil}, 318 {"xchacha20-arm", nil}, 319 {"xchacha20-generic", nil}, 320 {"xchacha20-neon", nil}, 321 {"xchacha20-simd", nil}, 322 {"xts(aes)", nil}, 323 {"xts(camellia)", nil}, 324 {"xts(cast6)", nil}, 325 {"xts(serpent)", nil}, 326 {"xts(twofish)", nil}, 327 {"xts-aes-aesni", nil}, 328 {"xts-aes-ce", nil}, 329 {"xts-aes-neonbs", nil}, 330 {"xts-aes-neon", nil}, 331 {"xts-camellia-aesni", nil}, 332 {"xts-camellia-aesni-avx2", nil}, 333 {"xts-camellia-asm", nil}, 334 {"xts-cast6-avx", nil}, 335 {"xts-serpent-avx", nil}, 336 {"xts-serpent-avx2", nil}, 337 {"xts-serpent-sse2", nil}, 338 {"xts-twofish-3way", nil}, 339 {"xts-twofish-avx", nil}, 340 }, 341 ALG_CIPHER: { 342 {"aes", nil}, 343 {"aes-aesni", nil}, 344 {"aes-arm", nil}, 345 {"aes-arm64", nil}, 346 {"aes-asm", nil}, 347 {"aes-ce", nil}, 348 {"aes-fixed-time", nil}, 349 {"aes-generic", nil}, 350 {"anubis", nil}, 351 {"anubis-generic", nil}, 352 {"arc4", nil}, 353 {"arc4-generic", nil}, 354 {"blowfish", nil}, 355 {"blowfish-asm", nil}, 356 {"blowfish-generic", nil}, 357 {"camellia", nil}, 358 {"camellia-asm", nil}, 359 {"camellia-generic", nil}, 360 {"cast5", nil}, 361 {"cast5-generic", nil}, 362 {"cast6", nil}, 363 {"cast6-generic", nil}, 364 {"cipher_null", nil}, 365 {"cipher_null-generic", nil}, 366 {"compress_null-generic", nil}, 367 {"des", nil}, 368 {"des3_ede", nil}, 369 {"des3_ede-asm", nil}, 370 {"des3_ede-generic", nil}, 371 {"des-generic", nil}, 372 {"fcrypt", nil}, 373 {"fcrypt-generic", nil}, 374 {"khazad", nil}, 375 {"khazad-generic", nil}, 376 {"seed", nil}, 377 {"seed-generic", nil}, 378 {"serpent", nil}, 379 {"serpent-generic", nil}, 380 {"sm4", nil}, 381 {"sm4-ce", nil}, 382 {"sm4-generic", nil}, 383 {"tea", nil}, 384 {"tea-generic", nil}, 385 {"tnepres", nil}, 386 {"tnepres-generic", nil}, 387 {"twofish", nil}, 388 {"twofish-asm", nil}, 389 {"twofish-generic", nil}, 390 {"xeta", nil}, 391 {"xeta-generic", nil}, 392 {"xtea", nil}, 393 {"xtea-generic", nil}, 394 }, 395 ALG_HASH: { 396 // templates: 397 {"cbcmac", []int{ALG_CIPHER}}, 398 {"cmac", []int{ALG_CIPHER}}, 399 {"cryptd", []int{ALG_HASH}}, 400 {"hmac", []int{ALG_HASH}}, 401 {"mcryptd", []int{ALG_HASH}}, 402 {"vmac", []int{ALG_CIPHER}}, 403 {"vmac64", []int{ALG_CIPHER}}, 404 {"xcbc", []int{ALG_CIPHER}}, 405 406 // algorithms: 407 {"blake2b-160", nil}, 408 {"blake2b-160-generic", nil}, 409 {"blake2b-256", nil}, 410 {"blake2b-256-generic", nil}, 411 {"blake2b-384", nil}, 412 {"blake2b-384-generic", nil}, 413 {"blake2b-512", nil}, 414 {"blake2b-512-generic", nil}, 415 {"blake2s-128", nil}, 416 {"blake2s-128-arm", nil}, 417 {"blake2s-128-generic", nil}, 418 {"blake2s-128-x86", nil}, 419 {"blake2s-160", nil}, 420 {"blake2s-160-arm", nil}, 421 {"blake2s-160-generic", nil}, 422 {"blake2s-160-x86", nil}, 423 {"blake2s-224", nil}, 424 {"blake2s-224-arm", nil}, 425 {"blake2s-224-generic", nil}, 426 {"blake2s-224-x86", nil}, 427 {"blake2s-256", nil}, 428 {"blake2s-256-arm", nil}, 429 {"blake2s-256-generic", nil}, 430 {"blake2s-256-x86", nil}, 431 {"cbcmac(aes)", nil}, 432 {"cbcmac-aes-ce", nil}, 433 {"cbcmac-aes-neon", nil}, 434 {"cmac(aes)", nil}, 435 {"cmac-aes-ce", nil}, 436 {"cmac-aes-neon", nil}, 437 {"crc32", nil}, 438 {"crc32c", nil}, 439 {"crc32c-generic", nil}, 440 {"crc32c-intel", nil}, 441 {"crc32-generic", nil}, 442 {"crc32-pclmul", nil}, 443 {"crct10dif", nil}, 444 {"crct10dif-arm64-ce", nil}, 445 {"crct10dif-arm64-neon", nil}, 446 {"crct10dif-generic", nil}, 447 {"crct10dif-pclmul", nil}, 448 {"digest_null", nil}, 449 {"digest_null-generic", nil}, 450 {"ghash", nil}, 451 {"ghash-ce", nil}, 452 {"ghash-ce-sync", nil}, 453 {"ghash-clmulni", nil}, 454 {"ghash-generic", nil}, 455 {"hmac(sha1)", nil}, 456 {"hmac(sha1-avx2)", nil}, 457 {"hmac(sha1-ce)", nil}, 458 {"hmac(sha1-neon)", nil}, 459 {"hmac(sha256)", nil}, 460 {"hmac(sha256-avx2)", nil}, 461 {"hmac(sha256-ce)", nil}, 462 {"hmac(sha256-neon)", nil}, 463 {"md4", nil}, 464 {"md4-generic", nil}, 465 {"md5", nil}, 466 {"md5-generic", nil}, 467 {"michael_mic", nil}, 468 {"michael_mic-generic", nil}, 469 {"nhpoly1305", nil}, 470 {"nhpoly1305-avx2", nil}, 471 {"nhpoly1305-generic", nil}, 472 {"nhpoly1305-neon", nil}, 473 {"nhpoly1305-sse2", nil}, 474 {"poly1305", nil}, 475 {"poly1305-arm", nil}, 476 {"poly1305-generic", nil}, 477 {"poly1305-neon", nil}, 478 {"poly1305-simd", nil}, 479 {"rmd128", nil}, 480 {"rmd128-generic", nil}, 481 {"rmd160", nil}, 482 {"rmd160-generic", nil}, 483 {"rmd256", nil}, 484 {"rmd256-generic", nil}, 485 {"rmd320", nil}, 486 {"rmd320-generic", nil}, 487 {"sha1", nil}, 488 {"sha1-asm", nil}, 489 {"sha1-avx", nil}, 490 {"sha1-avx2", nil}, 491 {"sha1-ce", nil}, 492 {"sha1-generic", nil}, 493 {"sha1_mb", nil}, 494 {"sha1-neon", nil}, 495 {"sha1-ni", nil}, 496 {"sha1-ssse3", nil}, 497 {"sha224", nil}, 498 {"sha224-arm64", nil}, 499 {"sha224-arm64-neon", nil}, 500 {"sha224-asm", nil}, 501 {"sha224-avx", nil}, 502 {"sha224-avx2", nil}, 503 {"sha224-ce", nil}, 504 {"sha224-generic", nil}, 505 {"sha224-neon", nil}, 506 {"sha224-ni", nil}, 507 {"sha224-ssse3", nil}, 508 {"sha256", nil}, 509 {"sha256-arm64", nil}, 510 {"sha256-arm64-neon", nil}, 511 {"sha256-asm", nil}, 512 {"sha256-avx", nil}, 513 {"sha256-avx2", nil}, 514 {"sha256-ce", nil}, 515 {"sha256-generic", nil}, 516 {"sha256-mb", nil}, 517 {"sha256-neon", nil}, 518 {"sha256-ni", nil}, 519 {"sha256-ssse3", nil}, 520 {"sha3-224", nil}, 521 {"sha3-224-ce", nil}, 522 {"sha3-224-generic", nil}, 523 {"sha3-256", nil}, 524 {"sha3-256-ce", nil}, 525 {"sha3-256-generic", nil}, 526 {"sha3-384", nil}, 527 {"sha3-384-ce", nil}, 528 {"sha3-384-generic", nil}, 529 {"sha3-512", nil}, 530 {"sha3-512-ce", nil}, 531 {"sha3-512-generic", nil}, 532 {"sha384", nil}, 533 {"sha384-arm", nil}, 534 {"sha384-arm64", nil}, 535 {"sha384-avx", nil}, 536 {"sha384-avx2", nil}, 537 {"sha384-ce", nil}, 538 {"sha384-generic", nil}, 539 {"sha384-neon", nil}, 540 {"sha384-ssse3", nil}, 541 {"sha512", nil}, 542 {"sha512-arm", nil}, 543 {"sha512-arm64", nil}, 544 {"sha512-avx", nil}, 545 {"sha512-avx2", nil}, 546 {"sha512-ce", nil}, 547 {"sha512-generic", nil}, 548 {"sha512_mb", nil}, 549 {"sha512-neon", nil}, 550 {"sha512-ssse3", nil}, 551 {"sm3", nil}, 552 {"sm3-ce", nil}, 553 {"sm3-generic", nil}, 554 {"streebog256", nil}, 555 {"streebog256-generic", nil}, 556 {"streebog512", nil}, 557 {"streebog512-generic", nil}, 558 {"tgr128", nil}, 559 {"tgr128-generic", nil}, 560 {"tgr160", nil}, 561 {"tgr160-generic", nil}, 562 {"tgr192", nil}, 563 {"tgr192-generic", nil}, 564 {"wp256", nil}, 565 {"wp256-generic", nil}, 566 {"wp384", nil}, 567 {"wp384-generic", nil}, 568 {"wp512", nil}, 569 {"wp512-generic", nil}, 570 {"xcbc(aes)", nil}, 571 {"xcbc-aes-ce", nil}, 572 {"xcbc-aes-neon", nil}, 573 {"xxhash64", nil}, 574 {"xxhash64-generic", nil}, 575 }, 576 ALG_RNG: { 577 {"ansi_cprng", nil}, 578 {"drbg_nopr_ctr_aes128", nil}, 579 {"drbg_nopr_ctr_aes192", nil}, 580 {"drbg_nopr_ctr_aes256", nil}, 581 {"drbg_nopr_hmac_sha1", nil}, 582 {"drbg_nopr_hmac_sha256", nil}, 583 {"drbg_nopr_hmac_sha384", nil}, 584 {"drbg_nopr_hmac_sha512", nil}, 585 {"drbg_nopr_sha1", nil}, 586 {"drbg_nopr_sha256", nil}, 587 {"drbg_nopr_sha384", nil}, 588 {"drbg_nopr_sha512", nil}, 589 {"drbg_pr_ctr_aes128", nil}, 590 {"drbg_pr_ctr_aes192", nil}, 591 {"drbg_pr_ctr_aes256", nil}, 592 {"drbg_pr_hmac_sha1", nil}, 593 {"drbg_pr_hmac_sha256", nil}, 594 {"drbg_pr_hmac_sha384", nil}, 595 {"drbg_pr_hmac_sha512", nil}, 596 {"drbg_pr_sha1", nil}, 597 {"drbg_pr_sha256", nil}, 598 {"drbg_pr_sha384", nil}, 599 {"drbg_pr_sha512", nil}, 600 {"jitterentropy_rng", nil}, 601 {"stdrng", nil}, 602 }, 603 }