Skip to content

Commit 2e8f9fe

Browse files
committed
Fix SM2 certs to have the correct public key OID
OpenSSL 3.5+ handles the OIDs differently.
1 parent 4e37d99 commit 2e8f9fe

12 files changed

Lines changed: 318 additions & 123 deletions

certs/sm2/ca-sm2.der

1 Byte
Binary file not shown.

certs/sm2/ca-sm2.pem

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ Certificate:
55
Signature Algorithm: SM2-with-SM3
66
Issuer: C=US, ST=Montana, L=Bozeman, O=wolfSSL_SM2, OU=Root-SM2, CN=www.wolfssl.com, emailAddress=info@wolfssl.com
77
Validity
8-
Not Before: Feb 18 14:27:26 2026 GMT
9-
Not After : Nov 14 14:27:26 2028 GMT
8+
Not Before: Feb 18 17:56:57 2026 GMT
9+
Not After : Nov 14 17:56:57 2028 GMT
1010
Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL_sm2, OU=CA-sm2, CN=www.wolfssl.com, emailAddress=info@wolfssl.com, UID=wolfSSL
1111
Subject Public Key Info:
12-
Public Key Algorithm: id-ecPublicKey
12+
Public Key Algorithm: sm2
1313
Public-Key: (256 bit)
1414
pub:
1515
04:21:92:f7:cb:24:df:64:4d:ba:ab:66:7b:83:75:
@@ -29,23 +29,23 @@ Certificate:
2929
Digital Signature, Certificate Sign, CRL Sign
3030
Signature Algorithm: SM2-with-SM3
3131
Signature Value:
32-
30:46:02:21:00:ba:6b:14:b0:ef:08:bf:4c:32:63:62:2e:e1:
33-
5d:04:d9:45:04:79:c9:bf:9a:93:9f:05:44:f5:e6:33:64:b4:
34-
7e:02:21:00:e3:17:fe:87:35:30:f2:3b:ab:16:2d:5e:30:76:
35-
42:4e:cc:85:96:b9:2f:af:55:00:a5:4f:43:7c:13:54:3f:4f
32+
30:46:02:21:00:b2:b9:5b:02:ad:78:f8:52:ba:67:cf:cb:25:
33+
9b:ba:d9:56:f5:a7:ff:af:25:26:d5:f6:f3:f3:a6:f5:9a:2f:
34+
9b:02:21:00:bc:96:f3:39:13:76:dc:02:35:39:0e:dc:0a:69:
35+
bf:02:18:b6:01:be:ff:05:d7:2e:f2:7b:67:eb:16:e9:8e:c5
3636
-----BEGIN CERTIFICATE-----
37-
MIICljCCAjugAwIBAgIBATAKBggqgRzPVQGDdTCBlTELMAkGA1UEBhMCVVMxEDAO
37+
MIIClzCCAjygAwIBAgIBATAKBggqgRzPVQGDdTCBlTELMAkGA1UEBhMCVVMxEDAO
3838
BgNVBAgMB01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xFDASBgNVBAoMC3dvbGZT
3939
U0xfU00yMREwDwYDVQQLDAhSb290LVNNMjEYMBYGA1UEAwwPd3d3LndvbGZzc2wu
40-
Y29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tMB4XDTI2MDIxODE0
41-
MjcyNloXDTI4MTExNDE0MjcyNlowgawxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdN
40+
Y29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tMB4XDTI2MDIxODE3
41+
NTY1N1oXDTI4MTExNDE3NTY1N1owgawxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdN
4242
b250YW5hMRAwDgYDVQQHDAdCb3plbWFuMRQwEgYDVQQKDAt3b2xmU1NMX3NtMjEP
4343
MA0GA1UECwwGQ0Etc20yMRgwFgYDVQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkq
4444
hkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20xFzAVBgoJkiaJk/IsZAEBDAd3b2xm
45-
U1NMMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEIZL3yyTfZE26q2Z7g3WpKef/
46-
ZGO21UKAIL3i4gISO460AJUJgMtW7UvKjVfmrgXTdidjcTmJt2nmSICu0alIEqNj
47-
MGEwHQYDVR0OBBYEFEcKSH67AqhaJlcrGal7YYt/XZluMB8GA1UdIwQYMBaAFDQd
48-
eUQVeaGxY5nj7WV8ZImA/7jsMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD
49-
AgGGMAoGCCqBHM9VAYN1A0kAMEYCIQC6axSw7wi/TDJjYi7hXQTZRQR5yb+ak58F
50-
RPXmM2S0fgIhAOMX/oc1MPI7qxYtXjB2Qk7MhZa5L69VAKVPQ3wTVD9P
45+
U1NMMFowFAYIKoEcz1UBgi0GCCqBHM9VAYItA0IABCGS98sk32RNuqtme4N1qSnn
46+
/2RjttVCgCC94uICEjuOtACVCYDLVu1Lyo1X5q4F03YnY3E5ibdp5kiArtGpSBKj
47+
YzBhMB0GA1UdDgQWBBRHCkh+uwKoWiZXKxmpe2GLf12ZbjAfBgNVHSMEGDAWgBQ0
48+
HXlEFXmhsWOZ4+1lfGSJgP+47DAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
49+
AwIBhjAKBggqgRzPVQGDdQNJADBGAiEAsrlbAq14+FK6Z8/LJZu62Vb1p/+vJSbV
50+
9vPzpvWaL5sCIQC8lvM5E3bcAjU5DtwKab8CGLYBvv8F1y7ye2frFumOxQ==
5151
-----END CERTIFICATE-----

