summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2017-11-25 10:40:17 -0500
committerJeffrey Walton <noloader@gmail.com>2017-11-25 10:40:17 -0500
commit679c9583a087ddd0afb414181a16dadc9c09808b (patch)
tree09e0e489c54dd0044222d2a03cba5c1d1b3dd2f6
parent1ca704aec65d9716cff577f3128728a848a5e312 (diff)
downloadcryptopp-git-679c9583a087ddd0afb414181a16dadc9c09808b.tar.gz
Update oids for SM2 (GH #542)
Also see https://www.cryptopp.com/wiki/SM2. The wiki page is documenting some of this stuff
-rw-r--r--eccrypto.cpp17
-rw-r--r--oids.h2
2 files changed, 19 insertions, 0 deletions
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<EC2N> *&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<ECP> *&begin, const EcRecommendedParameters<ECP> *&end)
{
// this array must be sorted by OID
static const EcRecommendedParameters<ECP> rec[] = {
+ EcRecommendedParameters<ECP>(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<ECP>(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<ECP>(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)