summaryrefslogtreecommitdiff
path: root/cipher
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2023-01-04 12:44:06 +0200
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2023-01-04 12:52:09 +0200
commitd1ccc409d4c655f695c7dc042a629a8898bd14eb (patch)
treee7573e07e6c2712875e48f2c1aca6aa7f652d6bc /cipher
parentf2153d797f43a5fc8b80c2d908bf7dd6ad1fcc2a (diff)
downloadlibgcrypt-d1ccc409d4c655f695c7dc042a629a8898bd14eb.tar.gz
Add GMAC-SM4 and Poly1305-SM4
* cipher/cipher.c (cipher_list_algo301): Remove comma at the end of last entry. * cipher/mac-gmac.c (map_mac_algo_to_cipher): Add SM4. (_gcry_mac_type_spec_gmac_sm4): New. * cipher/max-internal.h (_gcry_mac_type_spec_gmac_sm4) (_gcry_mac_type_spec_poly1305mac_sm4): New. * cipher/mac-poly1305.c (poly1305mac_open): Add SM4. (_gcry_mac_type_spec_poly1305mac_sm4): New. * cipher/mac.c (mac_list, mac_list_algo401, mac_list_algo501): Add GMAC-SM4 and Poly1304-SM4. (mac_list_algo101): Remove comma at the end of last entry. * cipher/md.c (digest_list_algo301): Remove comma at the end of last entry. * doc/gcrypt.texi: Add GCRY_MAC_GMAC_SM4 and GCRY_MAC_POLY1305_SM4. * src/gcrypt.h.in (GCRY_MAC_GMAC_SM4, GCRY_MAC_POLY1305_SM4): New. * tests/bench-slope.c (bench_mac_init): Setup IV for GCRY_MAC_POLY1305_SM4. * tests/benchmark.c (mac_bench): Likewise. -- Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher')
-rw-r--r--cipher/cipher.c6
-rw-r--r--cipher/mac-gmac.c8
-rw-r--r--cipher/mac-internal.h6
-rw-r--r--cipher/mac-poly1305.c9
-rw-r--r--cipher/mac.c22
-rw-r--r--cipher/md.c4
6 files changed, 45 insertions, 10 deletions
diff --git a/cipher/cipher.c b/cipher/cipher.c
index 026c1511..6f92b75a 100644
--- a/cipher/cipher.c
+++ b/cipher/cipher.c
@@ -91,7 +91,7 @@ static gcry_cipher_spec_t * const cipher_list[] =
#if USE_SM4
&_gcry_cipher_spec_sm4,
#endif
- NULL
+ NULL
};
/* Cipher implementations starting with index 0 (enum gcry_cipher_algos) */
@@ -207,9 +207,9 @@ static gcry_cipher_spec_t * const cipher_list_algo301[] =
NULL,
#endif
#if USE_SM4
- &_gcry_cipher_spec_sm4,
+ &_gcry_cipher_spec_sm4
#else
- NULL,
+ NULL
#endif
};
diff --git a/cipher/mac-gmac.c b/cipher/mac-gmac.c
index 12f515eb..5e350010 100644
--- a/cipher/mac-gmac.c
+++ b/cipher/mac-gmac.c
@@ -45,6 +45,8 @@ map_mac_algo_to_cipher (int mac_algo)
return GCRY_CIPHER_SERPENT128;
case GCRY_MAC_GMAC_SEED:
return GCRY_CIPHER_SEED;
+ case GCRY_MAC_GMAC_SM4:
+ return GCRY_CIPHER_SM4;
}
}
@@ -185,3 +187,9 @@ const gcry_mac_spec_t _gcry_mac_type_spec_gmac_camellia = {
&gmac_ops
};
#endif
+#if USE_SM4
+const gcry_mac_spec_t _gcry_mac_type_spec_gmac_sm4 = {
+ GCRY_MAC_GMAC_SM4, {0, 0}, "GMAC_SM4",
+ &gmac_ops
+};
+#endif
diff --git a/cipher/mac-internal.h b/cipher/mac-internal.h
index 01998152..39876f55 100644
--- a/cipher/mac-internal.h
+++ b/cipher/mac-internal.h
@@ -253,6 +253,9 @@ extern const gcry_mac_spec_t _gcry_mac_type_spec_gmac_seed;
#if USE_CAMELLIA
extern const gcry_mac_spec_t _gcry_mac_type_spec_gmac_camellia;
#endif
+#if USE_SM4
+extern const gcry_mac_spec_t _gcry_mac_type_spec_gmac_sm4;
+#endif
/*
* The Poly1305 MAC algorithm specifications (mac-poly1305.c).
@@ -273,3 +276,6 @@ extern const gcry_mac_spec_t _gcry_mac_type_spec_poly1305mac_serpent;
#if USE_SEED
extern const gcry_mac_spec_t _gcry_mac_type_spec_poly1305mac_seed;
#endif
+#if USE_SM4
+extern const gcry_mac_spec_t _gcry_mac_type_spec_poly1305mac_sm4;
+#endif
diff --git a/cipher/mac-poly1305.c b/cipher/mac-poly1305.c
index 3abc7774..5b6c489e 100644
--- a/cipher/mac-poly1305.c
+++ b/cipher/mac-poly1305.c
@@ -83,6 +83,9 @@ poly1305mac_open (gcry_mac_hd_t h)
case GCRY_MAC_POLY1305_SEED:
cipher_algo = GCRY_CIPHER_SEED;
break;
+ case GCRY_MAC_POLY1305_SM4:
+ cipher_algo = GCRY_CIPHER_SM4;
+ break;
}
err = _gcry_cipher_open_internal (&mac_ctx->hd, cipher_algo,
@@ -362,3 +365,9 @@ const gcry_mac_spec_t _gcry_mac_type_spec_poly1305mac_seed = {
&poly1305mac_ops
};
#endif
+#if USE_SM4
+const gcry_mac_spec_t _gcry_mac_type_spec_poly1305mac_sm4 = {
+ GCRY_MAC_POLY1305_SM4, {0, 0}, "POLY1305_SM4",
+ &poly1305mac_ops
+};
+#endif
diff --git a/cipher/mac.c b/cipher/mac.c
index ba1eb300..05d2c64c 100644
--- a/cipher/mac.c
+++ b/cipher/mac.c
@@ -132,8 +132,10 @@ static const gcry_mac_spec_t * const mac_list[] = {
&_gcry_mac_type_spec_poly1305mac,
#if USE_SM4
&_gcry_mac_type_spec_cmac_sm4,
+ &_gcry_mac_type_spec_gmac_sm4,
+ &_gcry_mac_type_spec_poly1305mac_sm4,
#endif
- NULL,
+ NULL
};
/* HMAC implementations start with index 101 (enum gcry_mac_algos) */
@@ -242,10 +244,10 @@ static const gcry_mac_spec_t * const mac_list_algo101[] =
#endif
#if USE_SHA512
&_gcry_mac_type_spec_hmac_sha512_256,
- &_gcry_mac_type_spec_hmac_sha512_224,
+ &_gcry_mac_type_spec_hmac_sha512_224
#else
NULL,
- NULL,
+ NULL
#endif
};
@@ -338,7 +340,12 @@ static const gcry_mac_spec_t * const mac_list_algo401[] =
NULL,
#endif
#if USE_SEED
- &_gcry_mac_type_spec_gmac_seed
+ &_gcry_mac_type_spec_gmac_seed,
+#else
+ NULL,
+#endif
+#if USE_SM4
+ &_gcry_mac_type_spec_gmac_sm4
#else
NULL
#endif
@@ -369,7 +376,12 @@ static const gcry_mac_spec_t * const mac_list_algo501[] =
NULL,
#endif
#if USE_SEED
- &_gcry_mac_type_spec_poly1305mac_seed
+ &_gcry_mac_type_spec_poly1305mac_seed,
+#else
+ NULL,
+#endif
+#if USE_SM4
+ &_gcry_mac_type_spec_poly1305mac_sm4
#else
NULL
#endif
diff --git a/cipher/md.c b/cipher/md.c
index 34336b5c..40a862f6 100644
--- a/cipher/md.c
+++ b/cipher/md.c
@@ -240,10 +240,10 @@ static const gcry_md_spec_t * const digest_list_algo301[] =
#endif
#if USE_SHA512
&_gcry_digest_spec_sha512_256,
- &_gcry_digest_spec_sha512_224,
+ &_gcry_digest_spec_sha512_224
#else
NULL,
- NULL,
+ NULL
#endif
};