linux/drivers/crypto/caam/desc.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * CAAM descriptor composition header
 * Definitions to support CAAM descriptor instruction generation
 *
 * Copyright 2008-2011 Freescale Semiconductor, Inc.
 * Copyright 2018 NXP
 */

#ifndef DESC_H
#define DESC_H

/*
 * 16-byte hardware scatter/gather table
 * An 8-byte table exists in the hardware spec, but has never been
 * implemented to date. The 8/16 option is selected at RTL-compile-time.
 * and this selection is visible in the Compile Time Parameters Register
 */

#define SEC4_SG_LEN_EXT
#define SEC4_SG_LEN_FIN
#define SEC4_SG_BPID_MASK
#define SEC4_SG_BPID_SHIFT
#define SEC4_SG_LEN_MASK
#define SEC4_SG_OFFSET_MASK

/* Max size of any CAAM descriptor in 32-bit words, inclusive of header */
#define MAX_CAAM_DESCSIZE

/* Block size of any entity covered/uncovered with a KEK/TKEK */
#define KEK_BLOCKSIZE

/*
 * Supported descriptor command types as they show up
 * inside a descriptor command word.
 */
#define CMD_SHIFT
#define CMD_MASK

#define CMD_KEY
#define CMD_SEQ_KEY
#define CMD_LOAD
#define CMD_SEQ_LOAD
#define CMD_FIFO_LOAD
#define CMD_SEQ_FIFO_LOAD
#define CMD_STORE
#define CMD_SEQ_STORE
#define CMD_FIFO_STORE
#define CMD_SEQ_FIFO_STORE
#define CMD_MOVE_LEN
#define CMD_MOVE
#define CMD_OPERATION
#define CMD_SIGNATURE
#define CMD_JUMP
#define CMD_MATH
#define CMD_DESC_HDR
#define CMD_SHARED_DESC_HDR
#define CMD_SEQ_IN_PTR
#define CMD_SEQ_OUT_PTR

/* General-purpose class selector for all commands */
#define CLASS_SHIFT
#define CLASS_MASK

#define CLASS_NONE
#define CLASS_1
#define CLASS_2
#define CLASS_BOTH

/*
 * Descriptor header command constructs
 * Covers shared, job, and trusted descriptor headers
 */

/*
 * Do Not Run - marks a descriptor inexecutable if there was
 * a preceding error somewhere
 */
#define HDR_DNR

/*
 * ONE - should always be set. Combination of ONE (always
 * set) and ZRO (always clear) forms an endianness sanity check
 */
#define HDR_ONE
#define HDR_ZRO

/* Start Index or SharedDesc Length */
#define HDR_START_IDX_SHIFT
#define HDR_START_IDX_MASK

/* If shared descriptor header, 6-bit length */
#define HDR_DESCLEN_SHR_MASK

/* If non-shared header, 7-bit length */
#define HDR_DESCLEN_MASK

/* This is a TrustedDesc (if not SharedDesc) */
#define HDR_TRUSTED

/* Make into TrustedDesc (if not SharedDesc) */
#define HDR_MAKE_TRUSTED

/* Save context if self-shared (if SharedDesc) */
#define HDR_SAVECTX

/* Next item points to SharedDesc */
#define HDR_SHARED

/*
 * Reverse Execution Order - execute JobDesc first, then
 * execute SharedDesc (normally SharedDesc goes first).
 */
#define HDR_REVERSE

/* Propagate DNR property to SharedDesc */
#define HDR_PROP_DNR

/* JobDesc/SharedDesc share property */
#define HDR_SD_SHARE_SHIFT
#define HDR_SD_SHARE_MASK
#define HDR_JD_SHARE_SHIFT
#define HDR_JD_SHARE_MASK

#define HDR_SHARE_NEVER
#define HDR_SHARE_WAIT
#define HDR_SHARE_SERIAL
#define HDR_SHARE_ALWAYS
#define HDR_SHARE_DEFER

/* JobDesc/SharedDesc descriptor length */
#define HDR_JD_LENGTH_MASK
#define HDR_SD_LENGTH_MASK

/*
 * KEY/SEQ_KEY Command Constructs
 */

/* Key Destination Class: 01 = Class 1, 02 - Class 2 */
#define KEY_DEST_CLASS_SHIFT
#define KEY_DEST_CLASS_MASK

/* Scatter-Gather Table/Variable Length Field */
#define KEY_SGF
#define KEY_VLF

/* Immediate - Key follows command in the descriptor */
#define KEY_IMM

/*
 * Encrypted - Key is encrypted either with the KEK, or
 * with the TDKEK if TK is set
 */
#define KEY_ENC

/*
 * No Write Back - Do not allow key to be FIFO STOREd
 */
#define KEY_NWB

/*
 * Enhanced Encryption of Key
 */
#define KEY_EKT

/*
 * Encrypted with Trusted Key
 */
#define KEY_TK

/*
 * KDEST - Key Destination: 0 - class key register,
 * 1 - PKHA 'e', 2 - AFHA Sbox, 3 - MDHA split-key
 */
#define KEY_DEST_SHIFT
#define KEY_DEST_MASK

#define KEY_DEST_CLASS_REG
#define KEY_DEST_PKHA_E
#define KEY_DEST_AFHA_SBOX
#define KEY_DEST_MDHA_SPLIT

/* Length in bytes */
#define KEY_LENGTH_MASK

/*
 * LOAD/SEQ_LOAD/STORE/SEQ_STORE Command Constructs
 */

/*
 * Load/Store Destination: 0 = class independent CCB,
 * 1 = class 1 CCB, 2 = class 2 CCB, 3 = DECO
 */
#define LDST_CLASS_SHIFT
#define LDST_CLASS_MASK
#define LDST_CLASS_IND_CCB
#define LDST_CLASS_1_CCB
#define LDST_CLASS_2_CCB
#define LDST_CLASS_DECO

/* Scatter-Gather Table/Variable Length Field */
#define LDST_SGF
#define LDST_VLF

/* Immediate - Key follows this command in descriptor */
#define LDST_IMM_MASK
#define LDST_IMM_SHIFT
#define LDST_IMM

/* SRC/DST - Destination for LOAD, Source for STORE */
#define LDST_SRCDST_SHIFT
#define LDST_SRCDST_MASK

#define LDST_SRCDST_BYTE_CONTEXT
#define LDST_SRCDST_BYTE_KEY
#define LDST_SRCDST_BYTE_INFIFO
#define LDST_SRCDST_BYTE_OUTFIFO

#define LDST_SRCDST_WORD_MODE_REG
#define LDST_SRCDST_WORD_KEYSZ_REG
#define LDST_SRCDST_WORD_DATASZ_REG
#define LDST_SRCDST_WORD_ICVSZ_REG
#define LDST_SRCDST_WORD_CHACTRL
#define LDST_SRCDST_WORD_DECOCTRL
#define LDST_SRCDST_WORD_IRQCTRL
#define LDST_SRCDST_WORD_DECO_PCLOVRD
#define LDST_SRCDST_WORD_CLRW
#define LDST_SRCDST_WORD_DECO_MATH0
#define LDST_SRCDST_WORD_STAT
#define LDST_SRCDST_WORD_DECO_MATH1
#define LDST_SRCDST_WORD_DECO_MATH2
#define LDST_SRCDST_WORD_DECO_AAD_SZ
#define LDST_SRCDST_WORD_DECO_MATH3
#define LDST_SRCDST_WORD_CLASS1_IV_SZ
#define LDST_SRCDST_WORD_ALTDS_CLASS1
#define LDST_SRCDST_WORD_PKHA_A_SZ
#define LDST_SRCDST_WORD_PKHA_B_SZ
#define LDST_SRCDST_WORD_PKHA_N_SZ
#define LDST_SRCDST_WORD_PKHA_E_SZ
#define LDST_SRCDST_WORD_CLASS_CTX
#define LDST_SRCDST_WORD_DESCBUF
#define LDST_SRCDST_WORD_DESCBUF_JOB
#define LDST_SRCDST_WORD_DESCBUF_SHARED
#define LDST_SRCDST_WORD_DESCBUF_JOB_WE
#define LDST_SRCDST_WORD_DESCBUF_SHARED_WE
#define LDST_SRCDST_WORD_INFO_FIFO_SM
#define LDST_SRCDST_WORD_INFO_FIFO

/* Offset in source/destination */
#define LDST_OFFSET_SHIFT
#define LDST_OFFSET_MASK

/* LDOFF definitions used when DST = LDST_SRCDST_WORD_DECOCTRL */
/* These could also be shifted by LDST_OFFSET_SHIFT - this reads better */
#define LDOFF_CHG_SHARE_SHIFT
#define LDOFF_CHG_SHARE_MASK
#define LDOFF_CHG_SHARE_NEVER
#define LDOFF_CHG_SHARE_OK_PROP
#define LDOFF_CHG_SHARE_OK_NO_PROP

#define LDOFF_ENABLE_AUTO_NFIFO
#define LDOFF_DISABLE_AUTO_NFIFO

