加密算法类别

  • 对称加密算法(Symmetric Ciphers):
    AES-CBC
    AES-CTR
    AES-GCM
    AES-XTS
    3DES-CBC
    3DES-CTR
    ChaCha20
  • 哈希算法(Hash Algorithms):
    MD5
    SHA1
    SHA224
    SHA256
    SHA384
    SHA512
  • 消息认证码(MAC Algorithms):
    HMAC-MD5
    HMAC-SHA1
    HMAC-SHA224
    HMAC-SHA256
    HMAC-SHA384
    HMAC-SHA512
    GMAC
  • 公钥加密算法(Asymmetric Ciphers):
    RSA
    DSA
    DH
    ECDH
    ECDSA

rte_crypto_op 是描述加密操作的主要结构。它包含了加密操作的各个方面,如输入数据、输出数据、操作类型等。

struct rte_crypto_op {
    enum rte_crypto_op_type type;     // 操作类型(如对称加密、非对称加密等)
    union {
        struct rte_crypto_sym_op *sym;  // 对称加密操作
        struct rte_crypto_asym_op *asym; // 非对称加密操作
    };
    // 其他字段省略...
};

rte_crypto_sym_op 是对称加密操作的具体结构,包含了对称加密所需的所有信息。

struct rte_crypto_sym_op {
    struct rte_mbuf *m_src;          // 输入数据缓冲区
    struct rte_mbuf *m_dst;          // 输出数据缓冲区
    struct rte_crypto_sym_xform *xform; // 加密转换信息
    struct {
        uint16_t offset;
        uint16_t length;
    } cipher;
    struct {
        uint8_t *data;
    } iv;
    // 其他字段省略...
};

rte_crypto_sym_xform 是对称加密转换的描述结构,定义了加密算法、密钥、IV 等信息。

struct rte_crypto_sym_xform {
    struct rte_crypto_sym_xform *next; // 下一个转换操作(链表)
    enum rte_crypto_sym_xform_type type; // 转换类型(如加密、解密)
    union {
        struct {
            enum rte_crypto_cipher_algorithm algo; // 加密算法
            enum rte_crypto_cipher_operation op;  // 操作类型(加密或解密)
            struct {
                uint8_t *data;
                uint16_t length;
            } key;
            struct {
                uint16_t offset;
            } iv;
        } cipher;
        // 其他字段省略...
    };
};

rte_crypto_asym_op 结构包含了非对称加密操作的所有必要信息。

struct rte_crypto_asym_op {
    enum rte_crypto_asym_op_type type; // 操作类型(如RSA加密、解密等)
    union {
        struct rte_crypto_rsa_op rsa;  // RSA操作
        struct rte_crypto_dh_op dh;    // Diffie-Hellman操作
        struct rte_crypto_dsa_op dsa;  // DSA操作
        struct rte_crypto_ec_op ec;    // 椭圆曲线操作
    };
    struct rte_mbuf *m_src;            // 输入数据缓冲区
    struct rte_mbuf *m_dst;            // 输出数据缓冲区
};

此枚举定义了支持的加密算法。

enum rte_crypto_cipher_algorithm {
    RTE_CRYPTO_CIPHER_NULL,          // 无操作
    RTE_CRYPTO_CIPHER_3DES_CBC,      // 3DES CBC模式
    RTE_CRYPTO_CIPHER_3DES_CTR,      // 3DES CTR模式
    RTE_CRYPTO_CIPHER_AES_CBC,       // AES CBC模式
    RTE_CRYPTO_CIPHER_AES_CTR,       // AES CTR模式
    RTE_CRYPTO_CIPHER_AES_ECB,       // AES ECB模式
    RTE_CRYPTO_CIPHER_AES_F8,        // AES F8模式
    RTE_CRYPTO_CIPHER_AES_XTS,       // AES XTS模式
    RTE_CRYPTO_CIPHER_ARC4,          // ARC4算法
    RTE_CRYPTO_CIPHER_KASUMI_F8,     // KASUMI F8算法
    RTE_CRYPTO_CIPHER_SNOW3G_UEA2,   // SNOW 3G UEA2算法
    RTE_CRYPTO_CIPHER_ZUC_EEA3,      // ZUC EEA3算法
    RTE_CRYPTO_CIPHER_DES_CBC,       // DES CBC模式
    RTE_CRYPTO_CIPHER_DES_DOCSISBPI, // DES DOCSIS BPI模式
    RTE_CRYPTO_CIPHER_AES_DOCSISBPI, // AES DOCSIS BPI模式
    RTE_CRYPTO_CIPHER_NULL_DOCSISBPI,// NULL DOCSIS BPI模式
    RTE_CRYPTO_CIPHER_LIST_END       // 列表结束标志
};

此枚举定义了加密操作的类型(加密或解密)。

enum rte_crypto_cipher_operation {
    RTE_CRYPTO_CIPHER_OP_ENCRYPT, // 加密操作
    RTE_CRYPTO_CIPHER_OP_DECRYPT  // 解密操作
};

此枚举定义了对称加密转换的类型,如加密、解密、散列等。

enum rte_crypto_sym_xform_type {
    RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED, // 未指定
    RTE_CRYPTO_SYM_XFORM_AEAD,          // 认证加密
    RTE_CRYPTO_SYM_XFORM_CIPHER,        // 加密/解密
    RTE_CRYPTO_SYM_XFORM_AUTH,          // 认证
    RTE_CRYPTO_SYM_XFORM_MAC,           // 消息认证码
    RTE_CRYPTO_SYM_XFORM_CHAIN          // 链式转换
};

enum rte_crypto_asym_op_type 枚举定义了支持的非对称加密操作类型。

enum rte_crypto_asym_op_type {
    RTE_CRYPTO_ASYM_OP_TYPE_UNSPECIFIED, // 未指定
    RTE_CRYPTO_ASYM_OP_RSA_ENCRYPT,      // RSA加密
    RTE_CRYPTO_ASYM_OP_RSA_DECRYPT,      // RSA解密
    RTE_CRYPTO_ASYM_OP_RSA_SIGN,         // RSA签名
    RTE_CRYPTO_ASYM_OP_RSA_VERIFY,       // RSA验证
    RTE_CRYPTO_ASYM_OP_DH_GEN_KEY,       // Diffie-Hellman生成密钥
    RTE_CRYPTO_ASYM_OP_DH_COMPUTE_KEY,   // Diffie-Hellman计算密钥
    RTE_CRYPTO_ASYM_OP_DSA_SIGN,         // DSA签名
    RTE_CRYPTO_ASYM_OP_DSA_VERIFY,       // DSA验证
    RTE_CRYPTO_ASYM_OP_ECDSA_SIGN,       // ECDSA签名
    RTE_CRYPTO_ASYM_OP_ECDSA_VERIFY,     // ECDSA验证
    RTE_CRYPTO_ASYM_OP_ECDH_GEN_KEY,     // ECDH生成密钥
    RTE_CRYPTO_ASYM_OP_ECDH_COMPUTE_KEY, // ECDH计算密钥
};

rte_crypto_rsa_op 结构包含了执行 RSA 操作所需的所有信息。

struct rte_crypto_rsa_op {
    struct rte_crypto_rsa_key *key; // RSA密钥
    struct rte_crypto_rsa_padding pad; // 填充方案
    struct {
        uint16_t length; // 输入数据长度
        uint8_t *data;   // 输入数据
    } input;
    struct {
        uint16_t length; // 输出数据长度
        uint8_t *data;   // 输出数据
    } output;
};

putao
5 声望0 粉丝

推动世界向前发展,改善民生。