certs/sm2/client-sm2.der

3 Bytes
Binary file not shown.

certs/sm2/client-sm2.pem

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ Certificate:
22
Data:
33
Version: 3 (0x2)
44
Serial Number:
5-
22:ce:97:23:6f:99:f4:f3:25:25:7e:01:76:ce:ae:80:56:b6:41:d1
5+
63:dd:75:63:8a:b0:51:4f:9c:4e:ff:6d:55:4e:cd:ee:8f:26:d3:80
66
Signature Algorithm: SM2-with-SM3
77
Issuer: C=US, ST=Montana, L=Bozeman, O=wolfSSL_sm2, OU=Client-sm2, CN=www.wolfssl.com, emailAddress=info@wolfssl.com, UID=wolfSSL
88
Validity
9-
Not Before: Feb 18 14:27:26 2026 GMT
10-
Not After : Nov 14 14:27:26 2028 GMT
9+
Not Before: Feb 18 17:56:57 2026 GMT
10+
Not After : Nov 14 17:56:57 2028 GMT
1111
Subject: C=US, ST=Montana, L=Bozeman, O=wolfSSL_sm2, OU=Client-sm2, CN=www.wolfssl.com, emailAddress=info@wolfssl.com, UID=wolfSSL
1212
Subject Public Key Info:
13-
Public Key Algorithm: id-ecPublicKey
13+
Public Key Algorithm: sm2
1414
Public-Key: (256 bit)
1515
pub:
1616
04:3a:1d:e8:cb:4b:d3:2e:3f:4b:07:3f:b0:21:fe:
@@ -25,7 +25,7 @@ Certificate:
2525
X509v3 Authority Key Identifier:
2626
keyid:E4:21:B2:C5:E5:D4:9E:82:CA:F8:67:F2:28:99:F6:85:E8:F1:55:EF
2727
DirName:/C=US/ST=Montana/L=Bozeman/O=wolfSSL_sm2/OU=Client-sm2/CN=www.wolfssl.com/emailAddress=info@wolfssl.com/UID=wolfSSL
28-
serial:22:CE:97:23:6F:99:F4:F3:25:25:7E:01:76:CE:AE:80:56:B6:41:D1
28+
serial:63:DD:75:63:8A:B0:51:4F:9C:4E:FF:6D:55:4E:CD:EE:8F:26:D3:80
2929
X509v3 Basic Constraints:
3030
CA:TRUE
3131
X509v3 Subject Alternative Name:
@@ -34,30 +34,30 @@ Certificate:
3434
TLS Web Server Authentication, TLS Web Client Authentication
3535
Signature Algorithm: SM2-with-SM3
3636
Signature Value:
37-
30:44:02:20:27:71:25:22:69:ed:80:eb:3f:39:0e:7a:9b:a7:
38-
22:66:76:ef:d4:b4:5e:e8:8f:47:06:c7:2f:a4:f5:0f:09:6e:
39-
02:20:18:f9:bb:4c:4a:a0:a0:c9:ff:42:24:a1:9a:63:6b:ec:
40-
d1:25:e5:49:de:bd:83:e0:90:81:f4:23:49:f7:84:6e
37+
30:46:02:21:00:dd:98:90:68:35:95:61:2f:11:90:a5:e9:30:
38+
8b:9a:aa:33:cc:73:8a:76:96:8b:97:8c:4c:c3:10:fc:14:56:
39+
9b:02:21:00:f8:de:db:67:54:59:ca:98:27:3d:3f:f6:6f:30:
40+
0c:65:e1:fb:a0:9f:11:ab:ea:76:30:31:c4:66:11:d7:b9:f2
4141
-----BEGIN CERTIFICATE-----
42-
MIIDxjCCA22gAwIBAgIUIs6XI2+Z9PMlJX4Bds6ugFa2QdEwCgYIKoEcz1UBg3Uw
42+
MIIDyTCCA26gAwIBAgIUY911Y4qwUU+cTv9tVU7N7o8m04AwCgYIKoEcz1UBg3Uw
4343
gbAxCzAJBgNVBAYTAlVTMRAwDgYDVQQIDAdNb250YW5hMRAwDgYDVQQHDAdCb3pl
4444
bWFuMRQwEgYDVQQKDAt3b2xmU1NMX3NtMjETMBEGA1UECwwKQ2xpZW50LXNtMjEY
4545
MBYGA1UEAwwPd3d3LndvbGZzc2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdv
46-
bGZzc2wuY29tMRcwFQYKCZImiZPyLGQBAQwHd29sZlNTTDAeFw0yNjAyMTgxNDI3
47-
MjZaFw0yODExMTQxNDI3MjZaMIGwMQswCQYDVQQGEwJVUzEQMA4GA1UECAwHTW9u
46+
bGZzc2wuY29tMRcwFQYKCZImiZPyLGQBAQwHd29sZlNTTDAeFw0yNjAyMTgxNzU2
47+
NTdaFw0yODExMTQxNzU2NTdaMIGwMQswCQYDVQQGEwJVUzEQMA4GA1UECAwHTW9u
4848
dGFuYTEQMA4GA1UEBwwHQm96ZW1hbjEUMBIGA1UECgwLd29sZlNTTF9zbTIxEzAR
4949
BgNVBAsMCkNsaWVudC1zbTIxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0G
5050
CSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTEXMBUGCgmSJomT8ixkAQEMB3dv
51-
bGZTU0wwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAQ6HejLS9MuP0sHP7Ah/sWe
52-
2co6k5OVdh0w2Qv1Vu0ZYO0BTPZnHfGsqHQNsnfISTjk/0zvjW2H9k7H+Dl0cHC1
53-
o4IBYTCCAV0wHQYDVR0OBBYEFOQhssXl1J6Cyvhn8iiZ9oXo8VXvMIHwBgNVHSME
54-
gegwgeWAFOQhssXl1J6Cyvhn8iiZ9oXo8VXvoYG2pIGzMIGwMQswCQYDVQQGEwJV
55-
UzEQMA4GA1UECAwHTW9udGFuYTEQMA4GA1UEBwwHQm96ZW1hbjEUMBIGA1UECgwL
56-
d29sZlNTTF9zbTIxEzARBgNVBAsMCkNsaWVudC1zbTIxGDAWBgNVBAMMD3d3dy53
57-
b2xmc3NsLmNvbTEfMB0GCSqGSIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTEXMBUG
58-
CgmSJomT8ixkAQEMB3dvbGZTU0yCFCLOlyNvmfTzJSV+AXbOroBWtkHRMAwGA1Ud
59-
EwQFMAMBAf8wHAYDVR0RBBUwE4ILZXhhbXBsZS5jb22HBH8AAAEwHQYDVR0lBBYw
60-
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAoGCCqBHM9VAYN1A0cAMEQCICdxJSJp7YDr
61-
PzkOepunImZ279S0XuiPRwbHL6T1DwluAiAY+btMSqCgyf9CJKGaY2vs0SXlSd69
62-
g+CQgfQjSfeEbg==
51+
bGZTU0wwWjAUBggqgRzPVQGCLQYIKoEcz1UBgi0DQgAEOh3oy0vTLj9LBz+wIf7F
52+
ntnKOpOTlXYdMNkL9VbtGWDtAUz2Zx3xrKh0DbJ3yEk45P9M741th/ZOx/g5dHBw
53+
taOCAWEwggFdMB0GA1UdDgQWBBTkIbLF5dSegsr4Z/IomfaF6PFV7zCB8AYDVR0j
54+
BIHoMIHlgBTkIbLF5dSegsr4Z/IomfaF6PFV76GBtqSBszCBsDELMAkGA1UEBhMC
55+
VVMxEDAOBgNVBAgMB01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xFDASBgNVBAoM
56+
C3dvbGZTU0xfc20yMRMwEQYDVQQLDApDbGllbnQtc20yMRgwFgYDVQQDDA93d3cu
57+
d29sZnNzbC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20xFzAV
58+
BgoJkiaJk/IsZAEBDAd3b2xmU1NMghRj3XVjirBRT5xO/21VTs3ujybTgDAMBgNV
59+
HRMEBTADAQH/MBwGA1UdEQQVMBOCC2V4YW1wbGUuY29thwR/AAABMB0GA1UdJQQW
60+
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAKBggqgRzPVQGDdQNJADBGAiEA3ZiQaDWV
61+
YS8RkKXpMIuaqjPMc4p2louXjEzDEPwUVpsCIQD43ttnVFnKmCc9P/ZvMAxl4fug
62+
nxGr6nYwMcRmEde58g==
6363
-----END CERTIFICATE-----

