Projects
Eulaceura:Factory
libgcrypt
_service:obs_scm:add-GCRY_MD_SM3_PGP-set-to-109...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:add-GCRY_MD_SM3_PGP-set-to-109.patch of Package libgcrypt
From 4c1e5cb38485986014c57b77de20c390714c5f1d Mon Sep 17 00:00:00 2001 From: zhengxiaoxiao <zhengxiaoxiao2@huawei.com> Date: Thu, 10 Oct 2024 07:54:19 +0800 Subject: [PATCH] add GCRY_MD_SM3_PGP set to 109 Co-authored-by: Huaxin Lu <luhuaxin1@huawei.com> Signed-off-by: zhengxiaoxiao <zhengxiaoxiao2@huawei.com> --- cipher/md.c | 25 +++++++++++++++++++++++++ cipher/sm3.c | 15 +++++++++++++++ config.h.in | 3 +++ configure.ac | 7 ++++++- src/cipher.h | 3 +++ src/gcrypt.h.in | 5 +++++ 6 files changed, 57 insertions(+), 1 deletion(-) diff --git a/cipher/md.c b/cipher/md.c index 34336b5..c9aeb3c 100644 --- a/cipher/md.c +++ b/cipher/md.c @@ -99,6 +99,9 @@ static const gcry_md_spec_t * const digest_list[] = #endif #if USE_SM3 &_gcry_digest_spec_sm3, +#endif +#if USE_SM3_PGP + &_gcry_digest_spec_sm3_pgp, #endif NULL }; @@ -153,6 +156,24 @@ static const gcry_md_spec_t * const digest_list_algo0[] = #endif }; +#if USE_SM3_PGP +/* Digest implementations starting with index 100 (enum gcry_md_algos) */ +static const gcry_md_spec_t * const digest_list_algo100[] = + { + NULL, /* Private or Experimental Use 100 */ + NULL, /* Private or Experimental Use 101 */ + NULL, /* Private or Experimental Use 102 */ + NULL, /* Private or Experimental Use 103 */ + NULL, /* Private or Experimental Use 104 */ + NULL, /* Private or Experimental Use 105 */ + NULL, /* Private or Experimental Use 106 */ + NULL, /* Private or Experimental Use 107 */ + NULL, /* Private or Experimental Use 108 */ + &_gcry_digest_spec_sm3_pgp, + NULL /* Private or Experimental Use 110 */ + }; +#endif + /* Digest implementations starting with index 301 (enum gcry_md_algos) */ static const gcry_md_spec_t * const digest_list_algo301[] = { @@ -307,6 +328,10 @@ spec_from_algo (int algo) spec = digest_list_algo0[algo]; else if (algo >= 301 && algo < 301 + DIM(digest_list_algo301)) spec = digest_list_algo301[algo - 301]; +#if USE_SM3_PGP + else if (algo >= 100 && algo < 100 + DIM(digest_list_algo100)) + spec = digest_list_algo100[algo - 100]; +#endif if (spec) gcry_assert (spec->algo == algo); diff --git a/cipher/sm3.c b/cipher/sm3.c index 0ab5f50..d109c7d 100644 --- a/cipher/sm3.c +++ b/cipher/sm3.c @@ -503,6 +503,9 @@ run_selftests (int algo, int extended, selftest_report_func_t report) switch (algo) { case GCRY_MD_SM3: +#if USE_SM3_PGP + case GCRY_MD_SM3_PGP: +#endif ec = selftests_sm3 (extended, report); break; default: @@ -535,3 +538,15 @@ const gcry_md_spec_t _gcry_digest_spec_sm3 = sizeof (SM3_CONTEXT), run_selftests }; + +#if USE_SM3_PGP +const gcry_md_spec_t _gcry_digest_spec_sm3_pgp = + { + GCRY_MD_SM3_PGP, {0, 0}, + "SM3", asn_sm3, DIM (asn_sm3), oid_spec_sm3, 32, + sm3_init, _gcry_md_block_write, sm3_final, sm3_read, NULL, + _gcry_sm3_hash_buffers, + sizeof (SM3_CONTEXT), + run_selftests + }; +#endif diff --git a/config.h.in b/config.h.in index cfd150f..6aa5992 100644 --- a/config.h.in +++ b/config.h.in @@ -632,6 +632,9 @@ /* Defined if this module should be included */ #undef USE_SM3 +/* Defined if this module should be included */ +#undef USE_SM3_PGP + /* Defined if this module should be included */ #undef USE_SM4 diff --git a/configure.ac b/configure.ac index 24ec2eb..81892ae 100644 --- a/configure.ac +++ b/configure.ac @@ -221,7 +221,7 @@ enabled_pubkey_ciphers="" # Definitions for message digests. available_digests="crc gostr3411-94 md2 md4 md5 rmd160 sha1 sha256 sha512" available_digests="$available_digests sha3 tiger whirlpool stribog blake2" -available_digests="$available_digests sm3" +available_digests="$available_digests sm3 sm3_pgp" enabled_digests="" # Definitions for kdfs (optional ones) @@ -3064,6 +3064,11 @@ if test "$found" = "1" ; then esac fi +LIST_MEMBER(sm3_pgp, $enabled_digests) +if test "$found" = "1" ; then + AC_DEFINE(USE_SM3_PGP, 1, [Defined if this module should be included]) +fi + # SHA-1 needs to be included always for example because it is used by # random-csprng.c. GCRYPT_DIGESTS="$GCRYPT_DIGESTS sha1.lo" diff --git a/src/cipher.h b/src/cipher.h index 87f8c4d..03ce82f 100644 --- a/src/cipher.h +++ b/src/cipher.h @@ -208,6 +208,9 @@ extern const gcry_md_spec_t _gcry_digest_spec_blake2s_224; extern const gcry_md_spec_t _gcry_digest_spec_blake2s_160; extern const gcry_md_spec_t _gcry_digest_spec_blake2s_128; extern const gcry_md_spec_t _gcry_digest_spec_sm3; +#if USE_SM3_PGP +extern const gcry_md_spec_t _gcry_digest_spec_sm3_pgp; +#endif /* Declarations for the pubkey cipher specifications. */ extern gcry_pk_spec_t _gcry_pubkey_spec_rsa; diff --git a/src/gcrypt.h.in b/src/gcrypt.h.in index 58581da..581f41e 100644 --- a/src/gcrypt.h.in +++ b/src/gcrypt.h.in @@ -1259,6 +1259,11 @@ enum gcry_md_algos GCRY_MD_SHA512 = 10, GCRY_MD_SHA224 = 11, +#if USE_SM3_PGP + /* 100-110 openPGP Private or Experimental Use */ + GCRY_MD_SM3_PGP = 109, +#endif + GCRY_MD_MD4 = 301, GCRY_MD_CRC32 = 302, GCRY_MD_CRC32_RFC1510 = 303, -- 2.43.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2