DPDK
19.05.0
Main Page
Related Pages
Data Structures
Files
Examples
File List
Globals
lib
librte_cryptodev
rte_crypto_sym.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2016-2019 Intel Corporation
3
*/
4
5
#ifndef _RTE_CRYPTO_SYM_H_
6
#define _RTE_CRYPTO_SYM_H_
7
17
#ifdef __cplusplus
18
extern
"C"
{
19
#endif
20
21
#include <string.h>
22
23
#include <
rte_mbuf.h
>
24
#include <
rte_memory.h
>
25
#include <
rte_mempool.h
>
26
#include <
rte_common.h
>
27
28
30
enum
rte_crypto_cipher_algorithm
{
31
RTE_CRYPTO_CIPHER_NULL
= 1,
34
RTE_CRYPTO_CIPHER_3DES_CBC
,
36
RTE_CRYPTO_CIPHER_3DES_CTR
,
38
RTE_CRYPTO_CIPHER_3DES_ECB
,
41
RTE_CRYPTO_CIPHER_AES_CBC
,
43
RTE_CRYPTO_CIPHER_AES_CTR
,
45
RTE_CRYPTO_CIPHER_AES_ECB
,
47
RTE_CRYPTO_CIPHER_AES_F8
,
49
RTE_CRYPTO_CIPHER_AES_XTS
,
52
RTE_CRYPTO_CIPHER_ARC4
,
55
RTE_CRYPTO_CIPHER_KASUMI_F8
,
58
RTE_CRYPTO_CIPHER_SNOW3G_UEA2
,
61
RTE_CRYPTO_CIPHER_ZUC_EEA3
,
64
RTE_CRYPTO_CIPHER_DES_CBC
,
67
RTE_CRYPTO_CIPHER_AES_DOCSISBPI
,
74
RTE_CRYPTO_CIPHER_DES_DOCSISBPI
,
81
RTE_CRYPTO_CIPHER_LIST_END
82
83
};
84
86
extern
const
char
*
87
rte_crypto_cipher_algorithm_strings
[];
88
90
enum
rte_crypto_cipher_operation
{
91
RTE_CRYPTO_CIPHER_OP_ENCRYPT
,
93
RTE_CRYPTO_CIPHER_OP_DECRYPT
95
};
96
98
extern
const
char
*
99
rte_crypto_cipher_operation_strings
[];
100
107
struct
rte_crypto_cipher_xform
{
108
enum
rte_crypto_cipher_operation
op
;
113
enum
rte_crypto_cipher_algorithm
algo
;
116
struct
{
117
uint8_t *
data
;
118
uint16_t
length
;
119
}
key
;
143
struct
{
144
uint16_t
offset
;
175
uint16_t
length
;
193
}
iv
;
194
};
195
197
enum
rte_crypto_auth_algorithm
{
198
RTE_CRYPTO_AUTH_NULL
= 1,
201
RTE_CRYPTO_AUTH_AES_CBC_MAC
,
203
RTE_CRYPTO_AUTH_AES_CMAC
,
205
RTE_CRYPTO_AUTH_AES_GMAC
,
207
RTE_CRYPTO_AUTH_AES_XCBC_MAC
,
210
RTE_CRYPTO_AUTH_KASUMI_F9
,
213
RTE_CRYPTO_AUTH_MD5
,
215
RTE_CRYPTO_AUTH_MD5_HMAC
,
218
RTE_CRYPTO_AUTH_SHA1
,
220
RTE_CRYPTO_AUTH_SHA1_HMAC
,
222
RTE_CRYPTO_AUTH_SHA224
,
224
RTE_CRYPTO_AUTH_SHA224_HMAC
,
226
RTE_CRYPTO_AUTH_SHA256
,
228
RTE_CRYPTO_AUTH_SHA256_HMAC
,
230
RTE_CRYPTO_AUTH_SHA384
,
232
RTE_CRYPTO_AUTH_SHA384_HMAC
,
234
RTE_CRYPTO_AUTH_SHA512
,
236
RTE_CRYPTO_AUTH_SHA512_HMAC
,
239
RTE_CRYPTO_AUTH_SNOW3G_UIA2
,
242
RTE_CRYPTO_AUTH_ZUC_EIA3
,
245
RTE_CRYPTO_AUTH_SHA3_224
,
247
RTE_CRYPTO_AUTH_SHA3_224_HMAC
,
249
RTE_CRYPTO_AUTH_SHA3_256
,
251
RTE_CRYPTO_AUTH_SHA3_256_HMAC
,
253
RTE_CRYPTO_AUTH_SHA3_384
,
255
RTE_CRYPTO_AUTH_SHA3_384_HMAC
,
257
RTE_CRYPTO_AUTH_SHA3_512
,
259
RTE_CRYPTO_AUTH_SHA3_512_HMAC
,
262
RTE_CRYPTO_AUTH_LIST_END
263
};
264
266
extern
const
char
*
267
rte_crypto_auth_algorithm_strings
[];
268
270
enum
rte_crypto_auth_operation
{
271
RTE_CRYPTO_AUTH_OP_VERIFY
,
272
RTE_CRYPTO_AUTH_OP_GENERATE
273
};
274
276
extern
const
char
*
277
rte_crypto_auth_operation_strings
[];
278
286
struct
rte_crypto_auth_xform
{
287
enum
rte_crypto_auth_operation
op
;
289
enum
rte_crypto_auth_algorithm
algo
;
292
struct
{
293
uint8_t *
data
;
294
uint16_t
length
;
295
}
key
;
303
struct
{
304
uint16_t
offset
;
319
uint16_t
length
;
329
}
iv
;
331
uint16_t
digest_length
;
341
};
342
343
345
enum
rte_crypto_aead_algorithm
{
346
RTE_CRYPTO_AEAD_AES_CCM
= 1,
348
RTE_CRYPTO_AEAD_AES_GCM
,
350
RTE_CRYPTO_AEAD_LIST_END
351
};
352
354
extern
const
char
*
355
rte_crypto_aead_algorithm_strings
[];
356
358
enum
rte_crypto_aead_operation
{
359
RTE_CRYPTO_AEAD_OP_ENCRYPT
,
361
RTE_CRYPTO_AEAD_OP_DECRYPT
363
};
364
366
extern
const
char
*
367
rte_crypto_aead_operation_strings
[];
368
369
struct
rte_crypto_aead_xform {
370
enum
rte_crypto_aead_operation
op;
372
enum
rte_crypto_aead_algorithm
algo;
375
struct
{
376
uint8_t *data;
377
uint16_t length;
378
} key;
379
380
struct
{
381
uint16_t offset;
401
uint16_t length;
410
} iv;
412
uint16_t digest_length;
413
414
uint16_t aad_length;
420
};
421
423
enum
rte_crypto_sym_xform_type
{
424
RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED
= 0,
425
RTE_CRYPTO_SYM_XFORM_AUTH
,
426
RTE_CRYPTO_SYM_XFORM_CIPHER
,
427
RTE_CRYPTO_SYM_XFORM_AEAD
428
};
429
439
struct
rte_crypto_sym_xform
{
440
struct
rte_crypto_sym_xform
*
next
;
442
enum
rte_crypto_sym_xform_type
type
443
;
444
RTE_STD_C11
445
union
{
446
struct
rte_crypto_auth_xform
auth
;
448
struct
rte_crypto_cipher_xform
cipher
;
450
struct
rte_crypto_aead_xform
aead
;
452
};
453
};
454
455
struct
rte_cryptodev_sym_session
;
456
487
struct
rte_crypto_sym_op
{
488
struct
rte_mbuf
*
m_src
;
489
struct
rte_mbuf
*
m_dst
;
491
RTE_STD_C11
492
union
{
493
struct
rte_cryptodev_sym_session
*
session
;
495
struct
rte_crypto_sym_xform
*
xform
;
497
struct
rte_security_session *
sec_session
;
499
};
500
501
RTE_STD_C11
502
union
{
503
struct
{
504
struct
{
505
uint32_t
offset
;
510
uint32_t
length
;
515
}
data
;
516
struct
{
517
uint8_t *
data
;
537
rte_iova_t
phys_addr
;
539
}
digest
;
540
struct
{
541
uint8_t *
data
;
572
rte_iova_t
phys_addr
;
573
}
aad
;
575
} aead;
576
577
struct
{
578
struct
{
579
struct
{
580
uint32_t
offset
;
594
uint32_t
length
;
608
}
data
;
609
} cipher;
610
611
struct
{
612
struct
{
613
uint32_t
offset
;
629
uint32_t
length
;
645
}
data
;
648
struct
{
649
uint8_t *
data
;
669
rte_iova_t
phys_addr
;
671
}
digest
;
672
} auth;
673
};
674
};
675
};
676
677
683
static
inline
void
684
__rte_crypto_sym_op_reset
(
struct
rte_crypto_sym_op
*op)
685
{
686
memset(op, 0,
sizeof
(*op));
687
}
688
689
700
static
inline
struct
rte_crypto_sym_xform
*
701
__rte_crypto_sym_op_sym_xforms_alloc
(
struct
rte_crypto_sym_op
*sym_op,
702
void
*priv_data, uint8_t nb_xforms)
703
{
704
struct
rte_crypto_sym_xform
*xform;
705
706
sym_op->
xform
= xform = (
struct
rte_crypto_sym_xform
*)priv_data;
707
708
do
{
709
xform->
type
=
RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED
;
710
xform = xform->
next
= --nb_xforms > 0 ? xform + 1 : NULL;
711
}
while
(xform);
712
713
return
sym_op->
xform
;
714
}
715
716
723
static
inline
int
724
__rte_crypto_sym_op_attach_sym_session
(
struct
rte_crypto_sym_op
*sym_op,
725
struct
rte_cryptodev_sym_session
*sess)
726
{
727
sym_op->
session
= sess;
728
729
return
0;
730
}
731
732
733
#ifdef __cplusplus
734
}
735
#endif
736
737
#endif
/* _RTE_CRYPTO_SYM_H_ */
Generated by
1.8.1.2