certs/sm2/fix_sm2_spki.py

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
#!/usr/bin/env python3
2+
"""Fix SM2 certificate SubjectPublicKeyInfo algorithm OID.
3+
4+
OpenSSL 3.x encodes SM2 keys using the generic id-ecPublicKey OID
5+
(1.2.840.10045.2.1) instead of the SM2-specific OID (1.2.156.10197.1.301).
6+
This script patches the SPKI algorithm OID back to SM2 and re-signs the
7+
certificate.
8+
9+
Usage: fix_sm2_spki.py <cert.pem> <signing-key.pem> <output.pem>
10+
"""
11+
12+
import base64
13+
import subprocess
14+
import sys
15+
import os
16+
import tempfile
17+
18+
EC_PUBKEY_OID = bytes([0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01])
19+
SM2_ALGO_OID = bytes([0x06, 0x08, 0x2a, 0x81, 0x1c, 0xcf, 0x55, 0x01, 0x82, 0x2d])
20+
SM2_WITH_SM3 = bytes([0x30, 0x0a, 0x06, 0x08,
21+
0x2a, 0x81, 0x1c, 0xcf, 0x55, 0x01, 0x83, 0x75])
22+
23+
24+
def read_der_length(data, offset):
25+
b = data[offset]
26+
if b < 0x80:
27+
return b, 1
28+
num_bytes = b & 0x7f
29+
length = 0
30+
for i in range(num_bytes):
31+
length = (length << 8) | data[offset + 1 + i]
32+
return length, 1 + num_bytes
33+
34+
35+
def encode_der_length(length):
36+
if length < 0x80:
37+
return bytes([length])
38+
elif length < 0x100:
39+
return bytes([0x81, length])
40+
elif length < 0x10000:
41+
return bytes([0x82, length >> 8, length & 0xff])
42+
else:
43+
raise ValueError("Length too large: %d" % length)
44+
45+
46+
def find_enclosing_sequences(data, target_pos):
47+
"""Find length-field offsets of all SEQUENCEs enclosing target_pos."""
48+
results = []
49+
50+
def scan(offset, end):
51+
while offset < end:
52+
tag = data[offset]
53+
offset += 1
54+
length, len_bytes = read_der_length(data, offset)
55+
len_offset = offset
56+
offset += len_bytes
57+
content_start = offset
58+
content_end = offset + length
59+
60+
if tag == 0x30 and content_start <= target_pos < content_end:
61+
results.append((len_offset, length, len_bytes))
62+
scan(content_start, content_end)
63+
return
64+
offset = content_end
65+
66+
scan(0, len(data))
67+
return results
68+
69+
70+
def patch_tbs_spki_oid(tbs_der):
71+
"""Replace id-ecPublicKey with SM2 OID in TBS SubjectPublicKeyInfo."""
72+
oid_pos = tbs_der.find(EC_PUBKEY_OID)
73+
if oid_pos == -1:
74+
return None # Already has SM2 OID or no EC key
75+
76+
enclosing = find_enclosing_sequences(tbs_der, oid_pos)
77+
size_diff = len(SM2_ALGO_OID) - len(EC_PUBKEY_OID)
78+
79+
result = bytearray(
80+
tbs_der[:oid_pos] + SM2_ALGO_OID + tbs_der[oid_pos + len(EC_PUBKEY_OID):]
81+
)
82+
83+
for len_offset, old_length, old_len_bytes in enclosing:
84+
new_length = old_length + size_diff
85+
new_len_encoded = encode_der_length(new_length)
86+
if len(new_len_encoded) == old_len_bytes:
87+
result[len_offset:len_offset + old_len_bytes] = new_len_encoded
88+
else:
89+
result[len_offset:len_offset + old_len_bytes] = new_len_encoded
90+
size_diff += len(new_len_encoded) - old_len_bytes
91+
92+
return bytes(result)
93+
94+
95+
def pem_to_der(pem_text):
96+
b64 = ''.join(
97+
line for line in pem_text.split('\n')
98+
if not line.startswith('-----') and line.strip()
99+
)
100+
return base64.b64decode(b64)
101+
102+
103+
def der_to_pem(der_data, label="CERTIFICATE"):
104+
b64 = base64.b64encode(der_data).decode()
105+
lines = [b64[i:i+64] for i in range(0, len(b64), 64)]
106+
return ('-----BEGIN %s-----\n' % label +
107+
'\n'.join(lines) +
108+
'\n-----END %s-----\n' % label)
109+
110+
111+
def extract_tbs(cert_der):
112+
assert cert_der[0] == 0x30
113+
outer_len, outer_len_bytes = read_der_length(cert_der, 1)
114+
tbs_offset = 1 + outer_len_bytes
115+
tbs_len, tbs_len_bytes = read_der_length(cert_der, tbs_offset + 1)
116+
tbs_total = 1 + tbs_len_bytes + tbs_len
117+
return cert_der[tbs_offset:tbs_offset + tbs_total]
118+
119+
120+
def sign_tbs(tbs_der, key_pem_path):
121+
"""Sign TBS with SM2-with-SM3 using openssl dgst."""
122+
with tempfile.NamedTemporaryFile(suffix='.der', delete=False) as tbs_f:
123+
tbs_f.write(tbs_der)
124+
tbs_path = tbs_f.name
125+
126+
sig_path = tbs_path + '.sig'
127+
try:
128+
result = subprocess.run(
129+
['openssl', 'dgst', '-sm3', '-sign', key_pem_path,
130+
'-out', sig_path, tbs_path],
131+
capture_output=True, text=True
132+
)
133+
if result.returncode != 0:
134+
raise RuntimeError("openssl dgst failed: " + result.stderr)
135+
136+
with open(sig_path, 'rb') as f:
137+
return f.read()
138+
finally:
139+
os.unlink(tbs_path)
140+
if os.path.exists(sig_path):
141+
os.unlink(sig_path)
142+
143+
144+
def build_cert(tbs_der, sig_der):
145+
bit_string = bytes([0x03, len(sig_der) + 1, 0x00]) + sig_der
146+
cert_body = tbs_der + SM2_WITH_SM3 + bit_string
147+
return bytes([0x30]) + encode_der_length(len(cert_body)) + cert_body
148+
149+
150+
def fix_sm2_cert(cert_pem_path, key_pem_path, output_pem_path):
151+
with open(cert_pem_path, 'r') as f:
152+
cert_pem = f.read()
153+
154+
cert_der = pem_to_der(cert_pem)
155+
tbs = extract_tbs(cert_der)
156+
157+
new_tbs = patch_tbs_spki_oid(tbs)
158+
if new_tbs is None:
159+
print(" Already has SM2 OID, no patching needed")
160+
if cert_pem_path != output_pem_path:
161+
with open(output_pem_path, 'w') as f:
162+
f.write(cert_pem)
163+
return
164+
165+
sig = sign_tbs(new_tbs, key_pem_path)
166+
new_cert_der = build_cert(new_tbs, sig)
167+
168+
with open(output_pem_path, 'w') as f:
169+
f.write(der_to_pem(new_cert_der))
170+
171+
print(" Patched SPKI algorithm OID to SM2")
172+
173+
174+
if __name__ == '__main__':
175+
if len(sys.argv) != 4:
176+
print("Usage: %s <cert.pem> <signing-key.pem> <output.pem>" % sys.argv[0])
177+
sys.exit(1)
178+
179+
fix_sm2_cert(sys.argv[1], sys.argv[2], sys.argv[3])