#define LDOFF_CHG_NONSEQLIODN_SHIFT
#define LDOFF_CHG_NONSEQLIODN_MASK
#define LDOFF_CHG_NONSEQLIODN_SEQ
#define LDOFF_CHG_NONSEQLIODN_NON_SEQ
#define LDOFF_CHG_NONSEQLIODN_TRUSTED

#define LDOFF_CHG_SEQLIODN_SHIFT
#define LDOFF_CHG_SEQLIODN_MASK
#define LDOFF_CHG_SEQLIODN_SEQ
#define LDOFF_CHG_SEQLIODN_NON_SEQ
#define LDOFF_CHG_SEQLIODN_TRUSTED

/* Data length in bytes	*/
#define LDST_LEN_SHIFT
#define LDST_LEN_MASK

/* Special Length definitions when dst=deco-ctrl */
#define LDLEN_ENABLE_OSL_COUNT
#define LDLEN_RST_CHA_OFIFO_PTR
#define LDLEN_RST_OFIFO
#define LDLEN_SET_OFIFO_OFF_VALID
#define LDLEN_SET_OFIFO_OFF_RSVD
#define LDLEN_SET_OFIFO_OFFSET_SHIFT
#define LDLEN_SET_OFIFO_OFFSET_MASK

/* Special Length definitions when dst=sm, nfifo-{sm,m} */
#define LDLEN_MATH0
#define LDLEN_MATH1
#define LDLEN_MATH2
#define LDLEN_MATH3

/*
 * FIFO_LOAD/FIFO_STORE/SEQ_FIFO_LOAD/SEQ_FIFO_STORE
 * Command Constructs
 */

/*
 * Load Destination: 0 = skip (SEQ_FIFO_LOAD only),
 * 1 = Load for Class1, 2 = Load for Class2, 3 = Load both
 * Store Source: 0 = normal, 1 = Class1key, 2 = Class2key
 */
#define FIFOLD_CLASS_SHIFT
#define FIFOLD_CLASS_MASK
#define FIFOLD_CLASS_SKIP
#define FIFOLD_CLASS_CLASS1
#define FIFOLD_CLASS_CLASS2
#define FIFOLD_CLASS_BOTH

#define FIFOST_CLASS_SHIFT
#define FIFOST_CLASS_MASK
#define FIFOST_CLASS_NORMAL
#define FIFOST_CLASS_CLASS1KEY
#define FIFOST_CLASS_CLASS2KEY

/*
 * Scatter-Gather Table/Variable Length Field
 * If set for FIFO_LOAD, refers to a SG table. Within
 * SEQ_FIFO_LOAD, is variable input sequence
 */
#define FIFOLDST_SGF_SHIFT
#define FIFOLDST_SGF_MASK
#define FIFOLDST_VLF_MASK
#define FIFOLDST_SGF
#define FIFOLDST_VLF

/* Immediate - Data follows command in descriptor */
#define FIFOLD_IMM_SHIFT
#define FIFOLD_IMM_MASK
#define FIFOLD_IMM

/* Continue - Not the last FIFO store to come */
#define FIFOST_CONT_SHIFT
#define FIFOST_CONT_MASK

/*
 * Extended Length - use 32-bit extended length that
 * follows the pointer field. Illegal with IMM set
 */
#define FIFOLDST_EXT_SHIFT
#define FIFOLDST_EXT_MASK
#define FIFOLDST_EXT

/* Input data type.*/
#define FIFOLD_TYPE_SHIFT
#define FIFOLD_CONT_TYPE_SHIFT
#define FIFOLD_TYPE_MASK

/* PK types */
#define FIFOLD_TYPE_PK
#define FIFOLD_TYPE_PK_MASK
#define FIFOLD_TYPE_PK_TYPEMASK
#define FIFOLD_TYPE_PK_A0
#define FIFOLD_TYPE_PK_A1
#define FIFOLD_TYPE_PK_A2
#define FIFOLD_TYPE_PK_A3
#define FIFOLD_TYPE_PK_B0
#define FIFOLD_TYPE_PK_B1
#define FIFOLD_TYPE_PK_B2
#define FIFOLD_TYPE_PK_B3
#define FIFOLD_TYPE_PK_N
#define FIFOLD_TYPE_PK_A
#define FIFOLD_TYPE_PK_B

/* Other types. Need to OR in last/flush bits as desired */
#define FIFOLD_TYPE_MSG_MASK
#define FIFOLD_TYPE_MSG
#define FIFOLD_TYPE_MSG1OUT2
#define FIFOLD_TYPE_IV
#define FIFOLD_TYPE_BITDATA
#define FIFOLD_TYPE_AAD
#define FIFOLD_TYPE_ICV

/* Last/Flush bits for use with "other" types above */
#define FIFOLD_TYPE_ACT_MASK
#define FIFOLD_TYPE_NOACTION
#define FIFOLD_TYPE_FLUSH1
#define FIFOLD_TYPE_LAST1
#define FIFOLD_TYPE_LAST2FLUSH
#define FIFOLD_TYPE_LAST2
#define FIFOLD_TYPE_LAST2FLUSH1
#define FIFOLD_TYPE_LASTBOTH
#define FIFOLD_TYPE_LASTBOTHFL
#define FIFOLD_TYPE_NOINFOFIFO

#define FIFOLDST_LEN_MASK
#define FIFOLDST_EXT_LEN_MASK

/* Output data types */
#define FIFOST_TYPE_SHIFT
#define FIFOST_TYPE_MASK

#define FIFOST_TYPE_PKHA_A0
#define FIFOST_TYPE_PKHA_A1
#define FIFOST_TYPE_PKHA_A2
#define FIFOST_TYPE_PKHA_A3
#define FIFOST_TYPE_PKHA_B0
#define FIFOST_TYPE_PKHA_B1
#define FIFOST_TYPE_PKHA_B2
#define FIFOST_TYPE_PKHA_B3
#define FIFOST_TYPE_PKHA_N
#define FIFOST_TYPE_PKHA_A
#define FIFOST_TYPE_PKHA_B
#define FIFOST_TYPE_AF_SBOX_JKEK
#define FIFOST_TYPE_AF_SBOX_TKEK
#define FIFOST_TYPE_PKHA_E_JKEK
#define FIFOST_TYPE_PKHA_E_TKEK
#define FIFOST_TYPE_KEY_KEK
#define FIFOST_TYPE_KEY_TKEK
#define FIFOST_TYPE_SPLIT_KEK
#define FIFOST_TYPE_SPLIT_TKEK
#define FIFOST_TYPE_OUTFIFO_KEK
#define FIFOST_TYPE_OUTFIFO_TKEK
#define FIFOST_TYPE_MESSAGE_DATA
#define FIFOST_TYPE_RNGSTORE
#define FIFOST_TYPE_RNGFIFO
#define FIFOST_TYPE_METADATA
#define FIFOST_TYPE_SKIP

/*
 * OPERATION Command Constructs
 */

/* Operation type selectors - OP TYPE */
#define OP_TYPE_SHIFT
#define OP_TYPE_MASK

#define OP_TYPE_UNI_PROTOCOL
#define OP_TYPE_PK
#define OP_TYPE_CLASS1_ALG
#define OP_TYPE_CLASS2_ALG
#define OP_TYPE_DECAP_PROTOCOL
#define OP_TYPE_ENCAP_PROTOCOL

/* ProtocolID selectors - PROTID */
#define OP_PCLID_SHIFT
#define OP_PCLID_MASK

/* Assuming OP_TYPE = OP_TYPE_UNI_PROTOCOL */
#define OP_PCLID_IKEV1_PRF
#define OP_PCLID_IKEV2_PRF
#define OP_PCLID_SSL30_PRF
#define OP_PCLID_TLS10_PRF
#define OP_PCLID_TLS11_PRF
#define OP_PCLID_DTLS10_PRF
#define OP_PCLID_PRF
#define OP_PCLID_BLOB
#define OP_PCLID_SECRETKEY
#define OP_PCLID_PUBLICKEYPAIR
#define OP_PCLID_DSASIGN
#define OP_PCLID_DSAVERIFY
#define OP_PCLID_RSAENC_PUBKEY
#define OP_PCLID_RSADEC_PRVKEY
#define OP_PCLID_DKP_MD5
#define OP_PCLID_DKP_SHA1
#define OP_PCLID_DKP_SHA224
#define OP_PCLID_DKP_SHA256
#define OP_PCLID_DKP_SHA384
#define OP_PCLID_DKP_SHA512
#define OP_PCLID_DKP_RIF_MD5
#define OP_PCLID_DKP_RIF_SHA1
#define OP_PCLID_DKP_RIF_SHA224
#define OP_PCLID_DKP_RIF_SHA256
#define OP_PCLID_DKP_RIF_SHA384
#define OP_PCLID_DKP_RIF_SHA512

