test: sm test

main
13009 2024-06-19 15:40:46 +08:00
parent 75bc61e6b8
commit 074c711fdd
1 changed files with 107 additions and 0 deletions

View File

@ -1,11 +1,16 @@
package com.czcb.scfs.api.sm;
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.tencent.kona.KonaProvider;
import org.assertj.core.util.Lists;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
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().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());
}
}