certs/sm2/gen-sm2-certs.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/usr/bin/env bash
22

3+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
4+
35
check_result(){
46
if [ $1 -ne 0 ]; then
57
echo "Failed at \"$2\", Abort"
@@ -9,6 +11,15 @@ check_result(){
911
fi
1012
}
1113

14+
# OpenSSL 3.x encodes SM2 keys using the generic id-ecPublicKey OID instead of
15+
# the SM2-specific OID. fix_sm2_spki.py patches the SubjectPublicKeyInfo
16+
# algorithm OID back to SM2 and re-signs the certificate.
17+
fix_sm2_oid(){
18+
# $1 = cert PEM, $2 = signing key PEM
19+
python3 "${SCRIPT_DIR}/fix_sm2_spki.py" "$1" "$2" "$1"
20+
check_result $? "Fix SM2 SPKI OID in $1"
21+
}
22+
1223
openssl pkey -in root-sm2-priv.pem -noout >/dev/null 2>&1
1324
if [ $? -ne 0 ]; then
1425
echo "OpenSSL does not support SM2"
@@ -29,6 +40,7 @@ check_result $? "Generate request"
2940
openssl x509 -req -in root-sm2.csr -days 1000 -extfile ../renewcerts/wolfssl.cnf -extensions ca_ecc_cert -signkey root-sm2-priv.pem -out root-sm2.pem
3041
check_result $? "Generate certificate"
3142
rm root-sm2.csr
43+
fix_sm2_oid root-sm2.pem root-sm2-priv.pem
3244

3345
openssl x509 -in root-sm2.pem -outform DER > root-sm2.der
3446
check_result $? "Convert to DER"
@@ -50,6 +62,7 @@ check_result $? "Generate request"
5062
openssl x509 -req -in ca-sm2.csr -days 1000 -extfile ../renewcerts/wolfssl.cnf -extensions ca_ecc_cert -CA root-sm2.pem -CAkey root-sm2-priv.pem -set_serial 01 -out ca-sm2.pem
5163
check_result $? "Generate certificate"
5264
rm ca-sm2.csr
65+
fix_sm2_oid ca-sm2.pem root-sm2-priv.pem
5366

5467
openssl x509 -in ca-sm2.pem -outform DER > ca-sm2.der
5568
check_result $? "Convert to DER"
@@ -71,6 +84,7 @@ check_result $? "Generate request"
7184
openssl x509 -req -in self-sm2.csr -days 1000 -extfile ../renewcerts/wolfssl.cnf -extensions ca_ecc_cert -signkey self-sm2-priv.pem -out self-sm2-cert.pem
7285
check_result $? "Generate certificate"
7386
rm self-sm2.csr
87+
fix_sm2_oid self-sm2-cert.pem self-sm2-priv.pem
7488

7589
openssl x509 -in self-sm2-cert.pem -text > tmp.pem
7690
check_result $? "Add text"
@@ -90,6 +104,7 @@ check_result $? "Generate request"
90104
openssl x509 -req -in server-sm2.csr -days 1000 -extfile ../renewcerts/wolfssl.cnf -extensions server_ecc -CA ca-sm2.pem -CAkey ca-sm2-priv.pem -set_serial 01 -out server-sm2-cert.pem
91105
check_result $? "Generate certificate"
92106
rm server-sm2.csr
107+
fix_sm2_oid server-sm2-cert.pem ca-sm2-priv.pem
93108

94109
openssl x509 -in server-sm2-cert.pem -outform DER > server-sm2-cert.der
95110
check_result $? "Convert to DER"
@@ -113,6 +128,7 @@ check_result $? "Generate request"
113128
openssl x509 -req -in client-sm2.csr -days 1000 -extfile ../renewcerts/wolfssl.cnf -extensions wolfssl_opts -signkey client-sm2-priv.pem -out client-sm2.pem
114129
check_result $? "Generate certificate"
115130
rm client-sm2.csr
131+
fix_sm2_oid client-sm2.pem client-sm2-priv.pem
116132

117133
openssl x509 -in client-sm2.pem -outform DER > client-sm2.der
118134
check_result $? "Convert to DER"

certs/sm2/root-sm2.der

1 Byte
Binary file not shown.

0 commit comments

Comments
 (0)