/* Assuming OP_TYPE = OP_TYPE_DECAP_PROTOCOL/ENCAP_PROTOCOL */
#define OP_PCLID_IPSEC
#define OP_PCLID_SRTP
#define OP_PCLID_MACSEC
#define OP_PCLID_WIFI
#define OP_PCLID_WIMAX
#define OP_PCLID_SSL30
#define OP_PCLID_TLS10
#define OP_PCLID_TLS11
#define OP_PCLID_TLS12
#define OP_PCLID_DTLS

/*
 * ProtocolInfo selectors
 */
#define OP_PCLINFO_MASK

/* for OP_PCLID_IPSEC */
#define OP_PCL_IPSEC_CIPHER_MASK
#define OP_PCL_IPSEC_AUTH_MASK

#define OP_PCL_IPSEC_DES_IV64
#define OP_PCL_IPSEC_DES
#define OP_PCL_IPSEC_3DES
#define OP_PCL_IPSEC_AES_CBC
#define OP_PCL_IPSEC_AES_CTR
#define OP_PCL_IPSEC_AES_XTS
#define OP_PCL_IPSEC_AES_CCM8
#define OP_PCL_IPSEC_AES_CCM12
#define OP_PCL_IPSEC_AES_CCM16
#define OP_PCL_IPSEC_AES_GCM8
#define OP_PCL_IPSEC_AES_GCM12
#define OP_PCL_IPSEC_AES_GCM16

#define OP_PCL_IPSEC_HMAC_NULL
#define OP_PCL_IPSEC_HMAC_MD5_96
#define OP_PCL_IPSEC_HMAC_SHA1_96
#define OP_PCL_IPSEC_AES_XCBC_MAC_96
#define OP_PCL_IPSEC_HMAC_MD5_128
#define OP_PCL_IPSEC_HMAC_SHA1_160
#define OP_PCL_IPSEC_HMAC_SHA2_256_128
#define OP_PCL_IPSEC_HMAC_SHA2_384_192
#define OP_PCL_IPSEC_HMAC_SHA2_512_256

/* For SRTP - OP_PCLID_SRTP */
#define OP_PCL_SRTP_CIPHER_MASK
#define OP_PCL_SRTP_AUTH_MASK

#define OP_PCL_SRTP_AES_CTR

#define OP_PCL_SRTP_HMAC_SHA1_160

/* For SSL 3.0 - OP_PCLID_SSL30 */
#define OP_PCL_SSL30_AES_128_CBC_SHA
#define OP_PCL_SSL30_AES_128_CBC_SHA_2
#define OP_PCL_SSL30_AES_128_CBC_SHA_3
#define OP_PCL_SSL30_AES_128_CBC_SHA_4
#define OP_PCL_SSL30_AES_128_CBC_SHA_5
#define OP_PCL_SSL30_AES_128_CBC_SHA_6
#define OP_PCL_SSL30_AES_128_CBC_SHA_7
#define OP_PCL_SSL30_AES_128_CBC_SHA_8
#define OP_PCL_SSL30_AES_128_CBC_SHA_9
#define OP_PCL_SSL30_AES_128_CBC_SHA_10
#define OP_PCL_SSL30_AES_128_CBC_SHA_11
#define OP_PCL_SSL30_AES_128_CBC_SHA_12
#define OP_PCL_SSL30_AES_128_CBC_SHA_13
#define OP_PCL_SSL30_AES_128_CBC_SHA_14
#define OP_PCL_SSL30_AES_128_CBC_SHA_15
#define OP_PCL_SSL30_AES_128_CBC_SHA_16
#define OP_PCL_SSL30_AES_128_CBC_SHA_17

#define OP_PCL_SSL30_AES_256_CBC_SHA
#define OP_PCL_SSL30_AES_256_CBC_SHA_2
#define OP_PCL_SSL30_AES_256_CBC_SHA_3
#define OP_PCL_SSL30_AES_256_CBC_SHA_4
#define OP_PCL_SSL30_AES_256_CBC_SHA_5
#define OP_PCL_SSL30_AES_256_CBC_SHA_6
#define OP_PCL_SSL30_AES_256_CBC_SHA_7
#define OP_PCL_SSL30_AES_256_CBC_SHA_8
#define OP_PCL_SSL30_AES_256_CBC_SHA_9
#define OP_PCL_SSL30_AES_256_CBC_SHA_10
#define OP_PCL_SSL30_AES_256_CBC_SHA_11
#define OP_PCL_SSL30_AES_256_CBC_SHA_12
#define OP_PCL_SSL30_AES_256_CBC_SHA_13
#define OP_PCL_SSL30_AES_256_CBC_SHA_14
#define OP_PCL_SSL30_AES_256_CBC_SHA_15
#define OP_PCL_SSL30_AES_256_CBC_SHA_16
#define OP_PCL_SSL30_AES_256_CBC_SHA_17

#define OP_PCL_SSL30_3DES_EDE_CBC_MD5

#define OP_PCL_SSL30_3DES_EDE_CBC_SHA
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_2
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_3
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_4
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_5
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_6
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_7
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_8
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_9
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_10
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_11
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_12
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_13
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_14
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_15
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_16
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_17
#define OP_PCL_SSL30_3DES_EDE_CBC_SHA_18

#define OP_PCL_SSL30_DES40_CBC_MD5

#define OP_PCL_SSL30_DES_CBC_MD5

#define OP_PCL_SSL30_DES40_CBC_SHA
#define OP_PCL_SSL30_DES40_CBC_SHA_2
#define OP_PCL_SSL30_DES40_CBC_SHA_3
#define OP_PCL_SSL30_DES40_CBC_SHA_4
#define OP_PCL_SSL30_DES40_CBC_SHA_5
#define OP_PCL_SSL30_DES40_CBC_SHA_6
#define OP_PCL_SSL30_DES40_CBC_SHA_7

#define OP_PCL_SSL30_DES_CBC_SHA
#define OP_PCL_SSL30_DES_CBC_SHA_2
#define OP_PCL_SSL30_DES_CBC_SHA_3
#define OP_PCL_SSL30_DES_CBC_SHA_4
#define OP_PCL_SSL30_DES_CBC_SHA_5
#define OP_PCL_SSL30_DES_CBC_SHA_6
#define OP_PCL_SSL30_DES_CBC_SHA_7

#define OP_PCL_SSL30_RC4_128_MD5
#define OP_PCL_SSL30_RC4_128_MD5_2
#define OP_PCL_SSL30_RC4_128_MD5_3

#define OP_PCL_SSL30_RC4_40_MD5
#define OP_PCL_SSL30_RC4_40_MD5_2
#define OP_PCL_SSL30_RC4_40_MD5_3

#define OP_PCL_SSL30_RC4_128_SHA
#define OP_PCL_SSL30_RC4_128_SHA_2
#define OP_PCL_SSL30_RC4_128_SHA_3
#define OP_PCL_SSL30_RC4_128_SHA_4
#define OP_PCL_SSL30_RC4_128_SHA_5
#define OP_PCL_SSL30_RC4_128_SHA_6
#define OP_PCL_SSL30_RC4_128_SHA_7
#define OP_PCL_SSL30_RC4_128_SHA_8
#define OP_PCL_SSL30_RC4_128_SHA_9
#define OP_PCL_SSL30_RC4_128_SHA_10

#define OP_PCL_SSL30_RC4_40_SHA


/* For TLS 1.0 - OP_PCLID_TLS10 */
#define OP_PCL_TLS10_AES_128_CBC_SHA
#define OP_PCL_TLS10_AES_128_CBC_SHA_2
#define OP_PCL_TLS10_AES_128_CBC_SHA_3
#define OP_PCL_TLS10_AES_128_CBC_SHA_4
#define OP_PCL_TLS10_AES_128_CBC_SHA_5
#define OP_PCL_TLS10_AES_128_CBC_SHA_6
#define OP_PCL_TLS10_AES_128_CBC_SHA_7
#define OP_PCL_TLS10_AES_128_CBC_SHA_8
#define OP_PCL_TLS10_AES_128_CBC_SHA_9
#define OP_PCL_TLS10_AES_128_CBC_SHA_10
#define OP_PCL_TLS10_AES_128_CBC_SHA_11
#define OP_PCL_TLS10_AES_128_CBC_SHA_12
#define OP_PCL_TLS10_AES_128_CBC_SHA_13
#define OP_PCL_TLS10_AES_128_CBC_SHA_14
#define OP_PCL_TLS10_AES_128_CBC_SHA_15
#define OP_PCL_TLS10_AES_128_CBC_SHA_16
#define OP_PCL_TLS10_AES_128_CBC_SHA_17

#define OP_PCL_TLS10_AES_256_CBC_SHA
#define OP_PCL_TLS10_AES_256_CBC_SHA_2
#define OP_PCL_TLS10_AES_256_CBC_SHA_3
#define OP_PCL_TLS10_AES_256_CBC_SHA_4
#define OP_PCL_TLS10_AES_256_CBC_SHA_5
#define OP_PCL_TLS10_AES_256_CBC_SHA_6
#define OP_PCL_TLS10_AES_256_CBC_SHA_7
#define OP_PCL_TLS10_AES_256_CBC_SHA_8
#define OP_PCL_TLS10_AES_256_CBC_SHA_9
#define OP_PCL_TLS10_AES_256_CBC_SHA_10
#define OP_PCL_TLS10_AES_256_CBC_SHA_11
#define OP_PCL_TLS10_AES_256_CBC_SHA_12
#define OP_PCL_TLS10_AES_256_CBC_SHA_13
#define OP_PCL_TLS10_AES_256_CBC_SHA_14
#define OP_PCL_TLS10_AES_256_CBC_SHA_15
#define OP_PCL_TLS10_AES_256_CBC_SHA_16
#define OP_PCL_TLS10_AES_256_CBC_SHA_17

