From 679c9583a087ddd0afb414181a16dadc9c09808b Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sat, 25 Nov 2017 10:40:17 -0500 Subject: [PATCH] Update oids for SM2 (GH #542) Also see https://www.cryptopp.com/wiki/SM2. The wiki page is documenting some of this stuff --- eccrypto.cpp | 17 +++++++++++++++++ oids.h | 2 ++ 2 files changed, 19 insertions(+) diff --git a/eccrypto.cpp b/eccrypto.cpp index 32b286dc..fde92859 100644 --- a/eccrypto.cpp +++ b/eccrypto.cpp @@ -268,10 +268,27 @@ static void GetRecommendedParameters(const EcRecommendedParameters *&begin end = rec + sizeof(rec)/sizeof(rec[0]); } +// See https://www.cryptopp.com/wiki/SM2 for details on sm2p256v1 and sm2encrypt_recommendedParameters static void GetRecommendedParameters(const EcRecommendedParameters *&begin, const EcRecommendedParameters *&end) { // this array must be sorted by OID static const EcRecommendedParameters rec[] = { + EcRecommendedParameters(ASN1::sm2p256v1(), + "FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF", + "FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC", + "28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93", + "04" "32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7" + "BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0", + "FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123", + 1), + EcRecommendedParameters(ASN1::sm2encrypt_recommendedParameters(), + "FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF", + "FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC", + "28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93", + "04" "32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7" + "BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0", + "FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123", + 1), EcRecommendedParameters(ASN1::secp192r1(), "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF", "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC", diff --git a/oids.h b/oids.h index 47afc613..c4502a5b 100644 --- a/oids.h +++ b/oids.h @@ -30,6 +30,8 @@ DEFINE_OID(1, iso) DEFINE_OID(sm2p256v1()+1, sm2sign) DEFINE_OID(sm2p256v1()+2, sm2exchange) DEFINE_OID(sm2p256v1()+3, sm2encrypt) + DEFINE_OID(sm2encrypt()+1, sm2encrypt_recommendedParameters) + DEFINE_OID(sm2encrypt()+2, sm2encrypt_specifiedParameters) DEFINE_OID(member_body()+840, iso_us) DEFINE_OID(iso_us()+10040, ansi_x9_57) DEFINE_OID(ansi_x9_57()+4+1, id_dsa)