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