/* #define OP_PCL_TLS10_3DES_EDE_CBC_MD5	0x0023 */

#define OP_PCL_TLS10_3DES_EDE_CBC_SHA
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_2
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_3
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_4
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_5
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_6
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_7
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_8
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_9
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_10
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_11
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_12
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_13
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_14
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_15
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_16
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_17
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA_18

#define OP_PCL_TLS10_DES40_CBC_MD5

#define OP_PCL_TLS10_DES_CBC_MD5

#define OP_PCL_TLS10_DES40_CBC_SHA
#define OP_PCL_TLS10_DES40_CBC_SHA_2
#define OP_PCL_TLS10_DES40_CBC_SHA_3
#define OP_PCL_TLS10_DES40_CBC_SHA_4
#define OP_PCL_TLS10_DES40_CBC_SHA_5
#define OP_PCL_TLS10_DES40_CBC_SHA_6
#define OP_PCL_TLS10_DES40_CBC_SHA_7


#define OP_PCL_TLS10_DES_CBC_SHA
#define OP_PCL_TLS10_DES_CBC_SHA_2
#define OP_PCL_TLS10_DES_CBC_SHA_3
#define OP_PCL_TLS10_DES_CBC_SHA_4
#define OP_PCL_TLS10_DES_CBC_SHA_5
#define OP_PCL_TLS10_DES_CBC_SHA_6
#define OP_PCL_TLS10_DES_CBC_SHA_7

#define OP_PCL_TLS10_RC4_128_MD5
#define OP_PCL_TLS10_RC4_128_MD5_2
#define OP_PCL_TLS10_RC4_128_MD5_3

#define OP_PCL_TLS10_RC4_40_MD5
#define OP_PCL_TLS10_RC4_40_MD5_2
#define OP_PCL_TLS10_RC4_40_MD5_3

#define OP_PCL_TLS10_RC4_128_SHA
#define OP_PCL_TLS10_RC4_128_SHA_2
#define OP_PCL_TLS10_RC4_128_SHA_3
#define OP_PCL_TLS10_RC4_128_SHA_4
#define OP_PCL_TLS10_RC4_128_SHA_5
#define OP_PCL_TLS10_RC4_128_SHA_6
#define OP_PCL_TLS10_RC4_128_SHA_7
#define OP_PCL_TLS10_RC4_128_SHA_8
#define OP_PCL_TLS10_RC4_128_SHA_9
#define OP_PCL_TLS10_RC4_128_SHA_10

#define OP_PCL_TLS10_RC4_40_SHA

#define OP_PCL_TLS10_3DES_EDE_CBC_MD5
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA160
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA224
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA256
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA384
#define OP_PCL_TLS10_3DES_EDE_CBC_SHA512
#define OP_PCL_TLS10_AES_128_CBC_SHA160
#define OP_PCL_TLS10_AES_128_CBC_SHA224
#define OP_PCL_TLS10_AES_128_CBC_SHA256
#define OP_PCL_TLS10_AES_128_CBC_SHA384
#define OP_PCL_TLS10_AES_128_CBC_SHA512
#define OP_PCL_TLS10_AES_192_CBC_SHA160
#define OP_PCL_TLS10_AES_192_CBC_SHA224
#define OP_PCL_TLS10_AES_192_CBC_SHA256
#define OP_PCL_TLS10_AES_192_CBC_SHA384
#define OP_PCL_TLS10_AES_192_CBC_SHA512
#define OP_PCL_TLS10_AES_256_CBC_SHA160
#define OP_PCL_TLS10_AES_256_CBC_SHA224
#define OP_PCL_TLS10_AES_256_CBC_SHA256
#define OP_PCL_TLS10_AES_256_CBC_SHA384
#define OP_PCL_TLS10_AES_256_CBC_SHA512



/* For TLS 1.1 - OP_PCLID_TLS11 */
#define OP_PCL_TLS11_AES_128_CBC_SHA
#define OP_PCL_TLS11_AES_128_CBC_SHA_2
#define OP_PCL_TLS11_AES_128_CBC_SHA_3
#define OP_PCL_TLS11_AES_128_CBC_SHA_4
#define OP_PCL_TLS11_AES_128_CBC_SHA_5
#define OP_PCL_TLS11_AES_128_CBC_SHA_6
#define OP_PCL_TLS11_AES_128_CBC_SHA_7
#define OP_PCL_TLS11_AES_128_CBC_SHA_8
#define OP_PCL_TLS11_AES_128_CBC_SHA_9
#define OP_PCL_TLS11_AES_128_CBC_SHA_10
#define OP_PCL_TLS11_AES_128_CBC_SHA_11
#define OP_PCL_TLS11_AES_128_CBC_SHA_12
#define OP_PCL_TLS11_AES_128_CBC_SHA_13
#define OP_PCL_TLS11_AES_128_CBC_SHA_14
#define OP_PCL_TLS11_AES_128_CBC_SHA_15
#define OP_PCL_TLS11_AES_128_CBC_SHA_16
#define OP_PCL_TLS11_AES_128_CBC_SHA_17

#define OP_PCL_TLS11_AES_256_CBC_SHA
#define OP_PCL_TLS11_AES_256_CBC_SHA_2
#define OP_PCL_TLS11_AES_256_CBC_SHA_3
#define OP_PCL_TLS11_AES_256_CBC_SHA_4
#define OP_PCL_TLS11_AES_256_CBC_SHA_5
#define OP_PCL_TLS11_AES_256_CBC_SHA_6
#define OP_PCL_TLS11_AES_256_CBC_SHA_7
#define OP_PCL_TLS11_AES_256_CBC_SHA_8
#define OP_PCL_TLS11_AES_256_CBC_SHA_9
#define OP_PCL_TLS11_AES_256_CBC_SHA_10
#define OP_PCL_TLS11_AES_256_CBC_SHA_11
#define OP_PCL_TLS11_AES_256_CBC_SHA_12
#define OP_PCL_TLS11_AES_256_CBC_SHA_13
#define OP_PCL_TLS11_AES_256_CBC_SHA_14
#define OP_PCL_TLS11_AES_256_CBC_SHA_15
#define OP_PCL_TLS11_AES_256_CBC_SHA_16
#define OP_PCL_TLS11_AES_256_CBC_SHA_17

/* #define OP_PCL_TLS11_3DES_EDE_CBC_MD5	0x0023 */

#define OP_PCL_TLS11_3DES_EDE_CBC_SHA
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_2
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_3
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_4
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_5
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_6
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_7
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_8
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_9
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_10
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_11
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_12
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_13
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_14
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_15
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_16
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_17
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA_18

#define OP_PCL_TLS11_DES40_CBC_MD5

#define OP_PCL_TLS11_DES_CBC_MD5

#define OP_PCL_TLS11_DES40_CBC_SHA
#define OP_PCL_TLS11_DES40_CBC_SHA_2
#define OP_PCL_TLS11_DES40_CBC_SHA_3
#define OP_PCL_TLS11_DES40_CBC_SHA_4
#define OP_PCL_TLS11_DES40_CBC_SHA_5
#define OP_PCL_TLS11_DES40_CBC_SHA_6
#define OP_PCL_TLS11_DES40_CBC_SHA_7

#define OP_PCL_TLS11_DES_CBC_SHA
#define OP_PCL_TLS11_DES_CBC_SHA_2
#define OP_PCL_TLS11_DES_CBC_SHA_3
#define OP_PCL_TLS11_DES_CBC_SHA_4
#define OP_PCL_TLS11_DES_CBC_SHA_5
#define OP_PCL_TLS11_DES_CBC_SHA_6
#define OP_PCL_TLS11_DES_CBC_SHA_7

#define OP_PCL_TLS11_RC4_128_MD5
#define OP_PCL_TLS11_RC4_128_MD5_2
#define OP_PCL_TLS11_RC4_128_MD5_3

#define OP_PCL_TLS11_RC4_40_MD5
#define OP_PCL_TLS11_RC4_40_MD5_2
#define OP_PCL_TLS11_RC4_40_MD5_3

#define OP_PCL_TLS11_RC4_128_SHA
#define OP_PCL_TLS11_RC4_128_SHA_2
#define OP_PCL_TLS11_RC4_128_SHA_3
#define OP_PCL_TLS11_RC4_128_SHA_4
#define OP_PCL_TLS11_RC4_128_SHA_5
#define OP_PCL_TLS11_RC4_128_SHA_6
#define OP_PCL_TLS11_RC4_128_SHA_7
#define OP_PCL_TLS11_RC4_128_SHA_8
#define OP_PCL_TLS11_RC4_128_SHA_9
#define OP_PCL_TLS11_RC4_128_SHA_10

