DPDK  19.02.0
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 
81  RTE_CRYPTO_CIPHER_LIST_END
82 
83 };
84 
86 extern const char *
88 
95 };
96 
98 extern const char *
100 
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 
265  RTE_CRYPTO_AUTH_LIST_END
266 };
267 
269 extern const char *
271 
276 };
277 
279 extern const char *
281 
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 
353  RTE_CRYPTO_AEAD_LIST_END
354 };
355 
357 extern const char *
359 
366 };
367 
369 extern const char *
371 
372 struct rte_crypto_aead_xform {
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 
431 };
432 
446  ;
448  union {
453  struct rte_crypto_aead_xform aead;
455  };
456 };
457 
459 
491  struct rte_mbuf *m_src;
492  struct rte_mbuf *m_dst;
495  union {
500  struct rte_security_session *sec_session;
502  };
503 
505  union {
506  struct {
507  struct {
508  uint32_t offset;
513  uint32_t length;
518  } data;
519  struct {
520  uint8_t *data;
542  } digest;
543  struct {
544  uint8_t *data;
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;
674  } digest;
675  } auth;
676  };
677  };
678 };
679 
680 
686 static inline void
688 {
689  memset(op, 0, sizeof(*op));
690 }
691 
692 
703 static inline struct rte_crypto_sym_xform *
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 {
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
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_ */