1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2018 Cavium, Inc 3 */ 4 5 #include <rte_cryptodev.h> 6 7 #include "otx_cryptodev_capabilities.h" 8 9 static const struct rte_cryptodev_capabilities otx_capabilities[] = { 10 /* Symmetric capabilities */ 11 { /* NULL (AUTH) */ 12 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 13 {.sym = { 14 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 15 {.auth = { 16 .algo = RTE_CRYPTO_AUTH_NULL, 17 .block_size = 1, 18 .key_size = { 19 .min = 0, 20 .max = 0, 21 .increment = 0 22 }, 23 .digest_size = { 24 .min = 0, 25 .max = 0, 26 .increment = 0 27 }, 28 }, }, 29 }, }, 30 }, 31 { /* AES GMAC (AUTH) */ 32 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 33 {.sym = { 34 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 35 {.auth = { 36 .algo = RTE_CRYPTO_AUTH_AES_GMAC, 37 .block_size = 16, 38 .key_size = { 39 .min = 16, 40 .max = 32, 41 .increment = 8 42 }, 43 .digest_size = { 44 .min = 8, 45 .max = 16, 46 .increment = 4 47 }, 48 .iv_size = { 49 .min = 12, 50 .max = 12, 51 .increment = 0 52 } 53 }, } 54 }, } 55 }, 56 { /* KASUMI (F9) */ 57 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 58 {.sym = { 59 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 60 {.auth = { 61 .algo = RTE_CRYPTO_AUTH_KASUMI_F9, 62 .block_size = 8, 63 .key_size = { 64 .min = 16, 65 .max = 16, 66 .increment = 0 67 }, 68 .digest_size = { 69 .min = 4, 70 .max = 4, 71 .increment = 0 72 }, 73 }, } 74 }, } 75 }, 76 { /* MD5 */ 77 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 78 {.sym = { 79 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 80 {.auth = { 81 .algo = RTE_CRYPTO_AUTH_MD5, 82 .block_size = 64, 83 .key_size = { 84 .min = 0, 85 .max = 0, 86 .increment = 0 87 }, 88 .digest_size = { 89 .min = 1, 90 .max = 16, 91 .increment = 1 92 }, 93 }, } 94 }, } 95 }, 96 { /* MD5 HMAC */ 97 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 98 {.sym = { 99 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 100 {.auth = { 101 .algo = RTE_CRYPTO_AUTH_MD5_HMAC, 102 .block_size = 64, 103 .key_size = { 104 .min = 8, 105 .max = 64, 106 .increment = 8 107 }, 108 .digest_size = { 109 .min = 1, 110 .max = 16, 111 .increment = 1 112 }, 113 }, } 114 }, } 115 }, 116 { /* SHA1 */ 117 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 118 {.sym = { 119 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 120 {.auth = { 121 .algo = RTE_CRYPTO_AUTH_SHA1, 122 .block_size = 64, 123 .key_size = { 124 .min = 0, 125 .max = 0, 126 .increment = 0 127 }, 128 .digest_size = { 129 .min = 1, 130 .max = 20, 131 .increment = 1 132 }, 133 }, } 134 }, } 135 }, 136 { /* SHA1 HMAC */ 137 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 138 {.sym = { 139 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 140 {.auth = { 141 .algo = RTE_CRYPTO_AUTH_SHA1_HMAC, 142 .block_size = 64, 143 .key_size = { 144 .min = 64, 145 .max = 64, 146 .increment = 0 147 }, 148 .digest_size = { 149 .min = 1, 150 .max = 20, 151 .increment = 1 152 }, 153 }, } 154 }, } 155 }, 156 { /* SHA224 */ 157 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 158 {.sym = { 159 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 160 {.auth = { 161 .algo = RTE_CRYPTO_AUTH_SHA224, 162 .block_size = 64, 163 .key_size = { 164 .min = 0, 165 .max = 0, 166 .increment = 0 167 }, 168 .digest_size = { 169 .min = 1, 170 .max = 28, 171 .increment = 1 172 }, 173 }, } 174 }, } 175 }, 176 { /* SHA224 HMAC */ 177 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 178 {.sym = { 179 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 180 {.auth = { 181 .algo = RTE_CRYPTO_AUTH_SHA224_HMAC, 182 .block_size = 64, 183 .key_size = { 184 .min = 64, 185 .max = 64, 186 .increment = 0 187 }, 188 .digest_size = { 189 .min = 1, 190 .max = 28, 191 .increment = 1 192 }, 193 }, } 194 }, } 195 }, 196 { /* SHA256 */ 197 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 198 {.sym = { 199 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 200 {.auth = { 201 .algo = RTE_CRYPTO_AUTH_SHA256, 202 .block_size = 64, 203 .key_size = { 204 .min = 0, 205 .max = 0, 206 .increment = 0 207 }, 208 .digest_size = { 209 .min = 1, 210 .max = 32, 211 .increment = 1 212 }, 213 }, } 214 }, } 215 }, 216 { /* SHA256 HMAC */ 217 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 218 {.sym = { 219 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 220 {.auth = { 221 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 222 .block_size = 64, 223 .key_size = { 224 .min = 64, 225 .max = 64, 226 .increment = 0 227 }, 228 .digest_size = { 229 .min = 1, 230 .max = 32, 231 .increment = 1 232 }, 233 }, } 234 }, } 235 }, 236 { /* SHA384 */ 237 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 238 {.sym = { 239 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 240 {.auth = { 241 .algo = RTE_CRYPTO_AUTH_SHA384, 242 .block_size = 64, 243 .key_size = { 244 .min = 0, 245 .max = 0, 246 .increment = 0 247 }, 248 .digest_size = { 249 .min = 1, 250 .max = 48, 251 .increment = 1 252 }, 253 }, } 254 }, } 255 }, 256 { /* SHA384 HMAC */ 257 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 258 {.sym = { 259 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 260 {.auth = { 261 .algo = RTE_CRYPTO_AUTH_SHA384_HMAC, 262 .block_size = 64, 263 .key_size = { 264 .min = 64, 265 .max = 64, 266 .increment = 0 267 }, 268 .digest_size = { 269 .min = 1, 270 .max = 48, 271 .increment = 1 272 }, 273 }, } 274 }, } 275 }, 276 { /* SHA512 */ 277 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 278 {.sym = { 279 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 280 {.auth = { 281 .algo = RTE_CRYPTO_AUTH_SHA512, 282 .block_size = 128, 283 .key_size = { 284 .min = 0, 285 .max = 0, 286 .increment = 0 287 }, 288 .digest_size = { 289 .min = 1, 290 .max = 64, 291 .increment = 1 292 }, 293 }, } 294 }, } 295 }, 296 { /* SHA512 HMAC */ 297 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 298 {.sym = { 299 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 300 {.auth = { 301 .algo = RTE_CRYPTO_AUTH_SHA512_HMAC, 302 .block_size = 128, 303 .key_size = { 304 .min = 64, 305 .max = 64, 306 .increment = 0 307 }, 308 .digest_size = { 309 .min = 1, 310 .max = 64, 311 .increment = 1 312 }, 313 }, } 314 }, } 315 }, 316 { /* SNOW 3G (UIA2) */ 317 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 318 {.sym = { 319 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 320 {.auth = { 321 .algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2, 322 .block_size = 16, 323 .key_size = { 324 .min = 16, 325 .max = 16, 326 .increment = 0 327 }, 328 .digest_size = { 329 .min = 4, 330 .max = 4, 331 .increment = 0 332 }, 333 .iv_size = { 334 .min = 16, 335 .max = 16, 336 .increment = 0 337 } 338 }, } 339 }, } 340 }, 341 { /* ZUC (EIA3) */ 342 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 343 {.sym = { 344 .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, 345 {.auth = { 346 .algo = RTE_CRYPTO_AUTH_ZUC_EIA3, 347 .block_size = 16, 348 .key_size = { 349 .min = 16, 350 .max = 16, 351 .increment = 0 352 }, 353 .digest_size = { 354 .min = 4, 355 .max = 4, 356 .increment = 0 357 }, 358 .iv_size = { 359 .min = 16, 360 .max = 16, 361 .increment = 0 362 } 363 }, } 364 }, } 365 }, 366 { /* NULL (CIPHER) */ 367 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 368 {.sym = { 369 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 370 {.cipher = { 371 .algo = RTE_CRYPTO_CIPHER_NULL, 372 .block_size = 1, 373 .key_size = { 374 .min = 0, 375 .max = 0, 376 .increment = 0 377 }, 378 .iv_size = { 379 .min = 0, 380 .max = 0, 381 .increment = 0 382 } 383 }, }, 384 }, } 385 }, 386 { /* 3DES CBC */ 387 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 388 {.sym = { 389 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 390 {.cipher = { 391 .algo = RTE_CRYPTO_CIPHER_3DES_CBC, 392 .block_size = 8, 393 .key_size = { 394 .min = 24, 395 .max = 24, 396 .increment = 0 397 }, 398 .iv_size = { 399 .min = 8, 400 .max = 16, 401 .increment = 8 402 } 403 }, } 404 }, } 405 }, 406 { /* 3DES ECB */ 407 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 408 {.sym = { 409 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 410 {.cipher = { 411 .algo = RTE_CRYPTO_CIPHER_3DES_ECB, 412 .block_size = 8, 413 .key_size = { 414 .min = 24, 415 .max = 24, 416 .increment = 0 417 }, 418 .iv_size = { 419 .min = 0, 420 .max = 0, 421 .increment = 0 422 } 423 }, } 424 }, } 425 }, 426 { /* AES CBC */ 427 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 428 {.sym = { 429 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 430 {.cipher = { 431 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 432 .block_size = 16, 433 .key_size = { 434 .min = 16, 435 .max = 32, 436 .increment = 8 437 }, 438 .iv_size = { 439 .min = 16, 440 .max = 16, 441 .increment = 0 442 } 443 }, } 444 }, } 445 }, 446 { /* AES CTR */ 447 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 448 {.sym = { 449 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 450 {.cipher = { 451 .algo = RTE_CRYPTO_CIPHER_AES_CTR, 452 .block_size = 16, 453 .key_size = { 454 .min = 16, 455 .max = 32, 456 .increment = 8 457 }, 458 .iv_size = { 459 .min = 12, 460 .max = 16, 461 .increment = 4 462 } 463 }, } 464 }, } 465 }, 466 { /* AES XTS */ 467 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 468 {.sym = { 469 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 470 {.cipher = { 471 .algo = RTE_CRYPTO_CIPHER_AES_XTS, 472 .block_size = 16, 473 .key_size = { 474 .min = 32, 475 .max = 64, 476 .increment = 0 477 }, 478 .iv_size = { 479 .min = 16, 480 .max = 16, 481 .increment = 0 482 } 483 }, } 484 }, } 485 }, 486 { /* DES CBC */ 487 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 488 {.sym = { 489 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 490 {.cipher = { 491 .algo = RTE_CRYPTO_CIPHER_DES_CBC, 492 .block_size = 8, 493 .key_size = { 494 .min = 8, 495 .max = 8, 496 .increment = 0 497 }, 498 .iv_size = { 499 .min = 8, 500 .max = 8, 501 .increment = 0 502 } 503 }, } 504 }, } 505 }, 506 { /* KASUMI (F8) */ 507 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 508 {.sym = { 509 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 510 {.cipher = { 511 .algo = RTE_CRYPTO_CIPHER_KASUMI_F8, 512 .block_size = 8, 513 .key_size = { 514 .min = 16, 515 .max = 16, 516 .increment = 0 517 }, 518 .iv_size = { 519 .min = 8, 520 .max = 8, 521 .increment = 0 522 } 523 }, } 524 }, } 525 }, 526 { /* SNOW 3G (UEA2) */ 527 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 528 {.sym = { 529 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 530 {.cipher = { 531 .algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2, 532 .block_size = 16, 533 .key_size = { 534 .min = 16, 535 .max = 16, 536 .increment = 0 537 }, 538 .iv_size = { 539 .min = 16, 540 .max = 16, 541 .increment = 0 542 } 543 }, } 544 }, } 545 }, 546 { /* ZUC (EEA3) */ 547 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 548 {.sym = { 549 .xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER, 550 {.cipher = { 551 .algo = RTE_CRYPTO_CIPHER_ZUC_EEA3, 552 .block_size = 16, 553 .key_size = { 554 .min = 16, 555 .max = 16, 556 .increment = 0 557 }, 558 .iv_size = { 559 .min = 16, 560 .max = 16, 561 .increment = 0 562 } 563 }, } 564 }, } 565 }, 566 { /* AES GCM */ 567 .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, 568 {.sym = { 569 .xform_type = RTE_CRYPTO_SYM_XFORM_AEAD, 570 {.aead = { 571 .algo = RTE_CRYPTO_AEAD_AES_GCM, 572 .block_size = 16, 573 .key_size = { 574 .min = 16, 575 .max = 32, 576 .increment = 8 577 }, 578 .digest_size = { 579 .min = 8, 580 .max = 16, 581 .increment = 4 582 }, 583 .aad_size = { 584 .min = 0, 585 .max = 1024, 586 .increment = 1 587 }, 588 .iv_size = { 589 .min = 12, 590 .max = 12, 591 .increment = 0 592 } 593 }, } 594 }, } 595 }, 596 /* End of symmetric capabilities */ 597 RTE_CRYPTODEV_END_OF_CAPABILITIES_LIST() 598 }; 599 600 const struct rte_cryptodev_capabilities * 601 otx_get_capabilities(void) 602 { 603 return otx_capabilities; 604 } 605