examples/ipsec-secgw: support SHA256 HMAC
authorZbigniew Bodek <zbigniew.bodek@caviumnetworks.com>
Thu, 12 Jan 2017 14:52:37 +0000 (15:52 +0100)
committerPablo de Lara <pablo.de.lara.guarch@intel.com>
Wed, 18 Jan 2017 20:48:56 +0000 (21:48 +0100)
Add minor adjustments to support SHA256 HMAC:
- extend maximum key length to match SHA256 HMAC
- add SHA256 HMAC parameters and configuration string
- add SHA256 HMAC to inbound and outbound cases

Signed-off-by: Zbigniew Bodek <zbigniew.bodek@caviumnetworks.com>
Acked-by: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
examples/ipsec-secgw/esp.c
examples/ipsec-secgw/ipsec.h
examples/ipsec-secgw/sa.c

index 9715ea9..e77afa0 100644 (file)
@@ -122,6 +122,7 @@ esp_inbound(struct rte_mbuf *m, struct ipsec_sa *sa,
        switch (sa->auth_algo) {
        case RTE_CRYPTO_AUTH_NULL:
        case RTE_CRYPTO_AUTH_SHA1_HMAC:
+       case RTE_CRYPTO_AUTH_SHA256_HMAC:
                sym_cop->auth.data.offset = ip_hdr_len;
                sym_cop->auth.data.length = sizeof(struct esp_hdr) +
                        sa->iv_len + payload_len;
@@ -354,6 +355,7 @@ esp_outbound(struct rte_mbuf *m, struct ipsec_sa *sa,
        switch (sa->auth_algo) {
        case RTE_CRYPTO_AUTH_NULL:
        case RTE_CRYPTO_AUTH_SHA1_HMAC:
+       case RTE_CRYPTO_AUTH_SHA256_HMAC:
                sym_cop->auth.data.offset = ip_hdr_len;
                sym_cop->auth.data.length = sizeof(struct esp_hdr) +
                        sa->iv_len + pad_payload_len;
index dbc8c2c..fe42661 100644 (file)
@@ -90,7 +90,7 @@ struct ip_addr {
        } ip;
 };
 
-#define MAX_KEY_SIZE           20
+#define MAX_KEY_SIZE           32
 
 struct ipsec_sa {
        uint32_t spi;
index 8c4406c..39624c4 100644 (file)
@@ -113,6 +113,12 @@ const struct supported_auth_algo auth_algos[] = {
                .digest_len = 12,
                .key_len = 20
        },
+       {
+               .keyword = "sha256-hmac",
+               .algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
+               .digest_len = 12,
+               .key_len = 32
+       },
        {
                .keyword = "aes-128-gcm",
                .algo = RTE_CRYPTO_AUTH_AES_GCM,