#define OP_PCL_TLS11_RC4_40_SHA

#define OP_PCL_TLS11_3DES_EDE_CBC_MD5
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA160
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA224
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA256
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA384
#define OP_PCL_TLS11_3DES_EDE_CBC_SHA512
#define OP_PCL_TLS11_AES_128_CBC_SHA160
#define OP_PCL_TLS11_AES_128_CBC_SHA224
#define OP_PCL_TLS11_AES_128_CBC_SHA256
#define OP_PCL_TLS11_AES_128_CBC_SHA384
#define OP_PCL_TLS11_AES_128_CBC_SHA512
#define OP_PCL_TLS11_AES_192_CBC_SHA160
#define OP_PCL_TLS11_AES_192_CBC_SHA224
#define OP_PCL_TLS11_AES_192_CBC_SHA256
#define OP_PCL_TLS11_AES_192_CBC_SHA384
#define OP_PCL_TLS11_AES_192_CBC_SHA512
#define OP_PCL_TLS11_AES_256_CBC_SHA160
#define OP_PCL_TLS11_AES_256_CBC_SHA224
#define OP_PCL_TLS11_AES_256_CBC_SHA256
#define OP_PCL_TLS11_AES_256_CBC_SHA384
#define OP_PCL_TLS11_AES_256_CBC_SHA512


/* For TLS 1.2 - OP_PCLID_TLS12 */
#define OP_PCL_TLS12_AES_128_CBC_SHA
#define OP_PCL_TLS12_AES_128_CBC_SHA_2
#define OP_PCL_TLS12_AES_128_CBC_SHA_3
#define OP_PCL_TLS12_AES_128_CBC_SHA_4
#define OP_PCL_TLS12_AES_128_CBC_SHA_5
#define OP_PCL_TLS12_AES_128_CBC_SHA_6
#define OP_PCL_TLS12_AES_128_CBC_SHA_7
#define OP_PCL_TLS12_AES_128_CBC_SHA_8
#define OP_PCL_TLS12_AES_128_CBC_SHA_9
#define OP_PCL_TLS12_AES_128_CBC_SHA_10
#define OP_PCL_TLS12_AES_128_CBC_SHA_11
#define OP_PCL_TLS12_AES_128_CBC_SHA_12
#define OP_PCL_TLS12_AES_128_CBC_SHA_13
#define OP_PCL_TLS12_AES_128_CBC_SHA_14
#define OP_PCL_TLS12_AES_128_CBC_SHA_15
#define OP_PCL_TLS12_AES_128_CBC_SHA_16
#define OP_PCL_TLS12_AES_128_CBC_SHA_17

#define OP_PCL_TLS12_AES_256_CBC_SHA
#define OP_PCL_TLS12_AES_256_CBC_SHA_2
#define OP_PCL_TLS12_AES_256_CBC_SHA_3
#define OP_PCL_TLS12_AES_256_CBC_SHA_4
#define OP_PCL_TLS12_AES_256_CBC_SHA_5
#define OP_PCL_TLS12_AES_256_CBC_SHA_6
#define OP_PCL_TLS12_AES_256_CBC_SHA_7
#define OP_PCL_TLS12_AES_256_CBC_SHA_8
#define OP_PCL_TLS12_AES_256_CBC_SHA_9
#define OP_PCL_TLS12_AES_256_CBC_SHA_10
#define OP_PCL_TLS12_AES_256_CBC_SHA_11
#define OP_PCL_TLS12_AES_256_CBC_SHA_12
#define OP_PCL_TLS12_AES_256_CBC_SHA_13
#define OP_PCL_TLS12_AES_256_CBC_SHA_14
#define OP_PCL_TLS12_AES_256_CBC_SHA_15
#define OP_PCL_TLS12_AES_256_CBC_SHA_16
#define OP_PCL_TLS12_AES_256_CBC_SHA_17

/* #define OP_PCL_TLS12_3DES_EDE_CBC_MD5	0x0023 */

#define OP_PCL_TLS12_3DES_EDE_CBC_SHA
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_2
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_3
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_4
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_5
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_6
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_7
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_8
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_9
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_10
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_11
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_12
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_13
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_14
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_15
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_16
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_17
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA_18

#define OP_PCL_TLS12_DES40_CBC_MD5

#define OP_PCL_TLS12_DES_CBC_MD5

#define OP_PCL_TLS12_DES40_CBC_SHA
#define OP_PCL_TLS12_DES40_CBC_SHA_2
#define OP_PCL_TLS12_DES40_CBC_SHA_3
#define OP_PCL_TLS12_DES40_CBC_SHA_4
#define OP_PCL_TLS12_DES40_CBC_SHA_5
#define OP_PCL_TLS12_DES40_CBC_SHA_6
#define OP_PCL_TLS12_DES40_CBC_SHA_7

#define OP_PCL_TLS12_DES_CBC_SHA
#define OP_PCL_TLS12_DES_CBC_SHA_2
#define OP_PCL_TLS12_DES_CBC_SHA_3
#define OP_PCL_TLS12_DES_CBC_SHA_4
#define OP_PCL_TLS12_DES_CBC_SHA_5
#define OP_PCL_TLS12_DES_CBC_SHA_6
#define OP_PCL_TLS12_DES_CBC_SHA_7

#define OP_PCL_TLS12_RC4_128_MD5
#define OP_PCL_TLS12_RC4_128_MD5_2
#define OP_PCL_TLS12_RC4_128_MD5_3

#define OP_PCL_TLS12_RC4_40_MD5
#define OP_PCL_TLS12_RC4_40_MD5_2
#define OP_PCL_TLS12_RC4_40_MD5_3

#define OP_PCL_TLS12_RC4_128_SHA
#define OP_PCL_TLS12_RC4_128_SHA_2
#define OP_PCL_TLS12_RC4_128_SHA_3
#define OP_PCL_TLS12_RC4_128_SHA_4
#define OP_PCL_TLS12_RC4_128_SHA_5
#define OP_PCL_TLS12_RC4_128_SHA_6
#define OP_PCL_TLS12_RC4_128_SHA_7
#define OP_PCL_TLS12_RC4_128_SHA_8
#define OP_PCL_TLS12_RC4_128_SHA_9
#define OP_PCL_TLS12_RC4_128_SHA_10

#define OP_PCL_TLS12_RC4_40_SHA

/* #define OP_PCL_TLS12_AES_128_CBC_SHA256	0x003c */
#define OP_PCL_TLS12_AES_128_CBC_SHA256_2
#define OP_PCL_TLS12_AES_128_CBC_SHA256_3
#define OP_PCL_TLS12_AES_128_CBC_SHA256_4
#define OP_PCL_TLS12_AES_128_CBC_SHA256_5
#define OP_PCL_TLS12_AES_128_CBC_SHA256_6

/* #define OP_PCL_TLS12_AES_256_CBC_SHA256	0x003d */
#define OP_PCL_TLS12_AES_256_CBC_SHA256_2
#define OP_PCL_TLS12_AES_256_CBC_SHA256_3
#define OP_PCL_TLS12_AES_256_CBC_SHA256_4
#define OP_PCL_TLS12_AES_256_CBC_SHA256_5
#define OP_PCL_TLS12_AES_256_CBC_SHA256_6

/* AEAD_AES_xxx_CCM/GCM remain to be defined... */

#define OP_PCL_TLS12_3DES_EDE_CBC_MD5
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA160
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA224
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA256
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA384
#define OP_PCL_TLS12_3DES_EDE_CBC_SHA512
#define OP_PCL_TLS12_AES_128_CBC_SHA160
#define OP_PCL_TLS12_AES_128_CBC_SHA224
#define OP_PCL_TLS12_AES_128_CBC_SHA256
#define OP_PCL_TLS12_AES_128_CBC_SHA384
#define OP_PCL_TLS12_AES_128_CBC_SHA512
#define OP_PCL_TLS12_AES_192_CBC_SHA160
#define OP_PCL_TLS12_AES_192_CBC_SHA224
#define OP_PCL_TLS12_AES_192_CBC_SHA256
#define OP_PCL_TLS12_AES_192_CBC_SHA384
#define OP_PCL_TLS12_AES_192_CBC_SHA512
#define OP_PCL_TLS12_AES_256_CBC_SHA160
#define OP_PCL_TLS12_AES_256_CBC_SHA224
#define OP_PCL_TLS12_AES_256_CBC_SHA256
#define OP_PCL_TLS12_AES_256_CBC_SHA384
#define OP_PCL_TLS12_AES_256_CBC_SHA512

/* For DTLS - OP_PCLID_DTLS */

