DPDK
18.02.2
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_LIST_END
249
};
250
252
extern
const
char
*
253
rte_crypto_auth_algorithm_strings
[];
254
256
enum
rte_crypto_auth_operation
{
257
RTE_CRYPTO_AUTH_OP_VERIFY
,
258
RTE_CRYPTO_AUTH_OP_GENERATE
259
};
260
262
extern
const
char
*
263
rte_crypto_auth_operation_strings
[];
264
272
struct
rte_crypto_auth_xform
{
273
enum
rte_crypto_auth_operation
op
;
275
enum
rte_crypto_auth_algorithm
algo
;
278
struct
{
279
uint8_t *
data
;
280
uint16_t
length
;
281
}
key
;
289
struct
{
290
uint16_t
offset
;
305
uint16_t
length
;
315
}
iv
;
317
uint16_t
digest_length
;
327
};
328
329
331
enum
rte_crypto_aead_algorithm
{
332
RTE_CRYPTO_AEAD_AES_CCM
= 1,
334
RTE_CRYPTO_AEAD_AES_GCM
,
336
RTE_CRYPTO_AEAD_LIST_END
337
};
338
340
extern
const
char
*
341
rte_crypto_aead_algorithm_strings
[];
342
344
enum
rte_crypto_aead_operation
{
345
RTE_CRYPTO_AEAD_OP_ENCRYPT
,
347
RTE_CRYPTO_AEAD_OP_DECRYPT
349
};
350
352
extern
const
char
*
353
rte_crypto_aead_operation_strings
[];
354
355
struct
rte_crypto_aead_xform {
356
enum
rte_crypto_aead_operation
op;
358
enum
rte_crypto_aead_algorithm
algo;
361
struct
{
362
uint8_t *data;
363
uint16_t length;
364
} key;
365
366
struct
{
367
uint16_t offset;
387
uint16_t length;
396
} iv;
398
uint16_t digest_length;
399
400
uint16_t aad_length;
406
};
407
409
enum
rte_crypto_sym_xform_type
{
410
RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED
= 0,
411
RTE_CRYPTO_SYM_XFORM_AUTH
,
412
RTE_CRYPTO_SYM_XFORM_CIPHER
,
413
RTE_CRYPTO_SYM_XFORM_AEAD
414
};
415
425
struct
rte_crypto_sym_xform
{
426
struct
rte_crypto_sym_xform
*
next
;
428
enum
rte_crypto_sym_xform_type
type
429
;
430
RTE_STD_C11
431
union
{
432
struct
rte_crypto_auth_xform
auth
;
434
struct
rte_crypto_cipher_xform
cipher
;
436
struct
rte_crypto_aead_xform
aead
;
438
};
439
};
440
441
struct
rte_cryptodev_sym_session
;
442
473
struct
rte_crypto_sym_op
{
474
struct
rte_mbuf
*
m_src
;
475
struct
rte_mbuf
*
m_dst
;
477
RTE_STD_C11
478
union
{
479
struct
rte_cryptodev_sym_session
*
session
;
481
struct
rte_crypto_sym_xform
*
xform
;
483
struct
rte_security_session *
sec_session
;
485
};
486
487
RTE_STD_C11
488
union
{
489
struct
{
490
struct
{
491
uint32_t
offset
;
496
uint32_t
length
;
501
}
data
;
502
struct
{
503
uint8_t *
data
;
523
rte_iova_t
phys_addr
;
525
}
digest
;
526
struct
{
527
uint8_t *
data
;
558
rte_iova_t
phys_addr
;
559
}
aad
;
561
} aead;
562
563
struct
{
564
struct
{
565
struct
{
566
uint32_t
offset
;
580
uint32_t
length
;
594
}
data
;
595
} cipher;
596
597
struct
{
598
struct
{
599
uint32_t
offset
;
615
uint32_t
length
;
631
}
data
;
634
struct
{
635
uint8_t *
data
;
655
rte_iova_t
phys_addr
;
657
}
digest
;
658
} auth;
659
};
660
};
661
};
662
663
669
static
inline
void
670
__rte_crypto_sym_op_reset
(
struct
rte_crypto_sym_op
*op)
671
{
672
memset(op, 0,
sizeof
(*op));
673
}
674
675
686
static
inline
struct
rte_crypto_sym_xform
*
687
__rte_crypto_sym_op_sym_xforms_alloc
(
struct
rte_crypto_sym_op
*sym_op,
688
void
*priv_data, uint8_t nb_xforms)
689
{
690
struct
rte_crypto_sym_xform
*xform;
691
692
sym_op->
xform
= xform = (
struct
rte_crypto_sym_xform
*)priv_data;
693
694
do
{
695
xform->
type
=
RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED
;
696
xform = xform->
next
= --nb_xforms > 0 ? xform + 1 : NULL;
697
}
while
(xform);
698
699
return
sym_op->
xform
;
700
}
701
702
709
static
inline
int
710
__rte_crypto_sym_op_attach_sym_session
(
struct
rte_crypto_sym_op
*sym_op,
711
struct
rte_cryptodev_sym_session
*sess)
712
{
713
sym_op->
session
= sess;
714
715
return
0;
716
}
717
718
719
#ifdef __cplusplus
720
}
721
#endif
722
723
#endif
/* _RTE_CRYPTO_SYM_H_ */
Generated by
1.8.1.2