diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2023-01-04 12:44:06 +0200 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2023-01-04 12:52:09 +0200 |
commit | d1ccc409d4c655f695c7dc042a629a8898bd14eb (patch) | |
tree | e7573e07e6c2712875e48f2c1aca6aa7f652d6bc /cipher | |
parent | f2153d797f43a5fc8b80c2d908bf7dd6ad1fcc2a (diff) | |
download | libgcrypt-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.c | 6 | ||||
-rw-r--r-- | cipher/mac-gmac.c | 8 | ||||
-rw-r--r-- | cipher/mac-internal.h | 6 | ||||
-rw-r--r-- | cipher/mac-poly1305.c | 9 | ||||
-rw-r--r-- | cipher/mac.c | 22 | ||||
-rw-r--r-- | cipher/md.c | 4 |
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 }; |