From 93ac3cf32c9df0ad515883ec49d8c3e0932b24df Mon Sep 17 00:00:00 2001 From: 13009 Date: Tue, 20 Feb 2024 13:30:33 +0800 Subject: [PATCH] sm text --- .../java/com/czcb/scfs/api/core/KeyText.java | 73 ++++++++++++ .../core/cipher/CertificateValidityTest.java | 9 +- .../http/client/ApacheHttpclientTest.java | 9 +- .../client/ApacheHttpclientTestProxy.java | 9 +- .../http/client/ApacheHttpclientTestv2.java | 9 +- .../http/client/ApacheHttpclientTestv3.java | 9 +- .../czcb/scfs/api/core/util/IOStreamTest.java | 18 +-- .../src/test/resources/io_test_data.text | 1 - .../resources/rsa_channel_certificate.pem | 23 ---- .../resources/rsa_channel_private_key.pem | 28 ----- .../java/com/czcb/scfs/api/rsa/KeyText.java | 93 +++++++++++++++ .../com/czcb/scfs/api/rsa/RsaPrivacyTest.java | 9 +- .../com/czcb/scfs/api/rsa/RsaProfileTest.java | 13 +-- .../resources/rsa_channel_certificate.pem | 23 ---- .../resources/rsa_channel_private_key.pem | 28 ----- .../com/czcb/scfs/api/service/KeyText.java | 94 +++++++++++++++ .../czcb/scfs/api/service/MockResponse.java | 8 +- .../test/resources/channel_certificate.pem | 21 ---- .../test/resources/channel_private_key.pem | 28 ----- .../java/com/czcb/scfs/api/sm/Sm2Signer.java | 2 +- .../java/com/czcb/scfs/api/sm/SMKeyText.java | 107 ++++++++++++++++++ .../com/czcb/scfs/api/sm/SmProfileTest.java | 91 ++++++++------- .../src/test/resources/certificate.pem | 17 --- .../src/test/resources/private_key.pem | 6 - .../spring/boot/starter/RsaConfiguration.java | 4 +- .../spring/boot/starter/SmConfiguration.java | 22 ++-- .../com/czcb/scfs/api/test/SMKeyText.java | 107 ++++++++++++++++++ 27 files changed, 567 insertions(+), 294 deletions(-) create mode 100644 scfs-api-core/src/test/java/com/czcb/scfs/api/core/KeyText.java delete mode 100644 scfs-api-core/src/test/resources/io_test_data.text delete mode 100644 scfs-api-core/src/test/resources/rsa_channel_certificate.pem delete mode 100644 scfs-api-core/src/test/resources/rsa_channel_private_key.pem create mode 100644 scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/KeyText.java delete mode 100644 scfs-api-rsa/src/test/resources/rsa_channel_certificate.pem delete mode 100644 scfs-api-rsa/src/test/resources/rsa_channel_private_key.pem create mode 100644 scfs-api-service/src/test/java/com/czcb/scfs/api/service/KeyText.java delete mode 100644 scfs-api-service/src/test/resources/channel_certificate.pem delete mode 100644 scfs-api-service/src/test/resources/channel_private_key.pem create mode 100644 scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SMKeyText.java delete mode 100644 scfs-api-sm/src/test/resources/certificate.pem delete mode 100644 scfs-api-sm/src/test/resources/private_key.pem create mode 100644 scfs-api-test/src/main/java/com/czcb/scfs/api/test/SMKeyText.java diff --git a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/KeyText.java b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/KeyText.java new file mode 100644 index 0000000..5caff16 --- /dev/null +++ b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/KeyText.java @@ -0,0 +1,73 @@ +package com.czcb.scfs.api.core; + +import com.czcb.scfs.api.core.util.PemFile; + +import java.security.PrivateKey; +import java.security.cert.X509Certificate; + +/** + * @author wangwei + * @date 2024/2/20 + */ +public final class KeyText { + public static final String PRIVATE_TEXT_RSA = "-----BEGIN PRIVATE KEY-----\n" + + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDwbOmleN4X6YD\n" + + "iTUk5tuFhhqJYGIdSBb7x14E5OCd/2UIxx8l/tF162rAlPeYquHM34mi1Ha0Ana9\n" + + "6ttMNMDMyq3TBUxq7n8H0pLU8fboCorU83owRj4Eqrfk7tG0cMgeUmrYbaTXPD5d\n" + + "lRvKdpFxN1UNRav+mYUb1OPxoHuJRxoeRGAm/RWC1nTj9UYeAQQKehb5FhWD3UBL\n" + + "Cxk0iXgPrfykkZDeLeUI9fA+dzEDnrHDmz+jt9fQnup3RVku7/n1DQQyCOUDOn24\n" + + "NGfBXciDeivJ3/bZ1SJy5t/4Hu6GyqyJKqP3Oe9UAbkbZWOnIu186R6e7NBk5n/+\n" + + "HgDf17CLAgMBAAECggEAOyoOoZEYxHdoJhZwlPwfKe57k7ypOr9gju1VObZxOt+H\n" + + "Sk1gWSv4Y6Loy1batG4lO7XuE+QSElrSR5k1eYVSJjM1sRsfWwxFIXifvzN4U+5n\n" + + "wm/qJK/+K4vrc4pIoDgcC6oON+Z/lTvUf5VC5oDKeYTnNFEz6Am/RMelsxA1diob\n" + + "SNSwPTPijqy0b63IHSWAbB+zmurRZPOSzy5lZ2F+xdYhnF+j9XprP4iJiHydvrgH\n" + + "RJbxwsiphjgPeqPSVSs5MTQ0zDumRkbMBANk/Y5rCGybBSGpW1BwXZjTp3jtY9Tr\n" + + "DmXDbzsiZWx/D1wFd0F+BhS6vg3dUkX63mSDOaTvKQKBgQDpLcwdAkhvWbRs03ev\n" + + "5/BgmgHO2iwJkAL6yyX9wox4NOYe1FInBht5Nc/ZC0mXy5E4Wmd1SGAoYt8R2vxo\n" + + "LnIyJnRE4iUKWxL87okKCDW4b3AaMTMZXyKmkMgMPDvpk6Odag5Ey2xpojb8TP7q\n" + + "QtZu5DWTkU2lR+2Z4qH8+DFC2QKBgQDW6k4guiR0ZP7Po1QLQWXwRfQU4WUlxaKp\n" + + "MEp6hsdKRN2MPbbPqtg4PoBpc1Hpvx2SX3YGAaRIwJtLGuoOq4TnVJ+9SKI5VDqT\n" + + "YcjE4UZm1DDmm1XYaCJKYeN2Swr2xl2VA6LJpHHZDLXC7YVshZ/53lJhPTbnBpIE\n" + + "0T+MBCIoAwKBgAtSS+zEpZuycU4vXkpOKp+mGpxef3DfayWeI3QUtBlKCDpK+Moo\n" + + "Q8E42aSiJaqXGa/ww8EwCGstkcMeLM8qIiVJNK/7guzjyyI4urKf/2u7DWhYJzD+\n" + + "K4KG2Q+vBQGsR29nLNYuQk9GrwDFBEN/h0XPEsLddTWnLmQgWtkbe9jRAoGBAIAj\n" + + "dW+37HJloTPl+v82//ORkeU9OlSaEND1lQKXB431n261gSEyiPaH9YJqGqXWqGgU\n" + + "eMc+BVjHVhAivPkANR7EavWtr+Okn8QuIkmY06QN0hY8+aMs+30D/l4Sgjf+r99g\n" + + "Kpg1bxftpxXRDqNUzLxrXQzTNb/rP/aVWGFAOalHAoGAPiW3cKvfTOLIS0PFxGOF\n" + + "EKQzr/TDGnKJNKeGJ25VOKPnq8RDX/Ik2+hNjdThOWApIgDQo4JtUMCxCDM7lRcu\n" + + "ne9B/UShSzd8uuZgHZVSFD+pfPJvyVpZ/ORHvrQqUAtveQgk7Cpp2tuvsixbBhdQ\n" + + "E6ZWsef5uyYdyjLp2C4cl2A=\n" + + "-----END PRIVATE KEY-----\n"; + + public static final String CERTIFICATE_TEXT_RSA = "-----BEGIN CERTIFICATE-----\n" + + "MIIDyzCCArOgAwIBAgIUBs3aqSytdZmDJQJ2R4RzMMF1YpEwDQYJKoZIhvcNAQEL\n" + + "BQAwgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcM\n" + + "CeadreW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgw\n" + + "FgYDVQQLDA/mlbDlrZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20u\n" + + "Y24wHhcNMjQwMjEzMDk1MjQwWhcNMzQwMjEwMDk1MjQwWjCBjTELMAkGA1UEBhMC\n" + + "Q04xEjAQBgNVBAgMCea1meaxn+ecgTESMBAGA1UEBwwJ5p2t5bee5biCMSEwHwYD\n" + + "VQQKDBjmtZnmsZ/nqKDlt57llYbkuJrpk7booYwxGDAWBgNVBAsMD+aVsOWtl+mH\n" + + "keiejemDqDEZMBcGA1UEAwwQc2Nmcy5jemNiLmNvbS5jbjCCASIwDQYJKoZIhvcN\n" + + "AQEBBQADggEPADCCAQoCggEBAMPBs6aV43hfpgOJNSTm24WGGolgYh1IFvvHXgTk\n" + + "4J3/ZQjHHyX+0XXrasCU95iq4czfiaLUdrQCdr3q20w0wMzKrdMFTGrufwfSktTx\n" + + "9ugKitTzejBGPgSqt+Tu0bRwyB5SathtpNc8Pl2VG8p2kXE3VQ1Fq/6ZhRvU4/Gg\n" + + "e4lHGh5EYCb9FYLWdOP1Rh4BBAp6FvkWFYPdQEsLGTSJeA+t/KSRkN4t5Qj18D53\n" + + "MQOescObP6O319Ce6ndFWS7v+fUNBDII5QM6fbg0Z8FdyIN6K8nf9tnVInLm3/ge\n" + + "7obKrIkqo/c571QBuRtlY6ci7XzpHp7s0GTmf/4eAN/XsIsCAwEAAaMhMB8wHQYD\n" + + "VR0OBBYEFPxZwIS1s2a+59+F4mEvMwf01exmMA0GCSqGSIb3DQEBCwUAA4IBAQBE\n" + + "5FuyVUFm4hRxsO8Jl412lxEvtMtgB3QT0mj0+SWVAp/Cb7Jh3yqkszmnx3CC64lB\n" + + "OzfU8rsQMu+R8NoBEUIO03vD9DhozYE67iUcmzwKil6IwedA8QxzL/UZpbf/1SqC\n" + + "Vf4/z0a2dZO7ys/WYPJh+bxsiB5UIfmhnNDIKQoOMrFEzkxz6KHpNXQGt0fj7ugd\n" + + "8HPSkDtYBoCluI9YfWeOazmVAVZxhpLSMi+6NzVwdXjOdKTgxAYMkXIdtPKLiC0z\n" + + "zycbiBuKN7tL/NtHfpYQ1noakUahMzw1XvUNTs47PIaDgqG+mjZR3hRRKQq3iNHy\n" + + "pwDwvSima1XX0KnrzLg+\n" + + "-----END CERTIFICATE-----\n"; + + public static PrivateKey loadTestPrivateKeyRSA() { + return PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_RSA); + } + + public static X509Certificate loadTestRSA() { + return PemFile.loadX509FromString(CERTIFICATE_TEXT_RSA); + } +} diff --git a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/cipher/CertificateValidityTest.java b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/cipher/CertificateValidityTest.java index e00a3d2..aa4377b 100644 --- a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/cipher/CertificateValidityTest.java +++ b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/cipher/CertificateValidityTest.java @@ -1,6 +1,6 @@ package com.czcb.scfs.api.core.cipher; -import com.czcb.scfs.api.core.util.PemFile; +import com.czcb.scfs.api.core.KeyText; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -16,9 +16,7 @@ class CertificateValidityTest { Assertions.assertNull(validity.getLongestCertificate(null)); ConcurrentHashMap certificates = new ConcurrentHashMap<>(); - X509Certificate certificate = PemFile.loadX509FromAbsolutePath( - ClassLoader.getSystemResource("rsa_channel_certificate.pem").getPath()); - + X509Certificate certificate = KeyText.loadTestRSA(); certificates.put(certificate.getSerialNumber(), certificate); Assertions.assertNotNull(validity.getLongestCertificate(certificates)); } @@ -26,7 +24,6 @@ class CertificateValidityTest { @Test void withinValidity() { CertificateValidity validity = new CertificateValidity(); - Assertions.assertTrue(validity.withinValidity(PemFile.loadX509FromAbsolutePath( - ClassLoader.getSystemResource("rsa_channel_certificate.pem").getPath()))); + Assertions.assertTrue(validity.withinValidity(KeyText.loadTestRSA())); } } \ No newline at end of file diff --git a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTest.java b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTest.java index ec109e9..68a2e8f 100644 --- a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTest.java +++ b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTest.java @@ -5,7 +5,6 @@ import com.czcb.scfs.api.core.cipher.*; import com.czcb.scfs.api.core.http.*; import com.czcb.scfs.api.core.util.DateTimes; import com.czcb.scfs.api.core.util.Nonce; -import com.czcb.scfs.api.core.util.PemFile; import com.czcb.scfs.api.core.util.Strings; import com.google.gson.Gson; import org.junit.jupiter.api.Assertions; @@ -17,7 +16,6 @@ import org.mockserver.junit.jupiter.MockServerExtension; import org.mockserver.junit.jupiter.MockServerSettings; import java.io.ByteArrayOutputStream; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -41,11 +39,8 @@ class ApacheHttpclientTest { } private Profile profile(boolean compressionEnabled) { - URL url = ClassLoader.getSystemResource("rsa_channel_private_key.pem"); - PrivateKey privateKey = PemFile.loadPrivateKeyFromAbsolutePath(url.getPath()); - - URL certificatesurl = ClassLoader.getSystemResource("rsa_channel_certificate.pem"); - X509Certificate certificate = PemFile.loadX509FromAbsolutePath(certificatesurl.getPath()); + PrivateKey privateKey = KeyText.loadTestPrivateKeyRSA(); + X509Certificate certificate = KeyText.loadTestRSA(); List list = new ArrayList<>(); list.add(certificate); CertificateProvider certificateProvider = new LocalCertificateProvider(list); diff --git a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestProxy.java b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestProxy.java index d8adc31..12eda88 100644 --- a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestProxy.java +++ b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestProxy.java @@ -6,7 +6,6 @@ import com.czcb.scfs.api.core.exception.TimestampException; import com.czcb.scfs.api.core.http.*; import com.czcb.scfs.api.core.util.DateTimes; import com.czcb.scfs.api.core.util.Nonce; -import com.czcb.scfs.api.core.util.PemFile; import com.czcb.scfs.api.core.util.Strings; import com.google.gson.Gson; import org.junit.jupiter.api.Assertions; @@ -17,7 +16,6 @@ import org.mockserver.client.MockServerClient; import org.mockserver.junit.jupiter.MockServerExtension; import org.mockserver.junit.jupiter.MockServerSettings; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -39,11 +37,8 @@ class ApacheHttpclientTestProxy { } private Profile profile() { - URL url = ClassLoader.getSystemResource("rsa_channel_private_key.pem"); - PrivateKey privateKey = PemFile.loadPrivateKeyFromAbsolutePath(url.getPath()); - - URL certificatesurl = ClassLoader.getSystemResource("rsa_channel_certificate.pem"); - X509Certificate certificate = PemFile.loadX509FromAbsolutePath(certificatesurl.getPath()); + PrivateKey privateKey = KeyText.loadTestPrivateKeyRSA(); + X509Certificate certificate = KeyText.loadTestRSA(); List list = new ArrayList<>(); list.add(certificate); CertificateProvider certificateProvider = new LocalCertificateProvider(list); diff --git a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv2.java b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv2.java index e980994..69d28e8 100644 --- a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv2.java +++ b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv2.java @@ -6,7 +6,6 @@ import com.czcb.scfs.api.core.exception.DecryptException; import com.czcb.scfs.api.core.http.*; import com.czcb.scfs.api.core.util.DateTimes; import com.czcb.scfs.api.core.util.Nonce; -import com.czcb.scfs.api.core.util.PemFile; import com.czcb.scfs.api.core.util.Strings; import com.google.gson.Gson; import org.junit.jupiter.api.Assertions; @@ -17,7 +16,6 @@ import org.mockserver.client.MockServerClient; import org.mockserver.junit.jupiter.MockServerExtension; import org.mockserver.junit.jupiter.MockServerSettings; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -40,11 +38,8 @@ class ApacheHttpclientTestv2 { } private Profile profile() { - URL url = ClassLoader.getSystemResource("rsa_channel_private_key.pem"); - PrivateKey privateKey = PemFile.loadPrivateKeyFromAbsolutePath(url.getPath()); - - URL certificatesurl = ClassLoader.getSystemResource("rsa_channel_certificate.pem"); - X509Certificate certificate = PemFile.loadX509FromAbsolutePath(certificatesurl.getPath()); + PrivateKey privateKey = KeyText.loadTestPrivateKeyRSA(); + X509Certificate certificate = KeyText.loadTestRSA(); List list = new ArrayList<>(); list.add(certificate); CertificateProvider certificateProvider = new LocalCertificateProvider(list); diff --git a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv3.java b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv3.java index c0f44a8..cf4c74e 100644 --- a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv3.java +++ b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/http/client/ApacheHttpclientTestv3.java @@ -7,7 +7,6 @@ import com.czcb.scfs.api.core.exception.TimestampException; import com.czcb.scfs.api.core.http.*; import com.czcb.scfs.api.core.util.DateTimes; import com.czcb.scfs.api.core.util.Nonce; -import com.czcb.scfs.api.core.util.PemFile; import com.czcb.scfs.api.core.util.Strings; import com.google.gson.Gson; import org.junit.jupiter.api.Assertions; @@ -18,7 +17,6 @@ import org.mockserver.client.MockServerClient; import org.mockserver.junit.jupiter.MockServerExtension; import org.mockserver.junit.jupiter.MockServerSettings; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -40,11 +38,8 @@ class ApacheHttpclientTestv3 { } private Profile profile() { - URL url = ClassLoader.getSystemResource("rsa_channel_private_key.pem"); - PrivateKey privateKey = PemFile.loadPrivateKeyFromAbsolutePath(url.getPath()); - - URL certificatesurl = ClassLoader.getSystemResource("rsa_channel_certificate.pem"); - X509Certificate certificate = PemFile.loadX509FromAbsolutePath(certificatesurl.getPath()); + PrivateKey privateKey = KeyText.loadTestPrivateKeyRSA(); + X509Certificate certificate = KeyText.loadTestRSA(); List list = new ArrayList<>(); list.add(certificate); CertificateProvider certificateProvider = new LocalCertificateProvider(list); diff --git a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/util/IOStreamTest.java b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/util/IOStreamTest.java index edf043d..e2596dd 100644 --- a/scfs-api-core/src/test/java/com/czcb/scfs/api/core/util/IOStreamTest.java +++ b/scfs-api-core/src/test/java/com/czcb/scfs/api/core/util/IOStreamTest.java @@ -3,10 +3,7 @@ package com.czcb.scfs.api.core.util; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; +import java.io.*; import java.nio.charset.StandardCharsets; class IOStreamTest { @@ -29,9 +26,16 @@ class IOStreamTest { @Test void loadStringFromPath() throws IOException { - URL url = ClassLoader.getSystemResource("io_test_data.text"); - String data = IOStream.loadStringFromPath(url.getPath()); - Assertions.assertEquals("1234567890", data); + File file = File.createTempFile("Test.", "io_test_data.text"); + try (FileOutputStream stream = new FileOutputStream(file)) { + stream.write("1234567890".getBytes(StandardCharsets.UTF_8)); + stream.flush(); + + String data = IOStream.loadStringFromPath(file.getPath()); + Assertions.assertEquals("1234567890", data); + } finally { + file.delete(); + } } @Test diff --git a/scfs-api-core/src/test/resources/io_test_data.text b/scfs-api-core/src/test/resources/io_test_data.text deleted file mode 100644 index 6a537b5..0000000 --- a/scfs-api-core/src/test/resources/io_test_data.text +++ /dev/null @@ -1 +0,0 @@ -1234567890 \ No newline at end of file diff --git a/scfs-api-core/src/test/resources/rsa_channel_certificate.pem b/scfs-api-core/src/test/resources/rsa_channel_certificate.pem deleted file mode 100644 index cd40614..0000000 --- a/scfs-api-core/src/test/resources/rsa_channel_certificate.pem +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIUBs3aqSytdZmDJQJ2R4RzMMF1YpEwDQYJKoZIhvcNAQEL -BQAwgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcM -CeadreW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgw -FgYDVQQLDA/mlbDlrZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20u -Y24wHhcNMjQwMjEzMDk1MjQwWhcNMzQwMjEwMDk1MjQwWjCBjTELMAkGA1UEBhMC -Q04xEjAQBgNVBAgMCea1meaxn+ecgTESMBAGA1UEBwwJ5p2t5bee5biCMSEwHwYD -VQQKDBjmtZnmsZ/nqKDlt57llYbkuJrpk7booYwxGDAWBgNVBAsMD+aVsOWtl+mH -keiejemDqDEZMBcGA1UEAwwQc2Nmcy5jemNiLmNvbS5jbjCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAMPBs6aV43hfpgOJNSTm24WGGolgYh1IFvvHXgTk -4J3/ZQjHHyX+0XXrasCU95iq4czfiaLUdrQCdr3q20w0wMzKrdMFTGrufwfSktTx -9ugKitTzejBGPgSqt+Tu0bRwyB5SathtpNc8Pl2VG8p2kXE3VQ1Fq/6ZhRvU4/Gg -e4lHGh5EYCb9FYLWdOP1Rh4BBAp6FvkWFYPdQEsLGTSJeA+t/KSRkN4t5Qj18D53 -MQOescObP6O319Ce6ndFWS7v+fUNBDII5QM6fbg0Z8FdyIN6K8nf9tnVInLm3/ge -7obKrIkqo/c571QBuRtlY6ci7XzpHp7s0GTmf/4eAN/XsIsCAwEAAaMhMB8wHQYD -VR0OBBYEFPxZwIS1s2a+59+F4mEvMwf01exmMA0GCSqGSIb3DQEBCwUAA4IBAQBE -5FuyVUFm4hRxsO8Jl412lxEvtMtgB3QT0mj0+SWVAp/Cb7Jh3yqkszmnx3CC64lB -OzfU8rsQMu+R8NoBEUIO03vD9DhozYE67iUcmzwKil6IwedA8QxzL/UZpbf/1SqC -Vf4/z0a2dZO7ys/WYPJh+bxsiB5UIfmhnNDIKQoOMrFEzkxz6KHpNXQGt0fj7ugd -8HPSkDtYBoCluI9YfWeOazmVAVZxhpLSMi+6NzVwdXjOdKTgxAYMkXIdtPKLiC0z -zycbiBuKN7tL/NtHfpYQ1noakUahMzw1XvUNTs47PIaDgqG+mjZR3hRRKQq3iNHy -pwDwvSima1XX0KnrzLg+ ------END CERTIFICATE----- diff --git a/scfs-api-core/src/test/resources/rsa_channel_private_key.pem b/scfs-api-core/src/test/resources/rsa_channel_private_key.pem deleted file mode 100644 index dd32f7a..0000000 --- a/scfs-api-core/src/test/resources/rsa_channel_private_key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDwbOmleN4X6YD -iTUk5tuFhhqJYGIdSBb7x14E5OCd/2UIxx8l/tF162rAlPeYquHM34mi1Ha0Ana9 -6ttMNMDMyq3TBUxq7n8H0pLU8fboCorU83owRj4Eqrfk7tG0cMgeUmrYbaTXPD5d -lRvKdpFxN1UNRav+mYUb1OPxoHuJRxoeRGAm/RWC1nTj9UYeAQQKehb5FhWD3UBL -Cxk0iXgPrfykkZDeLeUI9fA+dzEDnrHDmz+jt9fQnup3RVku7/n1DQQyCOUDOn24 -NGfBXciDeivJ3/bZ1SJy5t/4Hu6GyqyJKqP3Oe9UAbkbZWOnIu186R6e7NBk5n/+ -HgDf17CLAgMBAAECggEAOyoOoZEYxHdoJhZwlPwfKe57k7ypOr9gju1VObZxOt+H -Sk1gWSv4Y6Loy1batG4lO7XuE+QSElrSR5k1eYVSJjM1sRsfWwxFIXifvzN4U+5n -wm/qJK/+K4vrc4pIoDgcC6oON+Z/lTvUf5VC5oDKeYTnNFEz6Am/RMelsxA1diob -SNSwPTPijqy0b63IHSWAbB+zmurRZPOSzy5lZ2F+xdYhnF+j9XprP4iJiHydvrgH -RJbxwsiphjgPeqPSVSs5MTQ0zDumRkbMBANk/Y5rCGybBSGpW1BwXZjTp3jtY9Tr -DmXDbzsiZWx/D1wFd0F+BhS6vg3dUkX63mSDOaTvKQKBgQDpLcwdAkhvWbRs03ev -5/BgmgHO2iwJkAL6yyX9wox4NOYe1FInBht5Nc/ZC0mXy5E4Wmd1SGAoYt8R2vxo -LnIyJnRE4iUKWxL87okKCDW4b3AaMTMZXyKmkMgMPDvpk6Odag5Ey2xpojb8TP7q -QtZu5DWTkU2lR+2Z4qH8+DFC2QKBgQDW6k4guiR0ZP7Po1QLQWXwRfQU4WUlxaKp -MEp6hsdKRN2MPbbPqtg4PoBpc1Hpvx2SX3YGAaRIwJtLGuoOq4TnVJ+9SKI5VDqT -YcjE4UZm1DDmm1XYaCJKYeN2Swr2xl2VA6LJpHHZDLXC7YVshZ/53lJhPTbnBpIE -0T+MBCIoAwKBgAtSS+zEpZuycU4vXkpOKp+mGpxef3DfayWeI3QUtBlKCDpK+Moo -Q8E42aSiJaqXGa/ww8EwCGstkcMeLM8qIiVJNK/7guzjyyI4urKf/2u7DWhYJzD+ -K4KG2Q+vBQGsR29nLNYuQk9GrwDFBEN/h0XPEsLddTWnLmQgWtkbe9jRAoGBAIAj -dW+37HJloTPl+v82//ORkeU9OlSaEND1lQKXB431n261gSEyiPaH9YJqGqXWqGgU -eMc+BVjHVhAivPkANR7EavWtr+Okn8QuIkmY06QN0hY8+aMs+30D/l4Sgjf+r99g -Kpg1bxftpxXRDqNUzLxrXQzTNb/rP/aVWGFAOalHAoGAPiW3cKvfTOLIS0PFxGOF -EKQzr/TDGnKJNKeGJ25VOKPnq8RDX/Ik2+hNjdThOWApIgDQo4JtUMCxCDM7lRcu -ne9B/UShSzd8uuZgHZVSFD+pfPJvyVpZ/ORHvrQqUAtveQgk7Cpp2tuvsixbBhdQ -E6ZWsef5uyYdyjLp2C4cl2A= ------END PRIVATE KEY----- diff --git a/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/KeyText.java b/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/KeyText.java new file mode 100644 index 0000000..363ca0a --- /dev/null +++ b/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/KeyText.java @@ -0,0 +1,93 @@ +package com.czcb.scfs.api.rsa; + +import com.czcb.scfs.api.core.util.PemFile; + +import java.security.PrivateKey; +import java.security.cert.X509Certificate; + +/** + * @author wangwei + * @date 2024/2/20 + */ +public final class KeyText { + public static final String PRIVATE_TEXT_SM2 = "-----BEGIN PRIVATE KEY-----\n" + + "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgEbNA+Qs8+nMspo7ikBiR9KRl8nc2\n" + + "DL337j+2lmK9McCgCgYIKoEcz1UBgi2hRANCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo\n" + + "/AjGWv28USDdp9nmBzj2Y+ts+iFbt5vTOoO+8z4L5ybEnKJ4\n" + + "-----END PRIVATE KEY-----"; + + public static final String CERTIFICATE_TEXT_SM2 = "-----BEGIN CERTIFICATE-----\n" + + "MIICKTCCAc+gAwIBAgIhALR78lDRPW3HLShp00DN+Lgw8s/TILZSWGw9SGH4bKNVMAoGCCqBHM9V\n" + + "AYN1MIGNMQswCQYDVQQGEwJDTjESMBAGA1UECAwJ5rWZ5rGf55yBMRIwEAYDVQQHDAnmna3lt57l\n" + + "uIIxITAfBgNVBAoMGOa1meaxn+eooOW3nuWVhuS4mumTtuihjDEYMBYGA1UECwwP5pWw5a2X6YeR\n" + + "6J6N6YOoMRkwFwYDVQQDDBBzY2ZzLmN6Y2IuY29tLmNuMB4XDTI0MDIyMDAzMzgxOVoXDTI5MDIy\n" + + "MDAzMzgxOVowgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcMCead\n" + + "reW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgwFgYDVQQLDA/mlbDl\n" + + "rZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20uY24wWTATBgcqhkjOPQIBBggqgRzP\n" + + "VQGCLQNCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo/AjGWv28USDdp9nmBzj2Y+ts+iFb\n" + + "t5vTOoO+8z4L5ybEnKJ4MAoGCCqBHM9VAYN1A0gAMEUCIQCx+TJJMHj5BZuylFt5pJaFrvJj9NaH\n" + + "ggiLQndrrMctYgIgdhZLUVIZdVdmR0zMv3OWmeiI71B1d/80XLkISQF/qvg=\n" + + "-----END CERTIFICATE-----"; + + + public static final String PRIVATE_TEXT_RSA = "-----BEGIN PRIVATE KEY-----\n" + + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDwbOmleN4X6YD\n" + + "iTUk5tuFhhqJYGIdSBb7x14E5OCd/2UIxx8l/tF162rAlPeYquHM34mi1Ha0Ana9\n" + + "6ttMNMDMyq3TBUxq7n8H0pLU8fboCorU83owRj4Eqrfk7tG0cMgeUmrYbaTXPD5d\n" + + "lRvKdpFxN1UNRav+mYUb1OPxoHuJRxoeRGAm/RWC1nTj9UYeAQQKehb5FhWD3UBL\n" + + "Cxk0iXgPrfykkZDeLeUI9fA+dzEDnrHDmz+jt9fQnup3RVku7/n1DQQyCOUDOn24\n" + + "NGfBXciDeivJ3/bZ1SJy5t/4Hu6GyqyJKqP3Oe9UAbkbZWOnIu186R6e7NBk5n/+\n" + + "HgDf17CLAgMBAAECggEAOyoOoZEYxHdoJhZwlPwfKe57k7ypOr9gju1VObZxOt+H\n" + + "Sk1gWSv4Y6Loy1batG4lO7XuE+QSElrSR5k1eYVSJjM1sRsfWwxFIXifvzN4U+5n\n" + + "wm/qJK/+K4vrc4pIoDgcC6oON+Z/lTvUf5VC5oDKeYTnNFEz6Am/RMelsxA1diob\n" + + "SNSwPTPijqy0b63IHSWAbB+zmurRZPOSzy5lZ2F+xdYhnF+j9XprP4iJiHydvrgH\n" + + "RJbxwsiphjgPeqPSVSs5MTQ0zDumRkbMBANk/Y5rCGybBSGpW1BwXZjTp3jtY9Tr\n" + + "DmXDbzsiZWx/D1wFd0F+BhS6vg3dUkX63mSDOaTvKQKBgQDpLcwdAkhvWbRs03ev\n" + + "5/BgmgHO2iwJkAL6yyX9wox4NOYe1FInBht5Nc/ZC0mXy5E4Wmd1SGAoYt8R2vxo\n" + + "LnIyJnRE4iUKWxL87okKCDW4b3AaMTMZXyKmkMgMPDvpk6Odag5Ey2xpojb8TP7q\n" + + "QtZu5DWTkU2lR+2Z4qH8+DFC2QKBgQDW6k4guiR0ZP7Po1QLQWXwRfQU4WUlxaKp\n" + + "MEp6hsdKRN2MPbbPqtg4PoBpc1Hpvx2SX3YGAaRIwJtLGuoOq4TnVJ+9SKI5VDqT\n" + + "YcjE4UZm1DDmm1XYaCJKYeN2Swr2xl2VA6LJpHHZDLXC7YVshZ/53lJhPTbnBpIE\n" + + "0T+MBCIoAwKBgAtSS+zEpZuycU4vXkpOKp+mGpxef3DfayWeI3QUtBlKCDpK+Moo\n" + + "Q8E42aSiJaqXGa/ww8EwCGstkcMeLM8qIiVJNK/7guzjyyI4urKf/2u7DWhYJzD+\n" + + "K4KG2Q+vBQGsR29nLNYuQk9GrwDFBEN/h0XPEsLddTWnLmQgWtkbe9jRAoGBAIAj\n" + + "dW+37HJloTPl+v82//ORkeU9OlSaEND1lQKXB431n261gSEyiPaH9YJqGqXWqGgU\n" + + "eMc+BVjHVhAivPkANR7EavWtr+Okn8QuIkmY06QN0hY8+aMs+30D/l4Sgjf+r99g\n" + + "Kpg1bxftpxXRDqNUzLxrXQzTNb/rP/aVWGFAOalHAoGAPiW3cKvfTOLIS0PFxGOF\n" + + "EKQzr/TDGnKJNKeGJ25VOKPnq8RDX/Ik2+hNjdThOWApIgDQo4JtUMCxCDM7lRcu\n" + + "ne9B/UShSzd8uuZgHZVSFD+pfPJvyVpZ/ORHvrQqUAtveQgk7Cpp2tuvsixbBhdQ\n" + + "E6ZWsef5uyYdyjLp2C4cl2A=\n" + + "-----END PRIVATE KEY-----\n"; + + public static final String CERTIFICATE_TEXT_RSA = "-----BEGIN CERTIFICATE-----\n" + + "MIIDyzCCArOgAwIBAgIUBs3aqSytdZmDJQJ2R4RzMMF1YpEwDQYJKoZIhvcNAQEL\n" + + "BQAwgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcM\n" + + "CeadreW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgw\n" + + "FgYDVQQLDA/mlbDlrZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20u\n" + + "Y24wHhcNMjQwMjEzMDk1MjQwWhcNMzQwMjEwMDk1MjQwWjCBjTELMAkGA1UEBhMC\n" + + "Q04xEjAQBgNVBAgMCea1meaxn+ecgTESMBAGA1UEBwwJ5p2t5bee5biCMSEwHwYD\n" + + "VQQKDBjmtZnmsZ/nqKDlt57llYbkuJrpk7booYwxGDAWBgNVBAsMD+aVsOWtl+mH\n" + + "keiejemDqDEZMBcGA1UEAwwQc2Nmcy5jemNiLmNvbS5jbjCCASIwDQYJKoZIhvcN\n" + + "AQEBBQADggEPADCCAQoCggEBAMPBs6aV43hfpgOJNSTm24WGGolgYh1IFvvHXgTk\n" + + "4J3/ZQjHHyX+0XXrasCU95iq4czfiaLUdrQCdr3q20w0wMzKrdMFTGrufwfSktTx\n" + + "9ugKitTzejBGPgSqt+Tu0bRwyB5SathtpNc8Pl2VG8p2kXE3VQ1Fq/6ZhRvU4/Gg\n" + + "e4lHGh5EYCb9FYLWdOP1Rh4BBAp6FvkWFYPdQEsLGTSJeA+t/KSRkN4t5Qj18D53\n" + + "MQOescObP6O319Ce6ndFWS7v+fUNBDII5QM6fbg0Z8FdyIN6K8nf9tnVInLm3/ge\n" + + "7obKrIkqo/c571QBuRtlY6ci7XzpHp7s0GTmf/4eAN/XsIsCAwEAAaMhMB8wHQYD\n" + + "VR0OBBYEFPxZwIS1s2a+59+F4mEvMwf01exmMA0GCSqGSIb3DQEBCwUAA4IBAQBE\n" + + "5FuyVUFm4hRxsO8Jl412lxEvtMtgB3QT0mj0+SWVAp/Cb7Jh3yqkszmnx3CC64lB\n" + + "OzfU8rsQMu+R8NoBEUIO03vD9DhozYE67iUcmzwKil6IwedA8QxzL/UZpbf/1SqC\n" + + "Vf4/z0a2dZO7ys/WYPJh+bxsiB5UIfmhnNDIKQoOMrFEzkxz6KHpNXQGt0fj7ugd\n" + + "8HPSkDtYBoCluI9YfWeOazmVAVZxhpLSMi+6NzVwdXjOdKTgxAYMkXIdtPKLiC0z\n" + + "zycbiBuKN7tL/NtHfpYQ1noakUahMzw1XvUNTs47PIaDgqG+mjZR3hRRKQq3iNHy\n" + + "pwDwvSima1XX0KnrzLg+\n" + + "-----END CERTIFICATE-----\n"; + + public static PrivateKey loadTestPrivateKeyRSA() { + return PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_RSA); + } + + public static X509Certificate loadTestRSA() { + return PemFile.loadX509FromString(CERTIFICATE_TEXT_RSA); + } +} diff --git a/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaPrivacyTest.java b/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaPrivacyTest.java index 7c79b9d..f596d72 100644 --- a/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaPrivacyTest.java +++ b/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaPrivacyTest.java @@ -4,11 +4,9 @@ import com.czcb.scfs.api.core.cipher.LocalCertificateProvider; import com.czcb.scfs.api.core.cipher.PrivacyDecryptor; import com.czcb.scfs.api.core.cipher.PrivacyEncryptor; import com.czcb.scfs.api.core.cipher.SecretCipher; -import com.czcb.scfs.api.core.util.PemFile; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -20,12 +18,9 @@ class RsaPrivacyTest { String text = "123456789PrivacyDecryptorPrivacyDecryptorPrivacyDecryptor"; static { - URL url = ClassLoader.getSystemResource("rsa_channel_private_key.pem"); - PrivateKey key = PemFile.loadPrivateKeyFromAbsolutePath(url.getPath()); - - URL certificatesurl = ClassLoader.getSystemResource("rsa_channel_certificate.pem"); + PrivateKey key = KeyText.loadTestPrivateKeyRSA(); List certificates = new ArrayList<>(); - certificates.add(PemFile.loadX509FromAbsolutePath(certificatesurl.getPath())); + certificates.add(KeyText.loadTestRSA()); LocalCertificateProvider provider = new LocalCertificateProvider(certificates); privacy = new RsaPrivacy(key, provider); } diff --git a/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaProfileTest.java b/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaProfileTest.java index 59a01e6..6a05862 100644 --- a/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaProfileTest.java +++ b/scfs-api-rsa/src/test/java/com/czcb/scfs/api/rsa/RsaProfileTest.java @@ -1,11 +1,9 @@ package com.czcb.scfs.api.rsa; import com.czcb.scfs.api.core.DefaultChannel; -import com.czcb.scfs.api.core.util.PemFile; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -14,11 +12,8 @@ class RsaProfileTest { @Test void testRsaProfile() { - URL url = ClassLoader.getSystemResource("rsa_channel_private_key.pem"); - PrivateKey key = PemFile.loadPrivateKeyFromAbsolutePath(url.getPath()); - - URL certificatesurl = ClassLoader.getSystemResource("rsa_channel_certificate.pem"); - X509Certificate certificate = PemFile.loadX509FromAbsolutePath(certificatesurl.getPath()); + PrivateKey key = KeyText.loadTestPrivateKeyRSA(); + X509Certificate certificate = KeyText.loadTestRSA(); RsaProfile profile = new RsaProfile.Builder() .channel(new DefaultChannel.Builder() @@ -52,8 +47,8 @@ class RsaProfileTest { .channelNo("0000") .appNo("100001") .build()) - .privateKey(url.getPath()) - .addCertificate(certificatesurl.getPath()) + .privateKey(key) + .addCertificate(certificate) .build(); encrypt = profile.getPrivacy().getSecretCipher().encrypt(secretKey.getBytes(StandardCharsets.UTF_8), text.getBytes(StandardCharsets.UTF_8)); diff --git a/scfs-api-rsa/src/test/resources/rsa_channel_certificate.pem b/scfs-api-rsa/src/test/resources/rsa_channel_certificate.pem deleted file mode 100644 index cd40614..0000000 --- a/scfs-api-rsa/src/test/resources/rsa_channel_certificate.pem +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDyzCCArOgAwIBAgIUBs3aqSytdZmDJQJ2R4RzMMF1YpEwDQYJKoZIhvcNAQEL -BQAwgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcM -CeadreW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgw -FgYDVQQLDA/mlbDlrZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20u -Y24wHhcNMjQwMjEzMDk1MjQwWhcNMzQwMjEwMDk1MjQwWjCBjTELMAkGA1UEBhMC -Q04xEjAQBgNVBAgMCea1meaxn+ecgTESMBAGA1UEBwwJ5p2t5bee5biCMSEwHwYD -VQQKDBjmtZnmsZ/nqKDlt57llYbkuJrpk7booYwxGDAWBgNVBAsMD+aVsOWtl+mH -keiejemDqDEZMBcGA1UEAwwQc2Nmcy5jemNiLmNvbS5jbjCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAMPBs6aV43hfpgOJNSTm24WGGolgYh1IFvvHXgTk -4J3/ZQjHHyX+0XXrasCU95iq4czfiaLUdrQCdr3q20w0wMzKrdMFTGrufwfSktTx -9ugKitTzejBGPgSqt+Tu0bRwyB5SathtpNc8Pl2VG8p2kXE3VQ1Fq/6ZhRvU4/Gg -e4lHGh5EYCb9FYLWdOP1Rh4BBAp6FvkWFYPdQEsLGTSJeA+t/KSRkN4t5Qj18D53 -MQOescObP6O319Ce6ndFWS7v+fUNBDII5QM6fbg0Z8FdyIN6K8nf9tnVInLm3/ge -7obKrIkqo/c571QBuRtlY6ci7XzpHp7s0GTmf/4eAN/XsIsCAwEAAaMhMB8wHQYD -VR0OBBYEFPxZwIS1s2a+59+F4mEvMwf01exmMA0GCSqGSIb3DQEBCwUAA4IBAQBE -5FuyVUFm4hRxsO8Jl412lxEvtMtgB3QT0mj0+SWVAp/Cb7Jh3yqkszmnx3CC64lB -OzfU8rsQMu+R8NoBEUIO03vD9DhozYE67iUcmzwKil6IwedA8QxzL/UZpbf/1SqC -Vf4/z0a2dZO7ys/WYPJh+bxsiB5UIfmhnNDIKQoOMrFEzkxz6KHpNXQGt0fj7ugd -8HPSkDtYBoCluI9YfWeOazmVAVZxhpLSMi+6NzVwdXjOdKTgxAYMkXIdtPKLiC0z -zycbiBuKN7tL/NtHfpYQ1noakUahMzw1XvUNTs47PIaDgqG+mjZR3hRRKQq3iNHy -pwDwvSima1XX0KnrzLg+ ------END CERTIFICATE----- diff --git a/scfs-api-rsa/src/test/resources/rsa_channel_private_key.pem b/scfs-api-rsa/src/test/resources/rsa_channel_private_key.pem deleted file mode 100644 index dd32f7a..0000000 --- a/scfs-api-rsa/src/test/resources/rsa_channel_private_key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDwbOmleN4X6YD -iTUk5tuFhhqJYGIdSBb7x14E5OCd/2UIxx8l/tF162rAlPeYquHM34mi1Ha0Ana9 -6ttMNMDMyq3TBUxq7n8H0pLU8fboCorU83owRj4Eqrfk7tG0cMgeUmrYbaTXPD5d -lRvKdpFxN1UNRav+mYUb1OPxoHuJRxoeRGAm/RWC1nTj9UYeAQQKehb5FhWD3UBL -Cxk0iXgPrfykkZDeLeUI9fA+dzEDnrHDmz+jt9fQnup3RVku7/n1DQQyCOUDOn24 -NGfBXciDeivJ3/bZ1SJy5t/4Hu6GyqyJKqP3Oe9UAbkbZWOnIu186R6e7NBk5n/+ -HgDf17CLAgMBAAECggEAOyoOoZEYxHdoJhZwlPwfKe57k7ypOr9gju1VObZxOt+H -Sk1gWSv4Y6Loy1batG4lO7XuE+QSElrSR5k1eYVSJjM1sRsfWwxFIXifvzN4U+5n -wm/qJK/+K4vrc4pIoDgcC6oON+Z/lTvUf5VC5oDKeYTnNFEz6Am/RMelsxA1diob -SNSwPTPijqy0b63IHSWAbB+zmurRZPOSzy5lZ2F+xdYhnF+j9XprP4iJiHydvrgH -RJbxwsiphjgPeqPSVSs5MTQ0zDumRkbMBANk/Y5rCGybBSGpW1BwXZjTp3jtY9Tr -DmXDbzsiZWx/D1wFd0F+BhS6vg3dUkX63mSDOaTvKQKBgQDpLcwdAkhvWbRs03ev -5/BgmgHO2iwJkAL6yyX9wox4NOYe1FInBht5Nc/ZC0mXy5E4Wmd1SGAoYt8R2vxo -LnIyJnRE4iUKWxL87okKCDW4b3AaMTMZXyKmkMgMPDvpk6Odag5Ey2xpojb8TP7q -QtZu5DWTkU2lR+2Z4qH8+DFC2QKBgQDW6k4guiR0ZP7Po1QLQWXwRfQU4WUlxaKp -MEp6hsdKRN2MPbbPqtg4PoBpc1Hpvx2SX3YGAaRIwJtLGuoOq4TnVJ+9SKI5VDqT -YcjE4UZm1DDmm1XYaCJKYeN2Swr2xl2VA6LJpHHZDLXC7YVshZ/53lJhPTbnBpIE -0T+MBCIoAwKBgAtSS+zEpZuycU4vXkpOKp+mGpxef3DfayWeI3QUtBlKCDpK+Moo -Q8E42aSiJaqXGa/ww8EwCGstkcMeLM8qIiVJNK/7guzjyyI4urKf/2u7DWhYJzD+ -K4KG2Q+vBQGsR29nLNYuQk9GrwDFBEN/h0XPEsLddTWnLmQgWtkbe9jRAoGBAIAj -dW+37HJloTPl+v82//ORkeU9OlSaEND1lQKXB431n261gSEyiPaH9YJqGqXWqGgU -eMc+BVjHVhAivPkANR7EavWtr+Okn8QuIkmY06QN0hY8+aMs+30D/l4Sgjf+r99g -Kpg1bxftpxXRDqNUzLxrXQzTNb/rP/aVWGFAOalHAoGAPiW3cKvfTOLIS0PFxGOF -EKQzr/TDGnKJNKeGJ25VOKPnq8RDX/Ik2+hNjdThOWApIgDQo4JtUMCxCDM7lRcu -ne9B/UShSzd8uuZgHZVSFD+pfPJvyVpZ/ORHvrQqUAtveQgk7Cpp2tuvsixbBhdQ -E6ZWsef5uyYdyjLp2C4cl2A= ------END PRIVATE KEY----- diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/KeyText.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/KeyText.java new file mode 100644 index 0000000..dfea74c --- /dev/null +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/KeyText.java @@ -0,0 +1,94 @@ +package com.czcb.scfs.api.service; + +import com.czcb.scfs.api.core.util.PemFile; + +import java.security.PrivateKey; +import java.security.cert.X509Certificate; + +/** + * @author wangwei + * @date 2024/2/20 + */ +public final class KeyText { + + public static final String PRIVATE_TEXT_SM2 = "-----BEGIN PRIVATE KEY-----\n" + + "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgEbNA+Qs8+nMspo7ikBiR9KRl8nc2\n" + + "DL337j+2lmK9McCgCgYIKoEcz1UBgi2hRANCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo\n" + + "/AjGWv28USDdp9nmBzj2Y+ts+iFbt5vTOoO+8z4L5ybEnKJ4\n" + + "-----END PRIVATE KEY-----"; + + public static final String CERTIFICATE_TEXT_SM2 = "-----BEGIN CERTIFICATE-----\n" + + "MIICKTCCAc+gAwIBAgIhALR78lDRPW3HLShp00DN+Lgw8s/TILZSWGw9SGH4bKNVMAoGCCqBHM9V\n" + + "AYN1MIGNMQswCQYDVQQGEwJDTjESMBAGA1UECAwJ5rWZ5rGf55yBMRIwEAYDVQQHDAnmna3lt57l\n" + + "uIIxITAfBgNVBAoMGOa1meaxn+eooOW3nuWVhuS4mumTtuihjDEYMBYGA1UECwwP5pWw5a2X6YeR\n" + + "6J6N6YOoMRkwFwYDVQQDDBBzY2ZzLmN6Y2IuY29tLmNuMB4XDTI0MDIyMDAzMzgxOVoXDTI5MDIy\n" + + "MDAzMzgxOVowgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcMCead\n" + + "reW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgwFgYDVQQLDA/mlbDl\n" + + "rZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20uY24wWTATBgcqhkjOPQIBBggqgRzP\n" + + "VQGCLQNCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo/AjGWv28USDdp9nmBzj2Y+ts+iFb\n" + + "t5vTOoO+8z4L5ybEnKJ4MAoGCCqBHM9VAYN1A0gAMEUCIQCx+TJJMHj5BZuylFt5pJaFrvJj9NaH\n" + + "ggiLQndrrMctYgIgdhZLUVIZdVdmR0zMv3OWmeiI71B1d/80XLkISQF/qvg=\n" + + "-----END CERTIFICATE-----"; + + + public static final String PRIVATE_TEXT_RSA = "-----BEGIN PRIVATE KEY-----\n" + + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDwbOmleN4X6YD\n" + + "iTUk5tuFhhqJYGIdSBb7x14E5OCd/2UIxx8l/tF162rAlPeYquHM34mi1Ha0Ana9\n" + + "6ttMNMDMyq3TBUxq7n8H0pLU8fboCorU83owRj4Eqrfk7tG0cMgeUmrYbaTXPD5d\n" + + "lRvKdpFxN1UNRav+mYUb1OPxoHuJRxoeRGAm/RWC1nTj9UYeAQQKehb5FhWD3UBL\n" + + "Cxk0iXgPrfykkZDeLeUI9fA+dzEDnrHDmz+jt9fQnup3RVku7/n1DQQyCOUDOn24\n" + + "NGfBXciDeivJ3/bZ1SJy5t/4Hu6GyqyJKqP3Oe9UAbkbZWOnIu186R6e7NBk5n/+\n" + + "HgDf17CLAgMBAAECggEAOyoOoZEYxHdoJhZwlPwfKe57k7ypOr9gju1VObZxOt+H\n" + + "Sk1gWSv4Y6Loy1batG4lO7XuE+QSElrSR5k1eYVSJjM1sRsfWwxFIXifvzN4U+5n\n" + + "wm/qJK/+K4vrc4pIoDgcC6oON+Z/lTvUf5VC5oDKeYTnNFEz6Am/RMelsxA1diob\n" + + "SNSwPTPijqy0b63IHSWAbB+zmurRZPOSzy5lZ2F+xdYhnF+j9XprP4iJiHydvrgH\n" + + "RJbxwsiphjgPeqPSVSs5MTQ0zDumRkbMBANk/Y5rCGybBSGpW1BwXZjTp3jtY9Tr\n" + + "DmXDbzsiZWx/D1wFd0F+BhS6vg3dUkX63mSDOaTvKQKBgQDpLcwdAkhvWbRs03ev\n" + + "5/BgmgHO2iwJkAL6yyX9wox4NOYe1FInBht5Nc/ZC0mXy5E4Wmd1SGAoYt8R2vxo\n" + + "LnIyJnRE4iUKWxL87okKCDW4b3AaMTMZXyKmkMgMPDvpk6Odag5Ey2xpojb8TP7q\n" + + "QtZu5DWTkU2lR+2Z4qH8+DFC2QKBgQDW6k4guiR0ZP7Po1QLQWXwRfQU4WUlxaKp\n" + + "MEp6hsdKRN2MPbbPqtg4PoBpc1Hpvx2SX3YGAaRIwJtLGuoOq4TnVJ+9SKI5VDqT\n" + + "YcjE4UZm1DDmm1XYaCJKYeN2Swr2xl2VA6LJpHHZDLXC7YVshZ/53lJhPTbnBpIE\n" + + "0T+MBCIoAwKBgAtSS+zEpZuycU4vXkpOKp+mGpxef3DfayWeI3QUtBlKCDpK+Moo\n" + + "Q8E42aSiJaqXGa/ww8EwCGstkcMeLM8qIiVJNK/7guzjyyI4urKf/2u7DWhYJzD+\n" + + "K4KG2Q+vBQGsR29nLNYuQk9GrwDFBEN/h0XPEsLddTWnLmQgWtkbe9jRAoGBAIAj\n" + + "dW+37HJloTPl+v82//ORkeU9OlSaEND1lQKXB431n261gSEyiPaH9YJqGqXWqGgU\n" + + "eMc+BVjHVhAivPkANR7EavWtr+Okn8QuIkmY06QN0hY8+aMs+30D/l4Sgjf+r99g\n" + + "Kpg1bxftpxXRDqNUzLxrXQzTNb/rP/aVWGFAOalHAoGAPiW3cKvfTOLIS0PFxGOF\n" + + "EKQzr/TDGnKJNKeGJ25VOKPnq8RDX/Ik2+hNjdThOWApIgDQo4JtUMCxCDM7lRcu\n" + + "ne9B/UShSzd8uuZgHZVSFD+pfPJvyVpZ/ORHvrQqUAtveQgk7Cpp2tuvsixbBhdQ\n" + + "E6ZWsef5uyYdyjLp2C4cl2A=\n" + + "-----END PRIVATE KEY-----\n"; + + public static final String CERTIFICATE_TEXT_RSA = "-----BEGIN CERTIFICATE-----\n" + + "MIIDyzCCArOgAwIBAgIUBs3aqSytdZmDJQJ2R4RzMMF1YpEwDQYJKoZIhvcNAQEL\n" + + "BQAwgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcM\n" + + "CeadreW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgw\n" + + "FgYDVQQLDA/mlbDlrZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20u\n" + + "Y24wHhcNMjQwMjEzMDk1MjQwWhcNMzQwMjEwMDk1MjQwWjCBjTELMAkGA1UEBhMC\n" + + "Q04xEjAQBgNVBAgMCea1meaxn+ecgTESMBAGA1UEBwwJ5p2t5bee5biCMSEwHwYD\n" + + "VQQKDBjmtZnmsZ/nqKDlt57llYbkuJrpk7booYwxGDAWBgNVBAsMD+aVsOWtl+mH\n" + + "keiejemDqDEZMBcGA1UEAwwQc2Nmcy5jemNiLmNvbS5jbjCCASIwDQYJKoZIhvcN\n" + + "AQEBBQADggEPADCCAQoCggEBAMPBs6aV43hfpgOJNSTm24WGGolgYh1IFvvHXgTk\n" + + "4J3/ZQjHHyX+0XXrasCU95iq4czfiaLUdrQCdr3q20w0wMzKrdMFTGrufwfSktTx\n" + + "9ugKitTzejBGPgSqt+Tu0bRwyB5SathtpNc8Pl2VG8p2kXE3VQ1Fq/6ZhRvU4/Gg\n" + + "e4lHGh5EYCb9FYLWdOP1Rh4BBAp6FvkWFYPdQEsLGTSJeA+t/KSRkN4t5Qj18D53\n" + + "MQOescObP6O319Ce6ndFWS7v+fUNBDII5QM6fbg0Z8FdyIN6K8nf9tnVInLm3/ge\n" + + "7obKrIkqo/c571QBuRtlY6ci7XzpHp7s0GTmf/4eAN/XsIsCAwEAAaMhMB8wHQYD\n" + + "VR0OBBYEFPxZwIS1s2a+59+F4mEvMwf01exmMA0GCSqGSIb3DQEBCwUAA4IBAQBE\n" + + "5FuyVUFm4hRxsO8Jl412lxEvtMtgB3QT0mj0+SWVAp/Cb7Jh3yqkszmnx3CC64lB\n" + + "OzfU8rsQMu+R8NoBEUIO03vD9DhozYE67iUcmzwKil6IwedA8QxzL/UZpbf/1SqC\n" + + "Vf4/z0a2dZO7ys/WYPJh+bxsiB5UIfmhnNDIKQoOMrFEzkxz6KHpNXQGt0fj7ugd\n" + + "8HPSkDtYBoCluI9YfWeOazmVAVZxhpLSMi+6NzVwdXjOdKTgxAYMkXIdtPKLiC0z\n" + + "zycbiBuKN7tL/NtHfpYQ1noakUahMzw1XvUNTs47PIaDgqG+mjZR3hRRKQq3iNHy\n" + + "pwDwvSima1XX0KnrzLg+\n" + + "-----END CERTIFICATE-----\n"; + + public static PrivateKey loadTestPrivateKeyRSA() { + return PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_RSA); + } + + public static X509Certificate loadTestRSA() { + return PemFile.loadX509FromString(CERTIFICATE_TEXT_RSA); + } +} diff --git a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/MockResponse.java b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/MockResponse.java index 7e5933a..0f56211 100644 --- a/scfs-api-service/src/test/java/com/czcb/scfs/api/service/MockResponse.java +++ b/scfs-api-service/src/test/java/com/czcb/scfs/api/service/MockResponse.java @@ -8,7 +8,6 @@ import com.czcb.scfs.api.core.http.DefaultApiClientBuilder; import com.czcb.scfs.api.core.http.DefaultHttpProfile; import com.czcb.scfs.api.core.util.DateTimes; import com.czcb.scfs.api.core.util.Nonce; -import com.czcb.scfs.api.core.util.PemFile; import com.czcb.scfs.api.core.util.Strings; import com.czcb.scfs.api.service.cipher.TestPrivacy; import com.czcb.scfs.api.service.cipher.TestProfile; @@ -16,7 +15,6 @@ import com.czcb.scfs.api.service.cipher.TestSigner; import com.czcb.scfs.api.service.cipher.TestVerifier; import org.mockserver.model.HttpResponse; -import java.net.URL; import java.nio.charset.StandardCharsets; import java.security.PrivateKey; import java.security.cert.X509Certificate; @@ -39,11 +37,9 @@ public class MockResponse { } private static Profile profile() { - URL url = ClassLoader.getSystemResource("channel_private_key.pem"); - PrivateKey privateKey = PemFile.loadPrivateKeyFromAbsolutePath(url.getPath()); + PrivateKey privateKey = KeyText.loadTestPrivateKeyRSA(); - URL certificatesurl = ClassLoader.getSystemResource("channel_certificate.pem"); - X509Certificate certificate = PemFile.loadX509FromAbsolutePath(certificatesurl.getPath()); + X509Certificate certificate = KeyText.loadTestRSA(); List list = new ArrayList<>(); list.add(certificate); CertificateProvider certificateProvider = new LocalCertificateProvider(list); diff --git a/scfs-api-service/src/test/resources/channel_certificate.pem b/scfs-api-service/src/test/resources/channel_certificate.pem deleted file mode 100644 index 043ab48..0000000 --- a/scfs-api-service/src/test/resources/channel_certificate.pem +++ /dev/null @@ -1,21 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDizCCAnOgAwIBAgIUNFJ8KcZ1F3AOTLWGKAbqGdcGDSgwDQYJKoZIhvcNAQEL -BQAwVTELMAkGA1UEBhMCQ04xEDAOBgNVBAgMB1poSmlhbmcxETAPBgNVBAcMCEhh -bmd6aG91MSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwHhcNMjQw -MjA3MTI0NDA3WhcNMjcwMjA2MTI0NDA3WjBVMQswCQYDVQQGEwJDTjEQMA4GA1UE -CAwHWmhKaWFuZzERMA8GA1UEBwwISGFuZ3pob3UxITAfBgNVBAoMGEludGVybmV0 -IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -ALc2CE5b1FDUu/NXE3kAqWs4AWmhfUDpczJtK1+kf3phT8/9GhtmtFH7otEAULn/ -Fd64sVFUf/RspMZupPLxDaabbZ0GOHAJzkOXHgJrKYSnZU7uBUjQO3Iy8bT9Tjxb -mHZcGm5VRw4ZIg+YhSSmX5cyzRna3cY5B9QpnahJSpiqtD3qUZqdx0d9aWTwcuhs -IYQWNc2ACos5WnY6k5nUPNM1NRZgLDEYiEfTXwCfF3sJvhgPBCISCY2ECQR4q/b7 -lKPzwBXqayR9PTr81+pnHxIHgPNaAmW5uZjnz1LM3Fiv0eplkdBhAP6hh/78yvrI -63y9NUV91RbnP8wj9GS3FBsCAwEAAaNTMFEwHQYDVR0OBBYEFNowuYm9EFm1Za1l -jYEH8pcq3FVCMB8GA1UdIwQYMBaAFNowuYm9EFm1Za1ljYEH8pcq3FVCMA8GA1Ud -EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAENNef+3/iJ8DlIVRxEebzmu -Hw7+F2MJzar7k4kVMKq9cTARed5BLWyY8u9Z3q+hWrHHC1yV5u0iACscAjwe8Du1 -36fi5/6Y7V4xCAbditlJdr+D/vQXmPOMGIcbjeTCx7gZobupINaE4vXwou79KsvB -SSyX8AqALctO8TNBgs7YNKtD5f0tUKx1mPUZlLVzv2vkJNls3+9iYQtzWNyQ8UAW -zFkRUHtB0od3gHMdCaBc5WrO2dxZ5WQyk/DaCXnvmX+3FDyO0blcll4owqaDCNEu -pe6xFxQ547XVu/VGjY8oqksW/uGYQnkMv3As1cFRf0WGZw31JUxZR56+fZRjhYs= ------END CERTIFICATE----- diff --git a/scfs-api-service/src/test/resources/channel_private_key.pem b/scfs-api-service/src/test/resources/channel_private_key.pem deleted file mode 100644 index e1eb011..0000000 --- a/scfs-api-service/src/test/resources/channel_private_key.pem +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC3NghOW9RQ1Lvz -VxN5AKlrOAFpoX1A6XMybStfpH96YU/P/RobZrRR+6LRAFC5/xXeuLFRVH/0bKTG -bqTy8Q2mm22dBjhwCc5Dlx4CaymEp2VO7gVI0DtyMvG0/U48W5h2XBpuVUcOGSIP -mIUkpl+XMs0Z2t3GOQfUKZ2oSUqYqrQ96lGancdHfWlk8HLobCGEFjXNgAqLOVp2 -OpOZ1DzTNTUWYCwxGIhH018Anxd7Cb4YDwQiEgmNhAkEeKv2+5Sj88AV6mskfT06 -/NfqZx8SB4DzWgJlubmY589SzNxYr9HqZZHQYQD+oYf+/Mr6yOt8vTVFfdUW5z/M -I/RktxQbAgMBAAECggEACs+vccr4Hm+kn67LFrWJSdXGOjuDWVSYAv5viXdQO80z -mSxwYUmQPn5A6gsWDcPAa0zZedkoq9MgGMLoDPCt7jT3JPBRsvAr3HqLFM10vRU7 -ud/7LoQgiJP6W28kh2ny90O8Hjf+DMDtl59XzAUyrYjGkvitZEhymSco3Ii7/teK -N74XJjWwZrNpqommqUrSfKiM/alRIEpZ3oLi9zivAah0lLKRpUjGLsNPHjk7JCiZ -6vudyo6prjA3rPuKt56M0BmDReLKQlEWpWAAIWA9BP3JG5+qrjFh0Zxli/YPruAh -VvoU4TiY5FeHDAqmFlOYS4DCSkejw0RiA7sqQbEBcQKBgQDy2AhHpGin6Vxxi6Jr -LMvn08Hkqeg9dcatSPP7pjDpBlLqOTDuy4jd9B/gkfUAuR/K13t/CbQubQUCUIgu -uoEaWpHz4txoCbS6WL88rgxKZylYXq8fopXbMwxhZnsLZCgDFwNwVfKIzK50WQn3 -Jfzgu9c3a9+Wrh5ww7BwhTtzVwKBgQDBIvYD2hXLL3OC/rp3oQyrDMIBB0j58jjx -hZMbJN3UPbd4X9KLHrRI36wLMd+0hQf0KZIwWnzocSxVv8Yk2sc8X3hB5ANd++Qe -A+nV7R3RAvFZQF8YCW+B4Q4DrYED3RwSUOJWvt4+f63rvSMY9oidJj14und+mmCT -iazMDsBO3QKBgB0qYvwvu74G4eplKdGTZL3oCc5rtY/EGGNxcpQTpqYl80lcKwtS -+JInorh27yTyFuZmsNdWFATLZSGdCG4MSjsfC45t/ailGcaTqAwinylEcIvDe2bi -QPs9i0wbYcXBdqjAV9JjECjr5DvnAbJkJpXbGYL3erf/G3rRldw9tCErAoGAcBpy -4dl8POvWCHsCkN2SFNba5O3tleba1pXJxT+o4sDP9bbo5odz7bimi/ju+EEfVMGs -cRSU2/aU3VDrGglDC+/+RYCr06mZxzJOUDXJ0L/8humuSK1xY9nV4Jyc/jkhSiBY -wDEZnv1NXj/yV1MCCPVhSOoy4fGJjRmkiu0lAqECgYBEut4dBG0DHDNoKnsZDBpc -k13KzC6qpI635AwUNRKdexvE8/B8mSmIbrp1i9JaN4rZyctrWvg1qi03089YYiX/ -IIop//+L5dB7urjuw6xMT7f0tYwMrKZiCtM74GeTQq+tzL4Yv1tlMb4BltzBPJKo -I4IGuvCn60HbcLo1xa9PeQ== ------END PRIVATE KEY----- diff --git a/scfs-api-sm/src/main/java/com/czcb/scfs/api/sm/Sm2Signer.java b/scfs-api-sm/src/main/java/com/czcb/scfs/api/sm/Sm2Signer.java index 4876905..787dac4 100644 --- a/scfs-api-sm/src/main/java/com/czcb/scfs/api/sm/Sm2Signer.java +++ b/scfs-api-sm/src/main/java/com/czcb/scfs/api/sm/Sm2Signer.java @@ -19,6 +19,6 @@ public class Sm2Signer extends AbstractSigner { * @param privateKey API私钥 */ public Sm2Signer(PrivateKey privateKey) { - super("SM2-WITH-SM3", "SM2", privateKey); + super("SM3withSM2", "SM2", privateKey); } } diff --git a/scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SMKeyText.java b/scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SMKeyText.java new file mode 100644 index 0000000..29018d4 --- /dev/null +++ b/scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SMKeyText.java @@ -0,0 +1,107 @@ +package com.czcb.scfs.api.sm; + +import com.czcb.scfs.api.core.util.PemFile; +import com.tencent.kona.KonaProvider; + +import java.security.PrivateKey; +import java.security.Security; +import java.security.cert.X509Certificate; + +/** + * @author wangwei + * @date 2024/2/20 + */ +public final class SMKeyText { + static { + Security.addProvider(new KonaProvider()); + } + + public static final String PRIVATE_TEXT_SM2 = "-----BEGIN PRIVATE KEY-----\n" + + "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgEbNA+Qs8+nMspo7ikBiR9KRl8nc2\n" + + "DL337j+2lmK9McCgCgYIKoEcz1UBgi2hRANCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo\n" + + "/AjGWv28USDdp9nmBzj2Y+ts+iFbt5vTOoO+8z4L5ybEnKJ4\n" + + "-----END PRIVATE KEY-----"; + + public static final String CERTIFICATE_TEXT_SM2 = "-----BEGIN CERTIFICATE-----\n" + + "MIICKTCCAc+gAwIBAgIhALR78lDRPW3HLShp00DN+Lgw8s/TILZSWGw9SGH4bKNVMAoGCCqBHM9V\n" + + "AYN1MIGNMQswCQYDVQQGEwJDTjESMBAGA1UECAwJ5rWZ5rGf55yBMRIwEAYDVQQHDAnmna3lt57l\n" + + "uIIxITAfBgNVBAoMGOa1meaxn+eooOW3nuWVhuS4mumTtuihjDEYMBYGA1UECwwP5pWw5a2X6YeR\n" + + "6J6N6YOoMRkwFwYDVQQDDBBzY2ZzLmN6Y2IuY29tLmNuMB4XDTI0MDIyMDAzMzgxOVoXDTI5MDIy\n" + + "MDAzMzgxOVowgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcMCead\n" + + "reW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgwFgYDVQQLDA/mlbDl\n" + + "rZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20uY24wWTATBgcqhkjOPQIBBggqgRzP\n" + + "VQGCLQNCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo/AjGWv28USDdp9nmBzj2Y+ts+iFb\n" + + "t5vTOoO+8z4L5ybEnKJ4MAoGCCqBHM9VAYN1A0gAMEUCIQCx+TJJMHj5BZuylFt5pJaFrvJj9NaH\n" + + "ggiLQndrrMctYgIgdhZLUVIZdVdmR0zMv3OWmeiI71B1d/80XLkISQF/qvg=\n" + + "-----END CERTIFICATE-----"; + + + public static final String PRIVATE_TEXT_RSA = "-----BEGIN PRIVATE KEY-----\n" + + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDwbOmleN4X6YD\n" + + "iTUk5tuFhhqJYGIdSBb7x14E5OCd/2UIxx8l/tF162rAlPeYquHM34mi1Ha0Ana9\n" + + "6ttMNMDMyq3TBUxq7n8H0pLU8fboCorU83owRj4Eqrfk7tG0cMgeUmrYbaTXPD5d\n" + + "lRvKdpFxN1UNRav+mYUb1OPxoHuJRxoeRGAm/RWC1nTj9UYeAQQKehb5FhWD3UBL\n" + + "Cxk0iXgPrfykkZDeLeUI9fA+dzEDnrHDmz+jt9fQnup3RVku7/n1DQQyCOUDOn24\n" + + "NGfBXciDeivJ3/bZ1SJy5t/4Hu6GyqyJKqP3Oe9UAbkbZWOnIu186R6e7NBk5n/+\n" + + "HgDf17CLAgMBAAECggEAOyoOoZEYxHdoJhZwlPwfKe57k7ypOr9gju1VObZxOt+H\n" + + "Sk1gWSv4Y6Loy1batG4lO7XuE+QSElrSR5k1eYVSJjM1sRsfWwxFIXifvzN4U+5n\n" + + "wm/qJK/+K4vrc4pIoDgcC6oON+Z/lTvUf5VC5oDKeYTnNFEz6Am/RMelsxA1diob\n" + + "SNSwPTPijqy0b63IHSWAbB+zmurRZPOSzy5lZ2F+xdYhnF+j9XprP4iJiHydvrgH\n" + + "RJbxwsiphjgPeqPSVSs5MTQ0zDumRkbMBANk/Y5rCGybBSGpW1BwXZjTp3jtY9Tr\n" + + "DmXDbzsiZWx/D1wFd0F+BhS6vg3dUkX63mSDOaTvKQKBgQDpLcwdAkhvWbRs03ev\n" + + "5/BgmgHO2iwJkAL6yyX9wox4NOYe1FInBht5Nc/ZC0mXy5E4Wmd1SGAoYt8R2vxo\n" + + "LnIyJnRE4iUKWxL87okKCDW4b3AaMTMZXyKmkMgMPDvpk6Odag5Ey2xpojb8TP7q\n" + + "QtZu5DWTkU2lR+2Z4qH8+DFC2QKBgQDW6k4guiR0ZP7Po1QLQWXwRfQU4WUlxaKp\n" + + "MEp6hsdKRN2MPbbPqtg4PoBpc1Hpvx2SX3YGAaRIwJtLGuoOq4TnVJ+9SKI5VDqT\n" + + "YcjE4UZm1DDmm1XYaCJKYeN2Swr2xl2VA6LJpHHZDLXC7YVshZ/53lJhPTbnBpIE\n" + + "0T+MBCIoAwKBgAtSS+zEpZuycU4vXkpOKp+mGpxef3DfayWeI3QUtBlKCDpK+Moo\n" + + "Q8E42aSiJaqXGa/ww8EwCGstkcMeLM8qIiVJNK/7guzjyyI4urKf/2u7DWhYJzD+\n" + + "K4KG2Q+vBQGsR29nLNYuQk9GrwDFBEN/h0XPEsLddTWnLmQgWtkbe9jRAoGBAIAj\n" + + "dW+37HJloTPl+v82//ORkeU9OlSaEND1lQKXB431n261gSEyiPaH9YJqGqXWqGgU\n" + + "eMc+BVjHVhAivPkANR7EavWtr+Okn8QuIkmY06QN0hY8+aMs+30D/l4Sgjf+r99g\n" + + "Kpg1bxftpxXRDqNUzLxrXQzTNb/rP/aVWGFAOalHAoGAPiW3cKvfTOLIS0PFxGOF\n" + + "EKQzr/TDGnKJNKeGJ25VOKPnq8RDX/Ik2+hNjdThOWApIgDQo4JtUMCxCDM7lRcu\n" + + "ne9B/UShSzd8uuZgHZVSFD+pfPJvyVpZ/ORHvrQqUAtveQgk7Cpp2tuvsixbBhdQ\n" + + "E6ZWsef5uyYdyjLp2C4cl2A=\n" + + "-----END PRIVATE KEY-----\n"; + + public static final String CERTIFICATE_TEXT_RSA = "-----BEGIN CERTIFICATE-----\n" + + "MIIDyzCCArOgAwIBAgIUBs3aqSytdZmDJQJ2R4RzMMF1YpEwDQYJKoZIhvcNAQEL\n" + + "BQAwgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcM\n" + + "CeadreW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgw\n" + + "FgYDVQQLDA/mlbDlrZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20u\n" + + "Y24wHhcNMjQwMjEzMDk1MjQwWhcNMzQwMjEwMDk1MjQwWjCBjTELMAkGA1UEBhMC\n" + + "Q04xEjAQBgNVBAgMCea1meaxn+ecgTESMBAGA1UEBwwJ5p2t5bee5biCMSEwHwYD\n" + + "VQQKDBjmtZnmsZ/nqKDlt57llYbkuJrpk7booYwxGDAWBgNVBAsMD+aVsOWtl+mH\n" + + "keiejemDqDEZMBcGA1UEAwwQc2Nmcy5jemNiLmNvbS5jbjCCASIwDQYJKoZIhvcN\n" + + "AQEBBQADggEPADCCAQoCggEBAMPBs6aV43hfpgOJNSTm24WGGolgYh1IFvvHXgTk\n" + + "4J3/ZQjHHyX+0XXrasCU95iq4czfiaLUdrQCdr3q20w0wMzKrdMFTGrufwfSktTx\n" + + "9ugKitTzejBGPgSqt+Tu0bRwyB5SathtpNc8Pl2VG8p2kXE3VQ1Fq/6ZhRvU4/Gg\n" + + "e4lHGh5EYCb9FYLWdOP1Rh4BBAp6FvkWFYPdQEsLGTSJeA+t/KSRkN4t5Qj18D53\n" + + "MQOescObP6O319Ce6ndFWS7v+fUNBDII5QM6fbg0Z8FdyIN6K8nf9tnVInLm3/ge\n" + + "7obKrIkqo/c571QBuRtlY6ci7XzpHp7s0GTmf/4eAN/XsIsCAwEAAaMhMB8wHQYD\n" + + "VR0OBBYEFPxZwIS1s2a+59+F4mEvMwf01exmMA0GCSqGSIb3DQEBCwUAA4IBAQBE\n" + + "5FuyVUFm4hRxsO8Jl412lxEvtMtgB3QT0mj0+SWVAp/Cb7Jh3yqkszmnx3CC64lB\n" + + "OzfU8rsQMu+R8NoBEUIO03vD9DhozYE67iUcmzwKil6IwedA8QxzL/UZpbf/1SqC\n" + + "Vf4/z0a2dZO7ys/WYPJh+bxsiB5UIfmhnNDIKQoOMrFEzkxz6KHpNXQGt0fj7ugd\n" + + "8HPSkDtYBoCluI9YfWeOazmVAVZxhpLSMi+6NzVwdXjOdKTgxAYMkXIdtPKLiC0z\n" + + "zycbiBuKN7tL/NtHfpYQ1noakUahMzw1XvUNTs47PIaDgqG+mjZR3hRRKQq3iNHy\n" + + "pwDwvSima1XX0KnrzLg+\n" + + "-----END CERTIFICATE-----\n"; + + public static PrivateKey loadTestPrivateKeySM2() { + return PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_SM2, "EC", KonaProvider.NAME); + } + + public static PrivateKey loadTestPrivateKeyRSA() { + return PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_RSA); + } + + public static X509Certificate loadTestSM2() { + return PemFile.loadX509FromString(CERTIFICATE_TEXT_SM2, KonaProvider.NAME); + } + + public static X509Certificate loadTestRSA() { + return PemFile.loadX509FromString(CERTIFICATE_TEXT_RSA); + } +} diff --git a/scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SmProfileTest.java b/scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SmProfileTest.java index 0868a81..237a1b8 100644 --- a/scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SmProfileTest.java +++ b/scfs-api-sm/src/test/java/com/czcb/scfs/api/sm/SmProfileTest.java @@ -1,42 +1,49 @@ -//package com.czcb.scfs.api.sm; -// -//import com.czcb.scfs.api.core.DefaultChannel; -//import org.junit.jupiter.api.Assertions; -//import org.junit.jupiter.api.Test; -// -//import java.nio.charset.StandardCharsets; -// -//class SmProfileTest { -// @Test -// void test() { -// SmProfile profile = new SmProfile.Builder() -// .channel(new DefaultChannel.Builder() -// .channelNo("0000") -// .appNo("100001") -// .build()) -// .privateKey(ClassLoader.getSystemResource("private_key.pem").getPath()) -// .addCertificate(ClassLoader.getSystemResource("certificate.pem").getPath()) -// .build(); -// -// Assertions.assertNotNull(profile); -// -// String message = "1234567"; -// String signResult = profile.getSignature().getSigner().sign(message).getResult(); -// Assertions.assertTrue(profile.getSignature().getVerifier().verify(null, message, signResult)); -// -// Assertions.assertEquals("0000", profile.getChannel().getChannelNo()); -// Assertions.assertEquals("100001", profile.getChannel().getAppNo()); -// -// String text = "1234567890"; -// String ciphertext = profile.getPrivacy().getEncryptor().encrypt(text); -// Assertions.assertEquals(text, profile.getPrivacy().getDecryptor().decrypt(ciphertext)); -// -// String secretKey = "abcdef1234567890"; -// String encrypt = profile.getPrivacy().getSecretCipher().encrypt(secretKey.getBytes(StandardCharsets.UTF_8), text.getBytes(StandardCharsets.UTF_8)); -// String decrypt = profile.getPrivacy().getSecretCipher().decrypt(secretKey.getBytes(StandardCharsets.UTF_8), encrypt.getBytes(StandardCharsets.UTF_8)); -// Assertions.assertEquals(text, decrypt); -// -// Assertions.assertNotNull(profile.getPrivacy().getDecryptor().getPrivateKey()); -// Assertions.assertNotNull(profile.getPrivacy().getEncryptor().getPublicKey()); -// } -//} \ No newline at end of file +package com.czcb.scfs.api.sm; + +import com.czcb.scfs.api.core.DefaultChannel; +import com.czcb.scfs.api.core.util.PemFile; +import com.tencent.kona.KonaProvider; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.nio.charset.StandardCharsets; + +import static com.czcb.scfs.api.sm.SMKeyText.CERTIFICATE_TEXT_SM2; +import static com.czcb.scfs.api.sm.SMKeyText.PRIVATE_TEXT_SM2; + +class SmProfileTest { + + + @Test + void test() { + SmProfile profile = new SmProfile.Builder() + .channel(new DefaultChannel.Builder() + .channelNo("0000") + .appNo("100001") + .build()) + .privateKey(PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_SM2, "EC", KonaProvider.NAME)) + .addCertificate(PemFile.loadX509FromString(CERTIFICATE_TEXT_SM2, KonaProvider.NAME)) + .build(); + + Assertions.assertNotNull(profile); + + String message = "1234567"; + String signResult = profile.getSignature().getSigner().sign(message).getResult(); + Assertions.assertTrue(profile.getSignature().getVerifier().verify(null, message, signResult)); + + Assertions.assertEquals("0000", profile.getChannel().getChannelNo()); + Assertions.assertEquals("100001", profile.getChannel().getAppNo()); + + String text = "1234567890"; + String ciphertext = profile.getPrivacy().getEncryptor().encrypt(text); + Assertions.assertEquals(text, profile.getPrivacy().getDecryptor().decrypt(ciphertext)); + + String secretKey = "abcdef1234567890"; + String encrypt = profile.getPrivacy().getSecretCipher().encrypt(secretKey.getBytes(StandardCharsets.UTF_8), text.getBytes(StandardCharsets.UTF_8)); + String decrypt = profile.getPrivacy().getSecretCipher().decrypt(secretKey.getBytes(StandardCharsets.UTF_8), encrypt.getBytes(StandardCharsets.UTF_8)); + Assertions.assertEquals(text, decrypt); + + Assertions.assertNotNull(profile.getPrivacy().getDecryptor().getPrivateKey()); + Assertions.assertNotNull(profile.getPrivacy().getEncryptor().getPublicKey()); + } +} \ No newline at end of file diff --git a/scfs-api-sm/src/test/resources/certificate.pem b/scfs-api-sm/src/test/resources/certificate.pem deleted file mode 100644 index cb8ab96..0000000 --- a/scfs-api-sm/src/test/resources/certificate.pem +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN CERTIFICATE----- -MIICyTCCAmygAwIBAgIUVOf1ntjfRXDPsUeA6oFS1FpnXuYwDAYIKoEcz1UBg3UF -ADCBjTFHMEUGA1UEAww+U2hlbiBaaGVuIGlUcnVzQ2hpbmEgQ2xhc3MgRW50ZXJw -cmlzZSBTdWJzY3JpYmVyIENBIFNNMiAtIFRlc3QxGDAWBgNVBAsMD+a1i+ivlemD -qOivleeUqDEbMBkGA1UECgwS5aSp6K+a5a6J5L+h6K+V55SoMQswCQYDVQQGEwJD -TjAeFw0yMjA4MDQxMjE0MTlaFw0yMzA5MDMxMjE0MTlaMGsxCzAJBgNVBAYTAkNO -MRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xKjAoBgNVBAsMIea3seWcs+W4 -guS8n+iNo+enkeaKgOaciemZkOWFrOWPuDETMBEGA1UEAwwKMjQ4MzI4MTc2MTBZ -MBMGByqGSM49AgEGCCqBHM9VAYItA0IABHvNR/deoZ0EwKcrTacPV90bP5M3zF3R -JBiBuRNDGTm/aaVe9rRnEMfhckUj0PZG3WlNJIOXb26FDUZjePqLL36jgcgwgcUw -DAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUK0Y6T9Ge -LM7UH4bC1j2avycoZPcwHQYDVR0OBBYEFBmE5STz2WNsXVrgclXrxsl6SCihMGUG -A1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMv -aXRydXNjcmw/Q0E9NzMzNUExQUYzNzRBMUU4QjQwM0FCMUFDMkQwNjVDQUU3NUNB -QjIzNjAMBggqgRzPVQGDdQUAA0kAMEYCIQDK0r6D8VyiUVMfRnAfz40ZtiG8DJEF -6Rn41oZ3qPW1aQIhAKtn5sKME+thLQFeyV70VSsraZ7h9Fccal2WzI2oCdtY ------END CERTIFICATE----- \ No newline at end of file diff --git a/scfs-api-sm/src/test/resources/private_key.pem b/scfs-api-sm/src/test/resources/private_key.pem deleted file mode 100644 index 21e3b87..0000000 --- a/scfs-api-sm/src/test/resources/private_key.pem +++ /dev/null @@ -1,6 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQg/U9Saz5ceDGQhFBM -f/cHIh2+q5Lzvhrb8L2SI4sPUR+gCgYIKoEcz1UBgi2hRANCAAR7zUf3XqGdBMCn -K02nD1fdGz+TN8xd0SQYgbkTQxk5v2mlXva0ZxDH4XJFI9D2Rt1pTSSDl29uhQ1G -Y3j6iy9+ ------END PRIVATE KEY----- \ No newline at end of file diff --git a/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/RsaConfiguration.java b/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/RsaConfiguration.java index 3f0a8bb..ee06786 100644 --- a/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/RsaConfiguration.java +++ b/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/RsaConfiguration.java @@ -6,7 +6,6 @@ import com.czcb.scfs.api.rsa.RsaProfile; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; import javax.annotation.Resource; import java.io.InputStream; @@ -39,13 +38,12 @@ public class RsaConfiguration extends AbstractAutoConfiguration { if (Objects.equals(getProperties().getCipher().getStoreType(), StoreType.FILE)) { return PemFile.loadPrivateKeyFromAbsolutePath(getProperties().getCipher().getChannelPrivateKey()); } - + InputStream inputStream = getClass().getClassLoader().getResourceAsStream(getProperties().getCipher().getChannelPrivateKey()); return PemFile.loadPrivateKeyFromStream(inputStream); } @Bean - @Primary public RsaProfile rsaProfile() { return new RsaProfile.Builder() .channel(getChannel()) diff --git a/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/SmConfiguration.java b/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/SmConfiguration.java index 1188750..5ad1f14 100644 --- a/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/SmConfiguration.java +++ b/scfs-api-spring-boot-starter/src/main/java/com/czcb/scfs/spring/boot/starter/SmConfiguration.java @@ -7,6 +7,7 @@ import com.tencent.kona.KonaProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import javax.annotation.Resource; import java.io.InputStream; @@ -38,18 +39,19 @@ public class SmConfiguration extends AbstractAutoConfiguration { if (Objects.equals(getProperties().getCipher().getStoreType(), StoreType.FILE)) { return PemFile.loadPrivateKeyFromAbsolutePath(properties.getCipher().getChannelPrivateKey(), "EC", KonaProvider.NAME); } - + InputStream inputStream = getClass().getClassLoader().getResourceAsStream(getProperties().getCipher().getChannelPrivateKey()); return PemFile.loadPrivateKeyFromStream(inputStream, "EC", KonaProvider.NAME); } -// @Bean -// public SmProfile smProfile() { -// return new SmProfile.Builder() -// .channel(getChannel()) -// .httpProfile(getHttpProfile()) -// .privateKey(getPrivateKey()) -// .addCertificate(getCertificate()) -// .build(); -// } + @Bean + @Primary + public SmProfile smProfile() { + return new SmProfile.Builder() + .channel(getChannel()) + .httpProfile(getHttpProfile()) + .privateKey(getPrivateKey()) + .addCertificate(getCertificate()) + .build(); + } } diff --git a/scfs-api-test/src/main/java/com/czcb/scfs/api/test/SMKeyText.java b/scfs-api-test/src/main/java/com/czcb/scfs/api/test/SMKeyText.java new file mode 100644 index 0000000..4e868b8 --- /dev/null +++ b/scfs-api-test/src/main/java/com/czcb/scfs/api/test/SMKeyText.java @@ -0,0 +1,107 @@ +package com.czcb.scfs.api.test; + +import com.czcb.scfs.api.core.util.PemFile; +import com.tencent.kona.KonaProvider; + +import java.security.PrivateKey; +import java.security.Security; +import java.security.cert.X509Certificate; + +/** + * @author wangwei + * @date 2024/2/20 + */ +public final class SMKeyText { + static { + Security.addProvider(new KonaProvider()); + } + + public static final String PRIVATE_TEXT_SM2 = "-----BEGIN PRIVATE KEY-----\n" + + "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgEbNA+Qs8+nMspo7ikBiR9KRl8nc2\n" + + "DL337j+2lmK9McCgCgYIKoEcz1UBgi2hRANCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo\n" + + "/AjGWv28USDdp9nmBzj2Y+ts+iFbt5vTOoO+8z4L5ybEnKJ4\n" + + "-----END PRIVATE KEY-----"; + + public static final String CERTIFICATE_TEXT_SM2 = "-----BEGIN CERTIFICATE-----\n" + + "MIICKTCCAc+gAwIBAgIhALR78lDRPW3HLShp00DN+Lgw8s/TILZSWGw9SGH4bKNVMAoGCCqBHM9V\n" + + "AYN1MIGNMQswCQYDVQQGEwJDTjESMBAGA1UECAwJ5rWZ5rGf55yBMRIwEAYDVQQHDAnmna3lt57l\n" + + "uIIxITAfBgNVBAoMGOa1meaxn+eooOW3nuWVhuS4mumTtuihjDEYMBYGA1UECwwP5pWw5a2X6YeR\n" + + "6J6N6YOoMRkwFwYDVQQDDBBzY2ZzLmN6Y2IuY29tLmNuMB4XDTI0MDIyMDAzMzgxOVoXDTI5MDIy\n" + + "MDAzMzgxOVowgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcMCead\n" + + "reW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgwFgYDVQQLDA/mlbDl\n" + + "rZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20uY24wWTATBgcqhkjOPQIBBggqgRzP\n" + + "VQGCLQNCAAR3JQFY2SNjXJIwwQVfa3v+fjpUpi+CYAWJ1Umo/AjGWv28USDdp9nmBzj2Y+ts+iFb\n" + + "t5vTOoO+8z4L5ybEnKJ4MAoGCCqBHM9VAYN1A0gAMEUCIQCx+TJJMHj5BZuylFt5pJaFrvJj9NaH\n" + + "ggiLQndrrMctYgIgdhZLUVIZdVdmR0zMv3OWmeiI71B1d/80XLkISQF/qvg=\n" + + "-----END CERTIFICATE-----"; + + + public static final String PRIVATE_TEXT_RSA = "-----BEGIN PRIVATE KEY-----\n" + + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDDwbOmleN4X6YD\n" + + "iTUk5tuFhhqJYGIdSBb7x14E5OCd/2UIxx8l/tF162rAlPeYquHM34mi1Ha0Ana9\n" + + "6ttMNMDMyq3TBUxq7n8H0pLU8fboCorU83owRj4Eqrfk7tG0cMgeUmrYbaTXPD5d\n" + + "lRvKdpFxN1UNRav+mYUb1OPxoHuJRxoeRGAm/RWC1nTj9UYeAQQKehb5FhWD3UBL\n" + + "Cxk0iXgPrfykkZDeLeUI9fA+dzEDnrHDmz+jt9fQnup3RVku7/n1DQQyCOUDOn24\n" + + "NGfBXciDeivJ3/bZ1SJy5t/4Hu6GyqyJKqP3Oe9UAbkbZWOnIu186R6e7NBk5n/+\n" + + "HgDf17CLAgMBAAECggEAOyoOoZEYxHdoJhZwlPwfKe57k7ypOr9gju1VObZxOt+H\n" + + "Sk1gWSv4Y6Loy1batG4lO7XuE+QSElrSR5k1eYVSJjM1sRsfWwxFIXifvzN4U+5n\n" + + "wm/qJK/+K4vrc4pIoDgcC6oON+Z/lTvUf5VC5oDKeYTnNFEz6Am/RMelsxA1diob\n" + + "SNSwPTPijqy0b63IHSWAbB+zmurRZPOSzy5lZ2F+xdYhnF+j9XprP4iJiHydvrgH\n" + + "RJbxwsiphjgPeqPSVSs5MTQ0zDumRkbMBANk/Y5rCGybBSGpW1BwXZjTp3jtY9Tr\n" + + "DmXDbzsiZWx/D1wFd0F+BhS6vg3dUkX63mSDOaTvKQKBgQDpLcwdAkhvWbRs03ev\n" + + "5/BgmgHO2iwJkAL6yyX9wox4NOYe1FInBht5Nc/ZC0mXy5E4Wmd1SGAoYt8R2vxo\n" + + "LnIyJnRE4iUKWxL87okKCDW4b3AaMTMZXyKmkMgMPDvpk6Odag5Ey2xpojb8TP7q\n" + + "QtZu5DWTkU2lR+2Z4qH8+DFC2QKBgQDW6k4guiR0ZP7Po1QLQWXwRfQU4WUlxaKp\n" + + "MEp6hsdKRN2MPbbPqtg4PoBpc1Hpvx2SX3YGAaRIwJtLGuoOq4TnVJ+9SKI5VDqT\n" + + "YcjE4UZm1DDmm1XYaCJKYeN2Swr2xl2VA6LJpHHZDLXC7YVshZ/53lJhPTbnBpIE\n" + + "0T+MBCIoAwKBgAtSS+zEpZuycU4vXkpOKp+mGpxef3DfayWeI3QUtBlKCDpK+Moo\n" + + "Q8E42aSiJaqXGa/ww8EwCGstkcMeLM8qIiVJNK/7guzjyyI4urKf/2u7DWhYJzD+\n" + + "K4KG2Q+vBQGsR29nLNYuQk9GrwDFBEN/h0XPEsLddTWnLmQgWtkbe9jRAoGBAIAj\n" + + "dW+37HJloTPl+v82//ORkeU9OlSaEND1lQKXB431n261gSEyiPaH9YJqGqXWqGgU\n" + + "eMc+BVjHVhAivPkANR7EavWtr+Okn8QuIkmY06QN0hY8+aMs+30D/l4Sgjf+r99g\n" + + "Kpg1bxftpxXRDqNUzLxrXQzTNb/rP/aVWGFAOalHAoGAPiW3cKvfTOLIS0PFxGOF\n" + + "EKQzr/TDGnKJNKeGJ25VOKPnq8RDX/Ik2+hNjdThOWApIgDQo4JtUMCxCDM7lRcu\n" + + "ne9B/UShSzd8uuZgHZVSFD+pfPJvyVpZ/ORHvrQqUAtveQgk7Cpp2tuvsixbBhdQ\n" + + "E6ZWsef5uyYdyjLp2C4cl2A=\n" + + "-----END PRIVATE KEY-----\n"; + + public static final String CERTIFICATE_TEXT_RSA = "-----BEGIN CERTIFICATE-----\n" + + "MIIDyzCCArOgAwIBAgIUBs3aqSytdZmDJQJ2R4RzMMF1YpEwDQYJKoZIhvcNAQEL\n" + + "BQAwgY0xCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmtZnmsZ/nnIExEjAQBgNVBAcM\n" + + "CeadreW3nuW4gjEhMB8GA1UECgwY5rWZ5rGf56ig5bee5ZWG5Lia6ZO26KGMMRgw\n" + + "FgYDVQQLDA/mlbDlrZfph5Hono3pg6gxGTAXBgNVBAMMEHNjZnMuY3pjYi5jb20u\n" + + "Y24wHhcNMjQwMjEzMDk1MjQwWhcNMzQwMjEwMDk1MjQwWjCBjTELMAkGA1UEBhMC\n" + + "Q04xEjAQBgNVBAgMCea1meaxn+ecgTESMBAGA1UEBwwJ5p2t5bee5biCMSEwHwYD\n" + + "VQQKDBjmtZnmsZ/nqKDlt57llYbkuJrpk7booYwxGDAWBgNVBAsMD+aVsOWtl+mH\n" + + "keiejemDqDEZMBcGA1UEAwwQc2Nmcy5jemNiLmNvbS5jbjCCASIwDQYJKoZIhvcN\n" + + "AQEBBQADggEPADCCAQoCggEBAMPBs6aV43hfpgOJNSTm24WGGolgYh1IFvvHXgTk\n" + + "4J3/ZQjHHyX+0XXrasCU95iq4czfiaLUdrQCdr3q20w0wMzKrdMFTGrufwfSktTx\n" + + "9ugKitTzejBGPgSqt+Tu0bRwyB5SathtpNc8Pl2VG8p2kXE3VQ1Fq/6ZhRvU4/Gg\n" + + "e4lHGh5EYCb9FYLWdOP1Rh4BBAp6FvkWFYPdQEsLGTSJeA+t/KSRkN4t5Qj18D53\n" + + "MQOescObP6O319Ce6ndFWS7v+fUNBDII5QM6fbg0Z8FdyIN6K8nf9tnVInLm3/ge\n" + + "7obKrIkqo/c571QBuRtlY6ci7XzpHp7s0GTmf/4eAN/XsIsCAwEAAaMhMB8wHQYD\n" + + "VR0OBBYEFPxZwIS1s2a+59+F4mEvMwf01exmMA0GCSqGSIb3DQEBCwUAA4IBAQBE\n" + + "5FuyVUFm4hRxsO8Jl412lxEvtMtgB3QT0mj0+SWVAp/Cb7Jh3yqkszmnx3CC64lB\n" + + "OzfU8rsQMu+R8NoBEUIO03vD9DhozYE67iUcmzwKil6IwedA8QxzL/UZpbf/1SqC\n" + + "Vf4/z0a2dZO7ys/WYPJh+bxsiB5UIfmhnNDIKQoOMrFEzkxz6KHpNXQGt0fj7ugd\n" + + "8HPSkDtYBoCluI9YfWeOazmVAVZxhpLSMi+6NzVwdXjOdKTgxAYMkXIdtPKLiC0z\n" + + "zycbiBuKN7tL/NtHfpYQ1noakUahMzw1XvUNTs47PIaDgqG+mjZR3hRRKQq3iNHy\n" + + "pwDwvSima1XX0KnrzLg+\n" + + "-----END CERTIFICATE-----\n"; + + public static PrivateKey loadTestPrivateKeySM2() { + return PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_SM2, "EC", KonaProvider.NAME); + } + + public static PrivateKey loadTestPrivateKeyRSA() { + return PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_SM2); + } + + public static X509Certificate loadTestSM2() { + return PemFile.loadX509FromString(CERTIFICATE_TEXT_SM2, KonaProvider.NAME); + } + + public static X509Certificate loadTestRSA() { + return PemFile.loadX509FromString(CERTIFICATE_TEXT_RSA); + } +}