DPDK  19.05.0
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 
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;
143  struct {
144  uint16_t offset;
175  uint16_t length;
193  } iv;
194 };
195 
262  RTE_CRYPTO_AUTH_LIST_END
263 };
264 
266 extern const char *
268 
273 };
274 
276 extern const char *
278 
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 
350  RTE_CRYPTO_AEAD_LIST_END
351 };
352 
354 extern const char *
356 
363 };
364 
366 extern const char *
368 
369 struct rte_crypto_aead_xform {
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 
428 };
429 
443  ;
445  union {
450  struct rte_crypto_aead_xform aead;
452  };
453 };
454 
456 
488  struct rte_mbuf *m_src;
489  struct rte_mbuf *m_dst;
492  union {
497  struct rte_security_session *sec_session;
499  };
500 
502  union {
503  struct {
504  struct {
505  uint32_t offset;
510  uint32_t length;
515  } data;
516  struct {
517  uint8_t *data;
539  } digest;
540  struct {
541  uint8_t *data;
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;
671  } digest;
672  } auth;
673  };
674  };
675 };
676 
677 
683 static inline void
685 {
686  memset(op, 0, sizeof(*op));
687 }
688 
689 
700 static inline struct rte_crypto_sym_xform *
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 {
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
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_ */