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.
54 lines
4.3 KiB
54 lines
4.3 KiB
package com.fr.password.tool.keys; |
|
|
|
import com.fr.password.tool.util.BCECUtil; |
|
import com.fr.password.tool.util.EncodeUtil; |
|
import com.fr.password.tool.util.smx.SM2KeyPair; |
|
import com.fr.password.tool.util.smx.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))); |
|
|
|
String systemPrivate = "MzA4MjAxNTEwMjAxMDEwNDIwYzQxYTMyYzRhOWMwMTFhYmE0Yzk2NjA4YjUwMDA1NzllNzA2ZmRmZDA2NDE4NjljNmRjNGJkNDY3MmQ1YWI4ZmEwODFlMzMwODFlMDAyMDEwMTMwMmMwNjA3MmE4NjQ4Y2UzZDAxMDEwMjIxMDBmZmZmZmZmZWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmMzA0NDA0MjBmZmZmZmZmZWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZjMDQyMDI4ZTlmYTllOWQ5ZjVlMzQ0ZDVhOWU0YmNmNjUwOWE3ZjM5Nzg5ZjUxNWFiOGY5MmRkYmNiZDQxNGQ5NDBlOTMwNDQxMDQzMmM0YWUyYzFmMTk4MTE5NWY5OTA0NDY2YTM5Yzk5NDhmZTMwYmJmZjI2NjBiZTE3MTVhNDU4OTMzNGM3NGM3YmMzNzM2YTJmNGY2Nzc5YzU5YmRjZWUzNmI2OTIxNTNkMGE5ODc3Y2M2MmE0NzQwMDJkZjMyZTUyMTM5ZjBhMDAyMjEwMGZmZmZmZmZlZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmNzIwM2RmNmIyMWM2MDUyYjUzYmJmNDA5MzlkNTQxMjMwMjAxMDFhMTQ0MDM0MjAwMDQ4NjljY2VkZGM0YzI1ZmMzOGQ3MjZkM2QxOTYyZDgzYjkyMTM4ZmU1MWRlNDE3NzZjOTg1ODc5NGJmZDEwOWNkYTBjOWIwNGNkMzY4MDk3YTQ4ZDk0ODhhNzhmMjRiODA2ODA1NWYzNWMyOTk2OWUxZmFkODQ4MTY3MzVjNDUyNQ=="; |
|
ECPrivateKeyParameters pri = SM2KeysHandler.getInstance().string2PrivateKey(systemPrivate); |
|
ECPublicKeyParameters pub = BCECUtil.buildECPublicKeyByPrivateKey(pri); |
|
System.out.println(SM2KeysHandler.getInstance().publicKey2String(pub,pri)); |
|
|
|
} |
|
|
|
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)))); |
|
} |
|
} |