#define OP_PCL_DTLS_AES_128_CBC_SHA
#define OP_PCL_DTLS_AES_128_CBC_SHA_2
#define OP_PCL_DTLS_AES_128_CBC_SHA_3
#define OP_PCL_DTLS_AES_128_CBC_SHA_4
#define OP_PCL_DTLS_AES_128_CBC_SHA_5
#define OP_PCL_DTLS_AES_128_CBC_SHA_6
#define OP_PCL_DTLS_AES_128_CBC_SHA_7
#define OP_PCL_DTLS_AES_128_CBC_SHA_8
#define OP_PCL_DTLS_AES_128_CBC_SHA_9
#define OP_PCL_DTLS_AES_128_CBC_SHA_10
#define OP_PCL_DTLS_AES_128_CBC_SHA_11
#define OP_PCL_DTLS_AES_128_CBC_SHA_12
#define OP_PCL_DTLS_AES_128_CBC_SHA_13
#define OP_PCL_DTLS_AES_128_CBC_SHA_14
#define OP_PCL_DTLS_AES_128_CBC_SHA_15
#define OP_PCL_DTLS_AES_128_CBC_SHA_16
#define OP_PCL_DTLS_AES_128_CBC_SHA_17

#define OP_PCL_DTLS_AES_256_CBC_SHA
#define OP_PCL_DTLS_AES_256_CBC_SHA_2
#define OP_PCL_DTLS_AES_256_CBC_SHA_3
#define OP_PCL_DTLS_AES_256_CBC_SHA_4
#define OP_PCL_DTLS_AES_256_CBC_SHA_5
#define OP_PCL_DTLS_AES_256_CBC_SHA_6
#define OP_PCL_DTLS_AES_256_CBC_SHA_7
#define OP_PCL_DTLS_AES_256_CBC_SHA_8
#define OP_PCL_DTLS_AES_256_CBC_SHA_9
#define OP_PCL_DTLS_AES_256_CBC_SHA_10
#define OP_PCL_DTLS_AES_256_CBC_SHA_11
#define OP_PCL_DTLS_AES_256_CBC_SHA_12
#define OP_PCL_DTLS_AES_256_CBC_SHA_13
#define OP_PCL_DTLS_AES_256_CBC_SHA_14
#define OP_PCL_DTLS_AES_256_CBC_SHA_15
#define OP_PCL_DTLS_AES_256_CBC_SHA_16
#define OP_PCL_DTLS_AES_256_CBC_SHA_17

/* #define OP_PCL_DTLS_3DES_EDE_CBC_MD5		0x0023 */

#define OP_PCL_DTLS_3DES_EDE_CBC_SHA
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_2
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_3
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_4
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_5
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_6
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_7
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_8
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_9
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_10
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_11
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_12
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_13
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_14
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_15
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_16
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_17
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA_18

#define OP_PCL_DTLS_DES40_CBC_MD5

#define OP_PCL_DTLS_DES_CBC_MD5

#define OP_PCL_DTLS_DES40_CBC_SHA
#define OP_PCL_DTLS_DES40_CBC_SHA_2
#define OP_PCL_DTLS_DES40_CBC_SHA_3
#define OP_PCL_DTLS_DES40_CBC_SHA_4
#define OP_PCL_DTLS_DES40_CBC_SHA_5
#define OP_PCL_DTLS_DES40_CBC_SHA_6
#define OP_PCL_DTLS_DES40_CBC_SHA_7


#define OP_PCL_DTLS_DES_CBC_SHA
#define OP_PCL_DTLS_DES_CBC_SHA_2
#define OP_PCL_DTLS_DES_CBC_SHA_3
#define OP_PCL_DTLS_DES_CBC_SHA_4
#define OP_PCL_DTLS_DES_CBC_SHA_5
#define OP_PCL_DTLS_DES_CBC_SHA_6
#define OP_PCL_DTLS_DES_CBC_SHA_7


#define OP_PCL_DTLS_3DES_EDE_CBC_MD5
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA160
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA224
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA256
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA384
#define OP_PCL_DTLS_3DES_EDE_CBC_SHA512
#define OP_PCL_DTLS_AES_128_CBC_SHA160
#define OP_PCL_DTLS_AES_128_CBC_SHA224
#define OP_PCL_DTLS_AES_128_CBC_SHA256
#define OP_PCL_DTLS_AES_128_CBC_SHA384
#define OP_PCL_DTLS_AES_128_CBC_SHA512
#define OP_PCL_DTLS_AES_192_CBC_SHA160
#define OP_PCL_DTLS_AES_192_CBC_SHA224
#define OP_PCL_DTLS_AES_192_CBC_SHA256
#define OP_PCL_DTLS_AES_192_CBC_SHA384
#define OP_PCL_DTLS_AES_192_CBC_SHA512
#define OP_PCL_DTLS_AES_256_CBC_SHA160
#define OP_PCL_DTLS_AES_256_CBC_SHA224
#define OP_PCL_DTLS_AES_256_CBC_SHA256
#define OP_PCL_DTLS_AES_256_CBC_SHA384
#define OP_PCL_DTLS_AES_256_CBC_SHA512

/* 802.16 WiMAX protinfos */
#define OP_PCL_WIMAX_OFDM
#define OP_PCL_WIMAX_OFDMA

/* 802.11 WiFi protinfos */
#define OP_PCL_WIFI

/* MacSec protinfos */
#define OP_PCL_MACSEC

/* Derived Key Protocol (DKP) Protinfo */
#define OP_PCL_DKP_SRC_SHIFT
#define OP_PCL_DKP_SRC_MASK
#define OP_PCL_DKP_SRC_IMM
#define OP_PCL_DKP_SRC_SEQ
#define OP_PCL_DKP_SRC_PTR
#define OP_PCL_DKP_SRC_SGF
#define OP_PCL_DKP_DST_SHIFT
#define OP_PCL_DKP_DST_MASK
#define OP_PCL_DKP_DST_IMM
#define OP_PCL_DKP_DST_SEQ
#define OP_PCL_DKP_DST_PTR
#define OP_PCL_DKP_DST_SGF
#define OP_PCL_DKP_KEY_SHIFT
#define OP_PCL_DKP_KEY_MASK

/* PKI unidirectional protocol protinfo bits */
#define OP_PCL_PKPROT_TEST
#define OP_PCL_PKPROT_DECRYPT
#define OP_PCL_PKPROT_ECC
#define OP_PCL_PKPROT_F2M

/* For non-protocol/alg-only op commands */
#define OP_ALG_TYPE_SHIFT
#define OP_ALG_TYPE_MASK
#define OP_ALG_TYPE_CLASS1
#define OP_ALG_TYPE_CLASS2

/* version register fields */
#define OP_VER_CCHA_NUM
#define OP_VER_CCHA_MISC
#define OP_VER_CCHA_REV
#define OP_VER_CCHA_VID

#define OP_ALG_ALGSEL_SHIFT
#define OP_ALG_ALGSEL_MASK
#define OP_ALG_ALGSEL_SUBMASK
#define OP_ALG_ALGSEL_AES
#define OP_ALG_ALGSEL_DES
#define OP_ALG_ALGSEL_3DES
#define OP_ALG_ALGSEL_ARC4
#define OP_ALG_CHA_MDHA
#define OP_ALG_ALGSEL_MD5
#define OP_ALG_ALGSEL_SHA1
#define OP_ALG_ALGSEL_SHA224
#define OP_ALG_ALGSEL_SHA256
#define OP_ALG_ALGSEL_SHA384
#define OP_ALG_ALGSEL_SHA512
#define OP_ALG_ALGSEL_RNG
#define OP_ALG_ALGSEL_SNOW
#define OP_ALG_ALGSEL_SNOW_F8
#define OP_ALG_ALGSEL_KASUMI
#define OP_ALG_ALGSEL_CRC
#define OP_ALG_ALGSEL_SNOW_F9
#define OP_ALG_ALGSEL_CHACHA20
#define OP_ALG_ALGSEL_POLY1305

#define OP_ALG_AAI_SHIFT
#define OP_ALG_AAI_MASK

/* blockcipher AAI set */
#define OP_ALG_AAI_CTR_MOD128
#define OP_ALG_AAI_CTR_MOD8
#define OP_ALG_AAI_CTR_MOD16
#define OP_ALG_AAI_CTR_MOD24
#define OP_ALG_AAI_CTR_MOD32
#define OP_ALG_AAI_CTR_MOD40
#define OP_ALG_AAI_CTR_MOD48
#define OP_ALG_AAI_CTR_MOD56
#define OP_ALG_AAI_CTR_MOD64
#define OP_ALG_AAI_CTR_MOD72
#define OP_ALG_AAI_CTR_MOD80
#define OP_ALG_AAI_CTR_MOD88
#define OP_ALG_AAI_CTR_MOD96
#define OP_ALG_AAI_CTR_MOD104
#define OP_ALG_AAI_CTR_MOD112
#define OP_ALG_AAI_CTR_MOD120
#define OP_ALG_AAI_CBC
#define OP_ALG_AAI_ECB
#define OP_ALG_AAI_CFB
#define OP_ALG_AAI_OFB
#define OP_ALG_AAI_XTS
#define OP_ALG_AAI_CMAC
#define OP_ALG_AAI_XCBC_MAC
#define OP_ALG_AAI_CCM
#define OP_ALG_AAI_GCM
#define OP_ALG_AAI_CBC_XCBCMAC
#define OP_ALG_AAI_CTR_XCBCMAC
#define OP_ALG_AAI_CHECKODD
#define OP_ALG_AAI_DK

