DPDK
18.05.1
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-2017 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
;
146
struct
{
147
uint16_t
offset
;
178
uint16_t
length
;
196
}
iv
;
197
};
198
200
enum
rte_crypto_auth_algorithm
{
201
RTE_CRYPTO_AUTH_NULL
= 1,
204
RTE_CRYPTO_AUTH_AES_CBC_MAC
,
206
RTE_CRYPTO_AUTH_AES_CMAC
,
208
RTE_CRYPTO_AUTH_AES_GMAC
,
210
RTE_CRYPTO_AUTH_AES_XCBC_MAC
,
213
RTE_CRYPTO_AUTH_KASUMI_F9
,
216
RTE_CRYPTO_AUTH_MD5
,
218
RTE_CRYPTO_AUTH_MD5_HMAC
,
221
RTE_CRYPTO_AUTH_SHA1
,
223
RTE_CRYPTO_AUTH_SHA1_HMAC
,
225
RTE_CRYPTO_AUTH_SHA224
,
227
RTE_CRYPTO_AUTH_SHA224_HMAC
,
229
RTE_CRYPTO_AUTH_SHA256
,
231
RTE_CRYPTO_AUTH_SHA256_HMAC
,
233
RTE_CRYPTO_AUTH_SHA384
,
235
RTE_CRYPTO_AUTH_SHA384_HMAC
,
237
RTE_CRYPTO_AUTH_SHA512
,
239
RTE_CRYPTO_AUTH_SHA512_HMAC
,
242
RTE_CRYPTO_AUTH_SNOW3G_UIA2
,
245
RTE_CRYPTO_AUTH_ZUC_EIA3
,
248
RTE_CRYPTO_AUTH_SHA3_224
,
250
RTE_CRYPTO_AUTH_SHA3_224_HMAC
,
252
RTE_CRYPTO_AUTH_SHA3_256
,
254
RTE_CRYPTO_AUTH_SHA3_256_HMAC
,
256
RTE_CRYPTO_AUTH_SHA3_384
,
258
RTE_CRYPTO_AUTH_SHA3_384_HMAC
,
260
RTE_CRYPTO_AUTH_SHA3_512
,
262
RTE_CRYPTO_AUTH_SHA3_512_HMAC
,
265
RTE_CRYPTO_AUTH_LIST_END
266
};
267
269
extern
const
char
*
270
rte_crypto_auth_algorithm_strings
[];
271
273
enum
rte_crypto_auth_operation
{
274
RTE_CRYPTO_AUTH_OP_VERIFY
,
275
RTE_CRYPTO_AUTH_OP_GENERATE
276
};
277
279
extern
const
char
*
280
rte_crypto_auth_operation_strings
[];
281
289
struct
rte_crypto_auth_xform
{
290
enum
rte_crypto_auth_operation
op
;
292
enum
rte_crypto_auth_algorithm
algo
;
295
struct
{
296
uint8_t *
data
;
297
uint16_t
length
;
298
}
key
;
306
struct
{
307
uint16_t
offset
;
322
uint16_t
length
;
332
}
iv
;
334
uint16_t
digest_length
;
344
};
345
346
348
enum
rte_crypto_aead_algorithm
{
349
RTE_CRYPTO_AEAD_AES_CCM
= 1,
351
RTE_CRYPTO_AEAD_AES_GCM
,
353
RTE_CRYPTO_AEAD_LIST_END
354
};
355
357
extern
const
char
*
358
rte_crypto_aead_algorithm_strings
[];
359
361
enum
rte_crypto_aead_operation
{
362
RTE_CRYPTO_AEAD_OP_ENCRYPT
,
364
RTE_CRYPTO_AEAD_OP_DECRYPT
366
};
367
369
extern
const
char
*
370
rte_crypto_aead_operation_strings
[];
371
372
struct
rte_crypto_aead_xform {
373
enum
rte_crypto_aead_operation
op;
375
enum
rte_crypto_aead_algorithm
algo;
378
struct
{
379
uint8_t *data;
380
uint16_t length;
381
} key;
382
383
struct
{
384
uint16_t offset;
404
uint16_t length;
413
} iv;
415
uint16_t digest_length;
416
417
uint16_t aad_length;
423
};
424
426
enum
rte_crypto_sym_xform_type
{
427
RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED
= 0,
428
RTE_CRYPTO_SYM_XFORM_AUTH
,
429
RTE_CRYPTO_SYM_XFORM_CIPHER
,
430
RTE_CRYPTO_SYM_XFORM_AEAD
431
};
432
442
struct
rte_crypto_sym_xform
{
443
struct
rte_crypto_sym_xform
*
next
;
445
enum
rte_crypto_sym_xform_type
type
446
;
447
RTE_STD_C11
448
union
{
449
struct
rte_crypto_auth_xform
auth
;
451
struct
rte_crypto_cipher_xform
cipher
;
453
struct
rte_crypto_aead_xform
aead
;
455
};
456
};
457
458
struct
rte_cryptodev_sym_session
;
459
490
struct
rte_crypto_sym_op
{
491
struct
rte_mbuf
*
m_src
;
492
struct
rte_mbuf
*
m_dst
;
494
RTE_STD_C11
495
union
{
496
struct
rte_cryptodev_sym_session
*
session
;
498
struct
rte_crypto_sym_xform
*
xform
;
500
struct
rte_security_session *
sec_session
;
502
};
503
504
RTE_STD_C11
505
union
{
506
struct
{
507
struct
{
508
uint32_t
offset
;
513
uint32_t
length
;
518
}
data
;
519
struct
{
520
uint8_t *
data
;
540
rte_iova_t
phys_addr
;
542
}
digest
;
543
struct
{
544
uint8_t *
data
;
575
rte_iova_t
phys_addr
;
576
}
aad
;
578
} aead;
579
580
struct
{
581
struct
{
582
struct
{
583
uint32_t
offset
;
597
uint32_t
length
;
611
}
data
;
612
} cipher;
613
614
struct
{
615
struct
{
616
uint32_t
offset
;
632
uint32_t
length
;
648
}
data
;
651
struct
{
652
uint8_t *
data
;
672
rte_iova_t
phys_addr
;
674
}
digest
;
675
} auth;
676
};
677
};
678
};
679
680
686
static
inline
void
687
__rte_crypto_sym_op_reset
(
struct
rte_crypto_sym_op
*op)
688
{
689
memset(op, 0,
sizeof
(*op));
690
}
691
692
703
static
inline
struct
rte_crypto_sym_xform
*
704
__rte_crypto_sym_op_sym_xforms_alloc
(
struct
rte_crypto_sym_op
*sym_op,
705
void
*priv_data, uint8_t nb_xforms)
706
{
707
struct
rte_crypto_sym_xform
*xform;
708
709
sym_op->
xform
= xform = (
struct
rte_crypto_sym_xform
*)priv_data;
710
711
do
{
712
xform->
type
=
RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED
;
713
xform = xform->
next
= --nb_xforms > 0 ? xform + 1 : NULL;
714
}
while
(xform);
715
716
return
sym_op->
xform
;
717
}
718
719
726
static
inline
int
727
__rte_crypto_sym_op_attach_sym_session
(
struct
rte_crypto_sym_op
*sym_op,
728
struct
rte_cryptodev_sym_session
*sess)
729
{
730
sym_op->
session
= sess;
731
732
return
0;
733
}
734
735
736
#ifdef __cplusplus
737
}
738
#endif
739
740
#endif
/* _RTE_CRYPTO_SYM_H_ */
Generated by
1.8.1.2