1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2020 Broadcom 3 * All rights reserved. 4 */ 5 6 #include <rte_cryptodev.h> 7 8 #include "bcmfs_sym_capabilities.h" 9 10 static const struct rte_cryptodev_capabilities bcmfs_sym_capabilities[] = { 11 { 12 /* SHA1 */ 13 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 14 {.sym = { 15 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 16 {.auth = { 17 .algo = RTE_CRYPTO_AUTH_SHA1, 18 .block_size = 64, 19 .key_size = { 20 .min = 0, 21 .max = 0, 22 .increment = 0 23 }, 24 .digest_size = { 25 .min = 20, 26 .max = 20, 27 .increment = 0 28 }, 29 .aad_size = { 0 } 30 }, } 31 }, } 32 }, 33 { 34 /* MD5 */ 35 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 36 {.sym = { 37 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 38 {.auth = { 39 .algo = RTE_CRYPTO_AUTH_MD5, 40 .block_size = 64, 41 .key_size = { 42 .min = 0, 43 .max = 0, 44 .increment = 0 45 }, 46 .digest_size = { 47 .min = 16, 48 .max = 16, 49 .increment = 0 50 }, 51 }, } 52 }, } 53 }, 54 { 55 /* SHA224 */ 56 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 57 {.sym = { 58 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 59 {.auth = { 60 .algo = RTE_CRYPTO_AUTH_SHA224, 61 .block_size = 64, 62 .key_size = { 63 .min = 0, 64 .max = 0, 65 .increment = 0 66 }, 67 .digest_size = { 68 .min = 28, 69 .max = 28, 70 .increment = 0 71 }, 72 .aad_size = { 0 } 73 }, } 74 }, } 75 }, 76 { 77 /* SHA256 */ 78 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 79 {.sym = { 80 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 81 {.auth = { 82 .algo = RTE_CRYPTO_AUTH_SHA256, 83 .block_size = 64, 84 .key_size = { 85 .min = 0, 86 .max = 0, 87 .increment = 0 88 }, 89 .digest_size = { 90 .min = 32, 91 .max = 32, 92 .increment = 0 93 }, 94 .aad_size = { 0 } 95 }, } 96 }, } 97 }, 98 { 99 /* SHA384 */ 100 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 101 {.sym = { 102 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 103 {.auth = { 104 .algo = RTE_CRYPTO_AUTH_SHA384, 105 .block_size = 64, 106 .key_size = { 107 .min = 0, 108 .max = 0, 109 .increment = 0 110 }, 111 .digest_size = { 112 .min = 48, 113 .max = 48, 114 .increment = 0 115 }, 116 .aad_size = { 0 } 117 }, } 118 }, } 119 }, 120 { 121 /* SHA512 */ 122 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 123 {.sym = { 124 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 125 {.auth = { 126 .algo = RTE_CRYPTO_AUTH_SHA512, 127 .block_size = 64, 128 .key_size = { 129 .min = 0, 130 .max = 0, 131 .increment = 0 132 }, 133 .digest_size = { 134 .min = 64, 135 .max = 64, 136 .increment = 0 137 }, 138 .aad_size = { 0 } 139 }, } 140 }, } 141 }, 142 { 143 /* SHA3_224 */ 144 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 145 {.sym = { 146 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 147 {.auth = { 148 .algo = RTE_CRYPTO_AUTH_SHA3_224, 149 .block_size = 144, 150 .key_size = { 151 .min = 0, 152 .max = 0, 153 .increment = 0 154 }, 155 .digest_size = { 156 .min = 28, 157 .max = 28, 158 .increment = 0 159 }, 160 .aad_size = { 0 } 161 }, } 162 }, } 163 }, 164 { 165 /* SHA3_256 */ 166 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 167 {.sym = { 168 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 169 {.auth = { 170 .algo = RTE_CRYPTO_AUTH_SHA3_256, 171 .block_size = 136, 172 .key_size = { 173 .min = 0, 174 .max = 0, 175 .increment = 0 176 }, 177 .digest_size = { 178 .min = 32, 179 .max = 32, 180 .increment = 0 181 }, 182 .aad_size = { 0 } 183 }, } 184 }, } 185 }, 186 { 187 /* SHA3_384 */ 188 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 189 {.sym = { 190 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 191 {.auth = { 192 .algo = RTE_CRYPTO_AUTH_SHA3_384, 193 .block_size = 104, 194 .key_size = { 195 .min = 0, 196 .max = 0, 197 .increment = 0 198 }, 199 .digest_size = { 200 .min = 48, 201 .max = 48, 202 .increment = 0 203 }, 204 .aad_size = { 0 } 205 }, } 206 }, } 207 }, 208 { 209 /* SHA3_512 */ 210 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 211 {.sym = { 212 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 213 {.auth = { 214 .algo = RTE_CRYPTO_AUTH_SHA3_512, 215 .block_size = 72, 216 .key_size = { 217 .min = 0, 218 .max = 0, 219 .increment = 0 220 }, 221 .digest_size = { 222 .min = 64, 223 .max = 64, 224 .increment = 0 225 }, 226 .aad_size = { 0 } 227 }, } 228 }, } 229 }, 230 { 231 /* SHA1 HMAC */ 232 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 233 {.sym = { 234 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 235 {.auth = { 236 .algo = RTE_CRYPTO_AUTH_SHA1_HMAC, 237 .block_size = 64, 238 .key_size = { 239 .min = 1, 240 .max = 64, 241 .increment = 1 242 }, 243 .digest_size = { 244 .min = 20, 245 .max = 20, 246 .increment = 0 247 }, 248 .aad_size = { 0 } 249 }, } 250 }, } 251 }, 252 { 253 /* MD5 HMAC */ 254 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 255 {.sym = { 256 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 257 {.auth = { 258 .algo = RTE_CRYPTO_AUTH_MD5_HMAC, 259 .block_size = 64, 260 .key_size = { 261 .min = 1, 262 .max = 64, 263 .increment = 1 264 }, 265 .digest_size = { 266 .min = 16, 267 .max = 16, 268 .increment = 0 269 }, 270 .aad_size = { 0 } 271 }, } 272 }, } 273 }, 274 { 275 /* SHA224 HMAC */ 276 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 277 {.sym = { 278 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 279 {.auth = { 280 .algo = RTE_CRYPTO_AUTH_SHA224_HMAC, 281 .block_size = 64, 282 .key_size = { 283 .min = 1, 284 .max = 64, 285 .increment = 1 286 }, 287 .digest_size = { 288 .min = 28, 289 .max = 28, 290 .increment = 0 291 }, 292 .aad_size = { 0 } 293 }, } 294 }, } 295 }, 296 { 297 /* SHA256 HMAC */ 298 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 299 {.sym = { 300 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 301 {.auth = { 302 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 303 .block_size = 64, 304 .key_size = { 305 .min = 1, 306 .max = 64, 307 .increment = 1 308 }, 309 .digest_size = { 310 .min = 32, 311 .max = 32, 312 .increment = 0 313 }, 314 .aad_size = { 0 } 315 }, } 316 }, } 317 }, 318 { 319 /* SHA384 HMAC */ 320 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 321 {.sym = { 322 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 323 {.auth = { 324 .algo = RTE_CRYPTO_AUTH_SHA384_HMAC, 325 .block_size = 128, 326 .key_size = { 327 .min = 1, 328 .max = 128, 329 .increment = 1 330 }, 331 .digest_size = { 332 .min = 48, 333 .max = 48, 334 .increment = 0 335 }, 336 .aad_size = { 0 } 337 }, } 338 }, } 339 }, 340 { 341 /* SHA512 HMAC*/ 342 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 343 {.sym = { 344 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 345 {.auth = { 346 .algo = RTE_CRYPTO_AUTH_SHA512_HMAC, 347 .block_size = 128, 348 .key_size = { 349 .min = 1, 350 .max = 128, 351 .increment = 1 352 }, 353 .digest_size = { 354 .min = 64, 355 .max = 64, 356 .increment = 0 357 }, 358 .aad_size = { 0 } 359 }, } 360 }, } 361 }, 362 { 363 /* SHA3_224 HMAC */ 364 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 365 {.sym = { 366 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 367 {.auth = { 368 .algo = RTE_CRYPTO_AUTH_SHA3_224_HMAC, 369 .block_size = 144, 370 .key_size = { 371 .min = 1, 372 .max = 144, 373 .increment = 1 374 }, 375 .digest_size = { 376 .min = 28, 377 .max = 28, 378 .increment = 0 379 }, 380 .aad_size = { 0 } 381 }, } 382 }, } 383 }, 384 { 385 /* SHA3_256 HMAC */ 386 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 387 {.sym = { 388 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 389 {.auth = { 390 .algo = RTE_CRYPTO_AUTH_SHA3_256_HMAC, 391 .block_size = 136, 392 .key_size = { 393 .min = 1, 394 .max = 136, 395 .increment = 1 396 }, 397 .digest_size = { 398 .min = 32, 399 .max = 32, 400 .increment = 0 401 }, 402 .aad_size = { 0 } 403 }, } 404 }, } 405 }, 406 { 407 /* SHA3_384 HMAC */ 408 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 409 {.sym = { 410 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 411 {.auth = { 412 .algo = RTE_CRYPTO_AUTH_SHA3_384_HMAC, 413 .block_size = 104, 414 .key_size = { 415 .min = 1, 416 .max = 104, 417 .increment = 1 418 }, 419 .digest_size = { 420 .min = 48, 421 .max = 48, 422 .increment = 0 423 }, 424 .aad_size = { 0 } 425 }, } 426 }, } 427 }, 428 { 429 /* SHA3_512 HMAC */ 430 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 431 {.sym = { 432 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 433 {.auth = { 434 .algo = RTE_CRYPTO_AUTH_SHA3_512_HMAC, 435 .block_size = 72, 436 .key_size = { 437 .min = 1, 438 .max = 72, 439 .increment = 1 440 }, 441 .digest_size = { 442 .min = 64, 443 .max = 64, 444 .increment = 0 445 }, 446 .aad_size = { 0 } 447 }, } 448 }, } 449 }, 450 { 451 /* AES XCBC MAC */ 452 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 453 {.sym = { 454 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 455 {.auth = { 456 .algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC, 457 .block_size = 16, 458 .key_size = { 459 .min = 1, 460 .max = 16, 461 .increment = 1 462 }, 463 .digest_size = { 464 .min = 16, 465 .max = 16, 466 .increment = 0 467 }, 468 .aad_size = { 0 } 469 }, } 470 }, } 471 }, 472 { 473 /* AES GMAC */ 474 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 475 {.sym = { 476 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 477 {.auth = { 478 .algo = RTE_CRYPTO_AUTH_AES_GMAC, 479 .block_size = 16, 480 .key_size = { 481 .min = 16, 482 .max = 32, 483 .increment = 8 484 }, 485 .digest_size = { 486 .min = 16, 487 .max = 16, 488 .increment = 0 489 }, 490 .aad_size = { 491 .min = 0, 492 .max = 65535, 493 .increment = 1 494 }, 495 .iv_size = { 496 .min = 12, 497 .max = 16, 498 .increment = 4 499 }, 500 }, } 501 }, } 502 }, 503 { 504 /* AES CMAC */ 505 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 506 {.sym = { 507 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 508 {.auth = { 509 .algo = RTE_CRYPTO_AUTH_AES_CMAC, 510 .block_size = 16, 511 .key_size = { 512 .min = 1, 513 .max = 16, 514 .increment = 1 515 }, 516 .digest_size = { 517 .min = 16, 518 .max = 16, 519 .increment = 0 520 }, 521 .aad_size = { 0 } 522 }, } 523 }, } 524 }, 525 { 526 /* AES CBC MAC */ 527 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 528 {.sym = { 529 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 530 {.auth = { 531 .algo = RTE_CRYPTO_AUTH_AES_CBC_MAC, 532 .block_size = 16, 533 .key_size = { 534 .min = 1, 535 .max = 16, 536 .increment = 1 537 }, 538 .digest_size = { 539 .min = 16, 540 .max = 16, 541 .increment = 0 542 }, 543 .aad_size = { 0 } 544 }, } 545 }, } 546 }, 547 { 548 /* AES ECB */ 549 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 550 {.sym = { 551 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 552 {.cipher = { 553 .algo = RTE_CRYPTO_CIPHER_AES_ECB, 554 .block_size = 16, 555 .key_size = { 556 .min = 16, 557 .max = 32, 558 .increment = 8 559 }, 560 .iv_size = { 561 .min = 0, 562 .max = 0, 563 .increment = 0 564 } 565 }, } 566 }, } 567 }, 568 { 569 /* AES CBC */ 570 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 571 {.sym = { 572 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 573 {.cipher = { 574 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 575 .block_size = 16, 576 .key_size = { 577 .min = 16, 578 .max = 32, 579 .increment = 8 580 }, 581 .iv_size = { 582 .min = 16, 583 .max = 16, 584 .increment = 0 585 } 586 }, } 587 }, } 588 }, 589 { 590 /* AES CTR */ 591 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 592 {.sym = { 593 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 594 {.cipher = { 595 .algo = RTE_CRYPTO_CIPHER_AES_CTR, 596 .block_size = 16, 597 .key_size = { 598 .min = 16, 599 .max = 32, 600 .increment = 8 601 }, 602 .iv_size = { 603 .min = 16, 604 .max = 16, 605 .increment = 0 606 } 607 }, } 608 }, } 609 }, 610 { 611 /* AES XTS */ 612 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 613 {.sym = { 614 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 615 {.cipher = { 616 .algo = RTE_CRYPTO_CIPHER_AES_XTS, 617 .block_size = 16, 618 .key_size = { 619 .min = 32, 620 .max = 64, 621 .increment = 32 622 }, 623 .iv_size = { 624 .min = 16, 625 .max = 16, 626 .increment = 0 627 } 628 }, } 629 }, } 630 }, 631 { 632 /* DES CBC */ 633 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 634 {.sym = { 635 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 636 {.cipher = { 637 .algo = RTE_CRYPTO_CIPHER_DES_CBC, 638 .block_size = 8, 639 .key_size = { 640 .min = 8, 641 .max = 8, 642 .increment = 0 643 }, 644 .iv_size = { 645 .min = 16, 646 .max = 16, 647 .increment = 0 648 } 649 }, } 650 }, } 651 }, 652 { 653 /* 3DES CBC */ 654 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 655 {.sym = { 656 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 657 {.cipher = { 658 .algo = RTE_CRYPTO_CIPHER_3DES_CBC, 659 .block_size = 8, 660 .key_size = { 661 .min = 24, 662 .max = 24, 663 .increment = 0 664 }, 665 .iv_size = { 666 .min = 16, 667 .max = 16, 668 .increment = 0 669 } 670 }, } 671 }, } 672 }, 673 { 674 /* 3DES ECB */ 675 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 676 {.sym = { 677 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 678 {.cipher = { 679 .algo = RTE_CRYPTO_CIPHER_3DES_ECB, 680 .block_size = 8, 681 .key_size = { 682 .min = 24, 683 .max = 24, 684 .increment = 0 685 }, 686 .iv_size = { 687 .min = 0, 688 .max = 0, 689 .increment = 0 690 } 691 }, } 692 }, } 693 }, 694 { 695 /* AES GCM */ 696 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 697 {.sym = { 698 .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, 699 {.aead = { 700 .algo = RTE_CRYPTO_AEAD_AES_GCM, 701 .block_size = 16, 702 .key_size = { 703 .min = 16, 704 .max = 32, 705 .increment = 8 706 }, 707 .digest_size = { 708 .min = 16, 709 .max = 16, 710 .increment = 0 711 }, 712 .aad_size = { 713 .min = 0, 714 .max = 65535, 715 .increment = 1 716 }, 717 .iv_size = { 718 .min = 12, 719 .max = 16, 720 .increment = 4 721 }, 722 }, } 723 }, } 724 }, 725 { 726 /* AES CCM */ 727 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 728 {.sym = { 729 .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, 730 {.aead = { 731 .algo = RTE_CRYPTO_AEAD_AES_CCM, 732 .block_size = 16, 733 .key_size = { 734 .min = 16, 735 .max = 32, 736 .increment = 8 737 }, 738 .digest_size = { 739 .min = 4, 740 .max = 16, 741 .increment = 2 742 }, 743 .aad_size = { 744 .min = 0, 745 .max = 65535, 746 .increment = 1 747 }, 748 .iv_size = { 749 .min = 7, 750 .max = 13, 751 .increment = 1 752 }, 753 }, } 754 }, } 755 }, 756 757 RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() 758 }; 759 760 const struct rte_cryptodev_capabilities * 761 bcmfs_sym_get_capabilities(void) 762 { 763 return bcmfs_sym_capabilities; 764 } 765