/* randomizer AAI set */
#define OP_ALG_AAI_RNG
#define OP_ALG_AAI_RNG_NZB
#define OP_ALG_AAI_RNG_OBP

/* RNG4 AAI set */
#define OP_ALG_AAI_RNG4_SH_0
#define OP_ALG_AAI_RNG4_SH_1
#define OP_ALG_AAI_RNG4_PS
#define OP_ALG_AAI_RNG4_AI
#define OP_ALG_AAI_RNG4_SK

/* Chacha20 AAI set */
#define OP_ALG_AAI_AEAD
#define OP_ALG_AAI_KEYSTREAM
#define OP_ALG_AAI_BC8

/* hmac/smac AAI set */
#define OP_ALG_AAI_HASH
#define OP_ALG_AAI_HMAC
#define OP_ALG_AAI_SMAC
#define OP_ALG_AAI_HMAC_PRECOMP

/* CRC AAI set*/
#define OP_ALG_AAI_802
#define OP_ALG_AAI_3385
#define OP_ALG_AAI_CUST_POLY
#define OP_ALG_AAI_DIS
#define OP_ALG_AAI_DOS
#define OP_ALG_AAI_DOC

/* Kasumi/SNOW AAI set */
#define OP_ALG_AAI_F8
#define OP_ALG_AAI_F9
#define OP_ALG_AAI_GSM
#define OP_ALG_AAI_EDGE

#define OP_ALG_AS_SHIFT
#define OP_ALG_AS_MASK
#define OP_ALG_AS_UPDATE
#define OP_ALG_AS_INIT
#define OP_ALG_AS_FINALIZE
#define OP_ALG_AS_INITFINAL

#define OP_ALG_ICV_SHIFT
#define OP_ALG_ICV_MASK
#define OP_ALG_ICV_OFF
#define OP_ALG_ICV_ON

#define OP_ALG_PR_ON

#define OP_ALG_DIR_SHIFT
#define OP_ALG_DIR_MASK
#define OP_ALG_DECRYPT
#define OP_ALG_ENCRYPT

/* PKHA algorithm type set */
#define OP_ALG_PK
#define OP_ALG_PK_FUN_MASK

/* PKHA mode clear memory functions */
#define OP_ALG_PKMODE_A_RAM
#define OP_ALG_PKMODE_B_RAM
#define OP_ALG_PKMODE_E_RAM
#define OP_ALG_PKMODE_N_RAM
#define OP_ALG_PKMODE_CLEARMEM

/* PKHA mode modular-arithmetic functions */
#define OP_ALG_PKMODE_MOD_IN_MONTY
#define OP_ALG_PKMODE_MOD_OUT_MONTY
#define OP_ALG_PKMODE_MOD_F2M
#define OP_ALG_PKMODE_MOD_R2_IN
#define OP_ALG_PKMODE_PRJECTV
#define OP_ALG_PKMODE_TIME_EQ
#define OP_ALG_PKMODE_OUT_B
#define OP_ALG_PKMODE_OUT_A
#define OP_ALG_PKMODE_MOD_ADD
#define OP_ALG_PKMODE_MOD_SUB_AB
#define OP_ALG_PKMODE_MOD_SUB_BA
#define OP_ALG_PKMODE_MOD_MULT
#define OP_ALG_PKMODE_MOD_EXPO
#define OP_ALG_PKMODE_MOD_REDUCT
#define OP_ALG_PKMODE_MOD_INV
#define OP_ALG_PKMODE_MOD_ECC_ADD
#define OP_ALG_PKMODE_MOD_ECC_DBL
#define OP_ALG_PKMODE_MOD_ECC_MULT
#define OP_ALG_PKMODE_MOD_MONT_CNST
#define OP_ALG_PKMODE_MOD_CRT_CNST
#define OP_ALG_PKMODE_MOD_GCD
#define OP_ALG_PKMODE_MOD_PRIMALITY

/* PKHA mode copy-memory functions */
#define OP_ALG_PKMODE_SRC_REG_SHIFT
#define OP_ALG_PKMODE_SRC_REG_MASK
#define OP_ALG_PKMODE_DST_REG_SHIFT
#define OP_ALG_PKMODE_DST_REG_MASK
#define OP_ALG_PKMODE_SRC_SEG_SHIFT
#define OP_ALG_PKMODE_SRC_SEG_MASK
#define OP_ALG_PKMODE_DST_SEG_SHIFT
#define OP_ALG_PKMODE_DST_SEG_MASK

#define OP_ALG_PKMODE_SRC_REG_A
#define OP_ALG_PKMODE_SRC_REG_B
#define OP_ALG_PKMODE_SRC_REG_N
#define OP_ALG_PKMODE_DST_REG_A
#define OP_ALG_PKMODE_DST_REG_B
#define OP_ALG_PKMODE_DST_REG_E
#define OP_ALG_PKMODE_DST_REG_N
#define OP_ALG_PKMODE_SRC_SEG_0
#define OP_ALG_PKMODE_SRC_SEG_1
#define OP_ALG_PKMODE_SRC_SEG_2
#define OP_ALG_PKMODE_SRC_SEG_3
#define OP_ALG_PKMODE_DST_SEG_0
#define OP_ALG_PKMODE_DST_SEG_1
#define OP_ALG_PKMODE_DST_SEG_2
#define OP_ALG_PKMODE_DST_SEG_3
#define OP_ALG_PKMODE_CPYMEM_N_SZ
#define OP_ALG_PKMODE_CPYMEM_SRC_SZ

/*
 * SEQ_IN_PTR Command Constructs
 */

/* Release Buffers */
#define SQIN_RBS

/* Sequence pointer is really a descriptor */
#define SQIN_INL

/* Sequence pointer is a scatter-gather table */
#define SQIN_SGF

/* Appends to a previous pointer */
#define SQIN_PRE

/* Use extended length following pointer */
#define SQIN_EXT

/* Restore sequence with pointer/length */
#define SQIN_RTO

/* Replace job descriptor */
#define SQIN_RJD

#define SQIN_LEN_SHIFT
#define SQIN_LEN_MASK

/*
 * SEQ_OUT_PTR Command Constructs
 */

/* Sequence pointer is a scatter-gather table */
#define SQOUT_SGF

/* Appends to a previous pointer */
#define SQOUT_PRE

/* Restore sequence with pointer/length */
#define SQOUT_RTO

/* Use extended length following pointer */
#define SQOUT_EXT

#define SQOUT_LEN_SHIFT
#define SQOUT_LEN_MASK


/*
 * SIGNATURE Command Constructs
 */

/* TYPE field is all that's relevant */
#define SIGN_TYPE_SHIFT
#define SIGN_TYPE_MASK

#define SIGN_TYPE_FINAL
#define SIGN_TYPE_FINAL_RESTORE
#define SIGN_TYPE_FINAL_NONZERO
#define SIGN_TYPE_IMM_2
#define SIGN_TYPE_IMM_3
#define SIGN_TYPE_IMM_4

/*
 * MOVE Command Constructs
 */

#define MOVE_AUX_SHIFT
#define MOVE_AUX_MASK
#define MOVE_AUX_MS
#define MOVE_AUX_LS

#define MOVE_WAITCOMP_SHIFT
#define MOVE_WAITCOMP_MASK
#define MOVE_WAITCOMP

#define MOVE_SRC_SHIFT
#define MOVE_SRC_MASK
#define MOVE_SRC_CLASS1CTX
#define MOVE_SRC_CLASS2CTX
#define MOVE_SRC_OUTFIFO
#define MOVE_SRC_DESCBUF
#define MOVE_SRC_MATH0
#define MOVE_SRC_MATH1
#define MOVE_SRC_MATH2
#define MOVE_SRC_MATH3
#define MOVE_SRC_INFIFO
#define MOVE_SRC_INFIFO_CL
#define MOVE_SRC_AUX_ABLK

#define MOVE_DEST_SHIFT
#define MOVE_DEST_MASK
#define MOVE_DEST_CLASS1CTX
#define MOVE_DEST_CLASS2CTX
#define MOVE_DEST_OUTFIFO
#define MOVE_DEST_DESCBUF
#define MOVE_DEST_MATH0
#define MOVE_DEST_MATH1
#define MOVE_DEST_MATH2
#define MOVE_DEST_MATH3
#define MOVE_DEST_CLASS1INFIFO
#define MOVE_DEST_CLASS2INFIFO
#define MOVE_DEST_INFIFO_NOINFO
#define MOVE_DEST_PK_A
#define MOVE_DEST_CLASS1KEY
#define MOVE_DEST_CLASS2KEY

#define MOVE_OFFSET_SHIFT
#define MOVE_OFFSET_MASK

#define MOVE_LEN_SHIFT
#define MOVE_LEN_MASK

