增加BCUtil.decodeECPrivateKey方法(issue#3829@Github)

This commit is contained in:
Looly
2025-01-01 19:08:11 +08:00
parent fd45eecda1
commit 224bfee92e
4 changed files with 143 additions and 57 deletions

View File

@@ -210,8 +210,8 @@ public class SM2Test {
final byte[] data = KeyUtil.encodeECPublicKey(publicKey);
final String encodeHex = HexUtil.encodeStr(data);
final String encodeB64 = Base64.encode(data);
final PublicKey Hexdecode = KeyUtil.decodeECPoint(encodeHex, SM2Constant.SM2_CURVE_NAME);
final PublicKey B64decode = KeyUtil.decodeECPoint(encodeB64, SM2Constant.SM2_CURVE_NAME);
final PublicKey Hexdecode = KeyUtil.decodeECPublicKey(encodeHex, SM2Constant.SM2_CURVE_NAME);
final PublicKey B64decode = KeyUtil.decodeECPublicKey(encodeB64, SM2Constant.SM2_CURVE_NAME);
Assertions.assertEquals(HexUtil.encodeStr(publicKey.getEncoded()), HexUtil.encodeStr(Hexdecode.getEncoded()));
Assertions.assertEquals(HexUtil.encodeStr(publicKey.getEncoded()), HexUtil.encodeStr(B64decode.getEncoded()));
}

View File

@@ -54,4 +54,16 @@ public class ECKeyUtilTest {
final PublicKey ecPublicKey = ECKeyUtil.getECPublicKey((ECPrivateKey) sm2.getPrivate(), SM2Constant.SM2_EC_SPEC);
Assertions.assertEquals(sm2.getPublic(), ecPublicKey);
}
@Test
void encodeAndDecodeECPrivateKeyTest(){
// 生成一个EC密钥对
final KeyPair ecKeyPair = KeyUtil.generateKeyPair("EC");
final ECPrivateKey ecPrivateKey = (ECPrivateKey) ecKeyPair.getPrivate();
final byte[] bytes = ECKeyUtil.encodeECPrivateKey(ecPrivateKey);
final ECPrivateKey decodedPrivateKey = (ECPrivateKey) ECKeyUtil.decodeECPrivateKey(bytes, "secp256r1");
Assertions.assertEquals(ecPrivateKey.getD(), decodedPrivateKey.getD());
}
}