test: sm test
parent
75bc61e6b8
commit
074c711fdd
|
|
@ -1,11 +1,16 @@
|
||||||
package com.czcb.scfs.api.sm;
|
package com.czcb.scfs.api.sm;
|
||||||
|
|
||||||
import com.czcb.scfs.api.core.DefaultChannel;
|
import com.czcb.scfs.api.core.DefaultChannel;
|
||||||
|
import com.czcb.scfs.api.core.http.DefaultHttpProfile;
|
||||||
import com.czcb.scfs.api.core.util.PemFile;
|
import com.czcb.scfs.api.core.util.PemFile;
|
||||||
import com.tencent.kona.KonaProvider;
|
import com.tencent.kona.KonaProvider;
|
||||||
|
import org.assertj.core.util.Lists;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
import static com.czcb.scfs.api.sm.SMKeyText.CERTIFICATE_TEXT_SM2;
|
import static com.czcb.scfs.api.sm.SMKeyText.CERTIFICATE_TEXT_SM2;
|
||||||
|
|
@ -46,4 +51,106 @@ class SmProfileTest {
|
||||||
Assertions.assertNotNull(profile.getPrivacy().getDecryptor().getPrivateKey());
|
Assertions.assertNotNull(profile.getPrivacy().getDecryptor().getPrivateKey());
|
||||||
Assertions.assertNotNull(profile.getPrivacy().getEncryptor().getPublicKey());
|
Assertions.assertNotNull(profile.getPrivacy().getEncryptor().getPublicKey());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test2() throws IOException {
|
||||||
|
File privateFile = File.createTempFile("private_text_sm2.", ".pem");
|
||||||
|
write(privateFile, PRIVATE_TEXT_SM2);
|
||||||
|
|
||||||
|
File certificateFile = File.createTempFile("certificate_text_sm2.", ".pem");
|
||||||
|
write(certificateFile, CERTIFICATE_TEXT_SM2);
|
||||||
|
|
||||||
|
SmProfile profile = new SmProfile.Builder()
|
||||||
|
.channel(new DefaultChannel.Builder()
|
||||||
|
.channelNo("0000")
|
||||||
|
.appNo("100001")
|
||||||
|
.build())
|
||||||
|
.privateKey(privateFile.getAbsolutePath())
|
||||||
|
.addCertificate(certificateFile.getAbsolutePath())
|
||||||
|
.certificateSerial("B47BF250D13D6DC72D2869D340CDF8B830F2CFD320B652586C3D4861F86CA355")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
privateFile.delete();
|
||||||
|
certificateFile.delete();
|
||||||
|
|
||||||
|
Assertions.assertNotNull(profile);
|
||||||
|
|
||||||
|
String message = "1234567";
|
||||||
|
String signResult = profile.getSignature().getSigner().sign(message).getSignature();
|
||||||
|
Assertions.assertTrue(profile.getSignature().getVerifier().verify("B47BF250D13D6DC72D2869D340CDF8B830F2CFD320B652586C3D4861F86CA355", 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());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void write(File file, String text) throws IOException {
|
||||||
|
FileOutputStream outputStream = new FileOutputStream(file);
|
||||||
|
outputStream.write(text.getBytes(StandardCharsets.UTF_8));
|
||||||
|
outputStream.flush();
|
||||||
|
outputStream.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test3() {
|
||||||
|
SmProfile profile = new SmProfile.Builder()
|
||||||
|
.channel(new DefaultChannel.Builder()
|
||||||
|
.channelNo("0000")
|
||||||
|
.appNo("100001")
|
||||||
|
.build())
|
||||||
|
.privateKey(PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_SM2, "EC", KonaProvider.NAME))
|
||||||
|
.addCertificates(Lists.list(PemFile.loadX509FromString(CERTIFICATE_TEXT_SM2, KonaProvider.NAME)))
|
||||||
|
.certificateSerial("B47BF250D13D6DC72D2869D340CDF8B830F2CFD320B652586C3D4861F86CA355")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Assertions.assertNotNull(profile);
|
||||||
|
|
||||||
|
String message = "1234567";
|
||||||
|
String signResult = profile.getSignature().getSigner().sign(message).getSignature();
|
||||||
|
Assertions.assertTrue(profile.getSignature().getVerifier().verify("B47BF250D13D6DC72D2869D340CDF8B830F2CFD320B652586C3D4861F86CA355", 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());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test4() {
|
||||||
|
SmProfile profile = new SmProfile.Builder()
|
||||||
|
.channel(new DefaultChannel.Builder()
|
||||||
|
.channelNo("0000")
|
||||||
|
.appNo("100001")
|
||||||
|
.build())
|
||||||
|
.httpProfile(new DefaultHttpProfile.Builder()
|
||||||
|
.host("test")
|
||||||
|
.build())
|
||||||
|
.privateKey(PemFile.loadPrivateKeyFromString(PRIVATE_TEXT_SM2, "EC", KonaProvider.NAME))
|
||||||
|
.addCertificates(Lists.list(PemFile.loadX509FromString(CERTIFICATE_TEXT_SM2, KonaProvider.NAME)))
|
||||||
|
.certificateSerial("B47BF250D13D6DC72D2869D340CDF8B830F2CFD320B652586C3D4861F86CA355")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
Assertions.assertEquals("test", profile.getHttpProfile().getHost());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue