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