You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
3.0 KiB
47 lines
3.0 KiB
4 years ago
|
package com.fr.password.tool.keys;
|
||
|
|
||
|
import com.fr.password.tool.util.EncodeUtil;
|
||
|
import com.fr.password.tool.util.sm2.SM2KeyPair;
|
||
|
import com.fr.password.tool.util.sm2.SM2Util;
|
||
|
import junit.framework.TestCase;
|
||
|
import org.bouncycastle.crypto.InvalidCipherTextException;
|
||
|
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
||
|
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
||
|
import org.junit.Assert;
|
||
|
|
||
|
import java.io.IOException;
|
||
|
import java.security.InvalidAlgorithmParameterException;
|
||
|
import java.security.NoSuchAlgorithmException;
|
||
|
import java.security.NoSuchProviderException;
|
||
|
import java.security.spec.InvalidKeySpecException;
|
||
|
|
||
|
public class SM2KeysHandlerTest extends TestCase {
|
||
|
private String filePath = this.getClass().getClassLoader().getResource("sm2_key.txt").getPath();
|
||
|
|
||
|
public void testGenerate() throws InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException, IOException, InvalidKeySpecException {
|
||
|
SM2KeyPair sm2KeyPair = SM2KeysHandler.getInstance().generate();
|
||
|
Assert.assertNotNull(sm2KeyPair.getPrivateKeyParameters());
|
||
|
Assert.assertNotNull(sm2KeyPair.getPublicKeyParameters());
|
||
|
String privateKey = SM2KeysHandler.getInstance().privateKey2String(sm2KeyPair.getPrivateKeyParameters());
|
||
|
String publicLey = SM2KeysHandler.getInstance().publicKey2String(sm2KeyPair.getPublicKeyParameters(), sm2KeyPair.getPrivateKeyParameters());
|
||
|
Assert.assertNotNull(privateKey);
|
||
|
Assert.assertNotNull(publicLey);
|
||
|
ECPrivateKeyParameters privateKeyParameters = SM2KeysHandler.getInstance().string2PrivateKey(privateKey);
|
||
|
ECPublicKeyParameters publicKeyParameters = SM2KeysHandler.getInstance().string2PublicKey(publicLey, privateKey);
|
||
|
Assert.assertEquals(privateKeyParameters.getD(), sm2KeyPair.getPrivateKeyParameters().getD());
|
||
|
Assert.assertEquals(EncodeUtil.byte2HexString(publicKeyParameters.getQ().getEncoded(false)), EncodeUtil.byte2HexString(sm2KeyPair.getPublicKeyParameters().getQ().getEncoded(false)));
|
||
|
}
|
||
|
|
||
|
public void testLoadFromFile() throws IOException, InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException, InvalidCipherTextException {
|
||
|
SM2KeyPair sm2KeyPair = SM2KeysHandler.getInstance().loadFromFile(filePath);
|
||
|
Assert.assertNotNull(sm2KeyPair.getPublicKeyParameters());
|
||
|
Assert.assertNotNull(sm2KeyPair.getPrivateKeyParameters());
|
||
|
String privateKey = SM2KeysHandler.getInstance().privateKey2String(sm2KeyPair.getPrivateKeyParameters());
|
||
|
String publicKey = SM2KeysHandler.getInstance().publicKey2String(sm2KeyPair.getPublicKeyParameters(),sm2KeyPair.getPrivateKeyParameters());
|
||
|
Assert.assertNotNull(privateKey);
|
||
|
Assert.assertNotNull(publicKey);
|
||
|
String plainText = "This is a plain text";
|
||
|
String cipherText = EncodeUtil.byte2Base64(SM2Util.encrypt(sm2KeyPair.getPublicKeyParameters(),plainText.getBytes()));
|
||
|
Assert.assertEquals(plainText,new String(SM2Util.decrypt(sm2KeyPair.getPrivateKeyParameters(),EncodeUtil.base642Byte(cipherText))));
|
||
|
}
|
||
|
}
|