#define MOVELEN_MRSEL_SHIFT
#define MOVELEN_MRSEL_MASK
#define MOVELEN_MRSEL_MATH0
#define MOVELEN_MRSEL_MATH1
#define MOVELEN_MRSEL_MATH2
#define MOVELEN_MRSEL_MATH3

/*
 * MATH Command Constructs
 */

#define MATH_IFB_SHIFT
#define MATH_IFB_MASK
#define MATH_IFB

#define MATH_NFU_SHIFT
#define MATH_NFU_MASK
#define MATH_NFU

#define MATH_STL_SHIFT
#define MATH_STL_MASK
#define MATH_STL

/* Function selectors */
#define MATH_FUN_SHIFT
#define MATH_FUN_MASK
#define MATH_FUN_ADD
#define MATH_FUN_ADDC
#define MATH_FUN_SUB
#define MATH_FUN_SUBB
#define MATH_FUN_OR
#define MATH_FUN_AND
#define MATH_FUN_XOR
#define MATH_FUN_LSHIFT
#define MATH_FUN_RSHIFT
#define MATH_FUN_SHLD
#define MATH_FUN_ZBYT

/* Source 0 selectors */
#define MATH_SRC0_SHIFT
#define MATH_SRC0_MASK
#define MATH_SRC0_REG0
#define MATH_SRC0_REG1
#define MATH_SRC0_REG2
#define MATH_SRC0_REG3
#define MATH_SRC0_IMM
#define MATH_SRC0_DPOVRD
#define MATH_SRC0_SEQINLEN
#define MATH_SRC0_SEQOUTLEN
#define MATH_SRC0_VARSEQINLEN
#define MATH_SRC0_VARSEQOUTLEN
#define MATH_SRC0_ZERO

/* Source 1 selectors */
#define MATH_SRC1_SHIFT
#define MATH_SRC1_MASK
#define MATH_SRC1_REG0
#define MATH_SRC1_REG1
#define MATH_SRC1_REG2
#define MATH_SRC1_REG3
#define MATH_SRC1_IMM
#define MATH_SRC1_DPOVRD
#define MATH_SRC1_INFIFO
#define MATH_SRC1_OUTFIFO
#define MATH_SRC1_ONE

/* Destination selectors */
#define MATH_DEST_SHIFT
#define MATH_DEST_MASK
#define MATH_DEST_REG0
#define MATH_DEST_REG1
#define MATH_DEST_REG2
#define MATH_DEST_REG3
#define MATH_DEST_DPOVRD
#define MATH_DEST_SEQINLEN
#define MATH_DEST_SEQOUTLEN
#define MATH_DEST_VARSEQINLEN
#define MATH_DEST_VARSEQOUTLEN
#define MATH_DEST_NONE

/* Length selectors */
#define MATH_LEN_SHIFT
#define MATH_LEN_MASK
#define MATH_LEN_1BYTE
#define MATH_LEN_2BYTE
#define MATH_LEN_4BYTE
#define MATH_LEN_8BYTE

/*
 * JUMP Command Constructs
 */

#define JUMP_CLASS_SHIFT
#define JUMP_CLASS_MASK
#define JUMP_CLASS_NONE
#define JUMP_CLASS_CLASS1
#define JUMP_CLASS_CLASS2
#define JUMP_CLASS_BOTH

#define JUMP_JSL_SHIFT
#define JUMP_JSL_MASK
#define JUMP_JSL

#define JUMP_TYPE_SHIFT
#define JUMP_TYPE_LOCAL
#define JUMP_TYPE_NONLOCAL
#define JUMP_TYPE_HALT
#define JUMP_TYPE_HALT_USER

#define JUMP_TEST_SHIFT
#define JUMP_TEST_MASK
#define JUMP_TEST_ALL
#define JUMP_TEST_INVALL
#define JUMP_TEST_ANY
#define JUMP_TEST_INVANY

/* Condition codes. JSL bit is factored in */
#define JUMP_COND_SHIFT
#define JUMP_COND_MASK
#define JUMP_COND_PK_0
#define JUMP_COND_PK_GCD_1
#define JUMP_COND_PK_PRIME
#define JUMP_COND_MATH_N
#define JUMP_COND_MATH_Z
#define JUMP_COND_MATH_C
#define JUMP_COND_MATH_NV

#define JUMP_COND_JRP
#define JUMP_COND_SHRD
#define JUMP_COND_SELF
#define JUMP_COND_CALM
#define JUMP_COND_NIP
#define JUMP_COND_NIFP
#define JUMP_COND_NOP
#define JUMP_COND_NCP

#define JUMP_OFFSET_SHIFT
#define JUMP_OFFSET_MASK

/*
 * NFIFO ENTRY
 * Data Constructs
 *
 */
#define NFIFOENTRY_DEST_SHIFT
#define NFIFOENTRY_DEST_MASK
#define NFIFOENTRY_DEST_DECO
#define NFIFOENTRY_DEST_CLASS1
#define NFIFOENTRY_DEST_CLASS2
#define NFIFOENTRY_DEST_BOTH

#define NFIFOENTRY_LC2_SHIFT
#define NFIFOENTRY_LC2_MASK
#define NFIFOENTRY_LC2

#define NFIFOENTRY_LC1_SHIFT
#define NFIFOENTRY_LC1_MASK
#define NFIFOENTRY_LC1

#define NFIFOENTRY_FC2_SHIFT
#define NFIFOENTRY_FC2_MASK
#define NFIFOENTRY_FC2

#define NFIFOENTRY_FC1_SHIFT
#define NFIFOENTRY_FC1_MASK
#define NFIFOENTRY_FC1

#define NFIFOENTRY_STYPE_SHIFT
#define NFIFOENTRY_STYPE_MASK
#define NFIFOENTRY_STYPE_DFIFO
#define NFIFOENTRY_STYPE_OFIFO
#define NFIFOENTRY_STYPE_PAD
#define NFIFOENTRY_STYPE_SNOOP

#define NFIFOENTRY_DTYPE_SHIFT
#define NFIFOENTRY_DTYPE_MASK

#define NFIFOENTRY_DTYPE_SBOX
#define NFIFOENTRY_DTYPE_AAD
#define NFIFOENTRY_DTYPE_IV
#define NFIFOENTRY_DTYPE_SAD
#define NFIFOENTRY_DTYPE_ICV
#define NFIFOENTRY_DTYPE_POLY
#define NFIFOENTRY_DTYPE_SKIP
#define NFIFOENTRY_DTYPE_MSG

#define NFIFOENTRY_DTYPE_PK_A0
#define NFIFOENTRY_DTYPE_PK_A1
#define NFIFOENTRY_DTYPE_PK_A2
#define NFIFOENTRY_DTYPE_PK_A3
#define NFIFOENTRY_DTYPE_PK_B0
#define NFIFOENTRY_DTYPE_PK_B1
#define NFIFOENTRY_DTYPE_PK_B2
#define NFIFOENTRY_DTYPE_PK_B3
#define NFIFOENTRY_DTYPE_PK_N
#define NFIFOENTRY_DTYPE_PK_E
#define NFIFOENTRY_DTYPE_PK_A
#define NFIFOENTRY_DTYPE_PK_B


#define NFIFOENTRY_BND_SHIFT
#define NFIFOENTRY_BND_MASK
#define NFIFOENTRY_BND

#define NFIFOENTRY_PTYPE_SHIFT
#define NFIFOENTRY_PTYPE_MASK

#define NFIFOENTRY_PTYPE_ZEROS
#define NFIFOENTRY_PTYPE_RND_NOZEROS
#define NFIFOENTRY_PTYPE_INCREMENT
#define NFIFOENTRY_PTYPE_RND
#define NFIFOENTRY_PTYPE_ZEROS_NZ
#define NFIFOENTRY_PTYPE_RND_NZ_LZ
#define NFIFOENTRY_PTYPE_N
#define NFIFOENTRY_PTYPE_RND_NZ_N

#define NFIFOENTRY_OC_SHIFT
#define NFIFOENTRY_OC_MASK
#define NFIFOENTRY_OC

#define NFIFOENTRY_AST_SHIFT
#define NFIFOENTRY_AST_MASK
#define NFIFOENTRY_AST

#define NFIFOENTRY_BM_SHIFT
#define NFIFOENTRY_BM_MASK
#define NFIFOENTRY_BM

#define NFIFOENTRY_PS_SHIFT
#define NFIFOENTRY_PS_MASK
#define NFIFOENTRY_PS

#define NFIFOENTRY_DLEN_SHIFT
#define NFIFOENTRY_DLEN_MASK

#define NFIFOENTRY_PLEN_SHIFT
#define NFIFOENTRY_PLEN_MASK

/* Append Load Immediate Command */
#define FD_CMD_APPEND_LOAD_IMMEDIATE

/* Set SEQ LIODN equal to the Non-SEQ LIODN for the job */
#define FD_CMD_SET_SEQ_LIODN_EQUAL_NONSEQ_LIODN

/* Frame Descriptor Command for Replacement Job Descriptor */
#define FD_CMD_REPLACE_JOB_DESC

#endif /* DESC_H */