mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
remove methods
This commit is contained in:
parent
ad7ec3ffaa
commit
c210e6be41
@ -12,12 +12,6 @@
|
||||
|
||||
package org.dromara.hutool.crypto.asymmetric;
|
||||
|
||||
import org.dromara.hutool.core.lang.Assert;
|
||||
import org.dromara.hutool.core.codec.HexUtil;
|
||||
import org.dromara.hutool.crypto.bc.BCUtil;
|
||||
import org.dromara.hutool.crypto.CryptoException;
|
||||
import org.dromara.hutool.crypto.bc.ECKeyUtil;
|
||||
import org.dromara.hutool.crypto.SecureUtil;
|
||||
import org.bouncycastle.crypto.CipherParameters;
|
||||
import org.bouncycastle.crypto.Digest;
|
||||
import org.bouncycastle.crypto.InvalidCipherTextException;
|
||||
@ -33,6 +27,11 @@ import org.bouncycastle.crypto.signers.SM2Signer;
|
||||
import org.bouncycastle.crypto.signers.StandardDSAEncoding;
|
||||
import org.bouncycastle.util.BigIntegers;
|
||||
import org.bouncycastle.util.encoders.Hex;
|
||||
import org.dromara.hutool.core.codec.HexUtil;
|
||||
import org.dromara.hutool.core.lang.Assert;
|
||||
import org.dromara.hutool.crypto.CryptoException;
|
||||
import org.dromara.hutool.crypto.SecureUtil;
|
||||
import org.dromara.hutool.crypto.bc.ECKeyUtil;
|
||||
import org.dromara.hutool.crypto.bc.SmUtil;
|
||||
|
||||
import java.math.BigInteger;
|
||||
@ -118,7 +117,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
||||
* @param publicKey 公钥
|
||||
*/
|
||||
public SM2(final PrivateKey privateKey, final PublicKey publicKey) {
|
||||
this(BCUtil.toParams(privateKey), BCUtil.toParams(publicKey));
|
||||
this(ECKeyUtil.toPrivateParams(privateKey), ECKeyUtil.toPublicParams(publicKey));
|
||||
if (null != privateKey) {
|
||||
this.privateKey = privateKey;
|
||||
}
|
||||
@ -132,13 +131,13 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
||||
*
|
||||
* @param privateKeyHex 私钥16进制
|
||||
* @param privateKeyDValue 私钥16进制(私钥D值)
|
||||
* @param publicKeyPointXHex 公钥X16进制
|
||||
* @param publicKeyPointYHex 公钥Y16进制
|
||||
* @since 5.2.0
|
||||
*/
|
||||
public SM2(final String privateKeyHex, final String publicKeyPointXHex, final String publicKeyPointYHex) {
|
||||
this(BCUtil.toSm2Params(privateKeyHex), BCUtil.toSm2Params(publicKeyPointXHex, publicKeyPointYHex));
|
||||
public SM2(final String privateKeyDValue, final String publicKeyPointXHex, final String publicKeyPointYHex) {
|
||||
this(ECKeyUtil.toSm2PrivateParams(privateKeyDValue), ECKeyUtil.toSm2PublicParams(publicKeyPointXHex, publicKeyPointYHex));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -146,13 +145,14 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
||||
*
|
||||
* @param privateKey 私钥
|
||||
* @param privateKeyDValue 私钥(D值)
|
||||
* @param publicKeyPointX 公钥X
|
||||
* @param publicKeyPointY 公钥Y
|
||||
* @since 5.2.0
|
||||
*/
|
||||
public SM2(final byte[] privateKey, final byte[] publicKeyPointX, final byte[] publicKeyPointY) {
|
||||
this(BCUtil.toSm2Params(privateKey), BCUtil.toSm2Params(publicKeyPointX, publicKeyPointY));
|
||||
public SM2(final byte[] privateKeyDValue, final byte[] publicKeyPointX, final byte[] publicKeyPointY) {
|
||||
this(ECKeyUtil.toSm2PrivateParams(privateKeyDValue),
|
||||
ECKeyUtil.toSm2PublicParams(publicKeyPointX, publicKeyPointY));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -182,8 +182,8 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
||||
public SM2 init() {
|
||||
if (null == this.privateKeyParams && null == this.publicKeyParams) {
|
||||
super.initKeys();
|
||||
this.privateKeyParams = BCUtil.toParams(this.privateKey);
|
||||
this.publicKeyParams = BCUtil.toParams(this.publicKey);
|
||||
this.privateKeyParams = ECKeyUtil.toPrivateParams(this.privateKey);
|
||||
this.publicKeyParams = ECKeyUtil.toPublicParams(this.publicKey);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@ -441,7 +441,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
||||
super.setPrivateKey(privateKey);
|
||||
|
||||
// 重新初始化密钥参数,防止重新设置密钥时导致密钥无法更新
|
||||
this.privateKeyParams = BCUtil.toParams(privateKey);
|
||||
this.privateKeyParams = ECKeyUtil.toPrivateParams(privateKey);
|
||||
|
||||
return this;
|
||||
}
|
||||
@ -463,7 +463,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
||||
super.setPublicKey(publicKey);
|
||||
|
||||
// 重新初始化密钥参数,防止重新设置密钥时导致密钥无法更新
|
||||
this.publicKeyParams = BCUtil.toParams(publicKey);
|
||||
this.publicKeyParams = ECKeyUtil.toPublicParams(publicKey);
|
||||
|
||||
return this;
|
||||
}
|
||||
@ -535,7 +535,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
||||
* @since 5.5.9
|
||||
*/
|
||||
public byte[] getD() {
|
||||
return BigIntegers.asUnsignedByteArray(32,getDBigInteger());
|
||||
return BigIntegers.asUnsignedByteArray(32, getDBigInteger());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -12,14 +12,10 @@
|
||||
|
||||
package org.dromara.hutool.crypto.bc;
|
||||
|
||||
import org.dromara.hutool.core.io.IORuntimeException;
|
||||
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
|
||||
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
|
||||
import org.bouncycastle.asn1.x9.X9ECParameters;
|
||||
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
|
||||
import org.bouncycastle.crypto.params.ECDomainParameters;
|
||||
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
||||
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
||||
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
|
||||
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
|
||||
import org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util;
|
||||
@ -27,12 +23,11 @@ import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
|
||||
import org.bouncycastle.jce.spec.ECNamedCurveSpec;
|
||||
import org.bouncycastle.jce.spec.ECParameterSpec;
|
||||
import org.bouncycastle.math.ec.ECCurve;
|
||||
import org.dromara.hutool.crypto.*;
|
||||
import org.dromara.hutool.core.io.IORuntimeException;
|
||||
import org.dromara.hutool.crypto.KeyUtil;
|
||||
import org.dromara.hutool.crypto.SecureUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.security.Key;
|
||||
import java.security.PrivateKey;
|
||||
import java.security.PublicKey;
|
||||
import java.security.spec.ECPoint;
|
||||
@ -155,182 +150,6 @@ public class BCUtil {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 密钥转换为AsymmetricKeyParameter
|
||||
*
|
||||
* @param key PrivateKey或者PublicKey
|
||||
* @return ECPrivateKeyParameters或者ECPublicKeyParameters
|
||||
* @since 5.2.0
|
||||
*/
|
||||
public static AsymmetricKeyParameter toParams(final Key key) {
|
||||
return ECKeyUtil.toParams(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为 ECPrivateKeyParameters
|
||||
*
|
||||
* @param d 私钥d值
|
||||
* @return ECPrivateKeyParameters
|
||||
*/
|
||||
public static ECPrivateKeyParameters toSm2Params(final String d) {
|
||||
return ECKeyUtil.toSm2PrivateParams(d);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为 ECPrivateKeyParameters
|
||||
*
|
||||
* @param dHex 私钥d值16进制字符串
|
||||
* @param domainParameters ECDomainParameters
|
||||
* @return ECPrivateKeyParameters
|
||||
*/
|
||||
public static ECPrivateKeyParameters toParams(final String dHex, final ECDomainParameters domainParameters) {
|
||||
return ECKeyUtil.toPrivateParams(dHex, domainParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为 ECPrivateKeyParameters
|
||||
*
|
||||
* @param d 私钥d值
|
||||
* @return ECPrivateKeyParameters
|
||||
*/
|
||||
public static ECPrivateKeyParameters toSm2Params(final byte[] d) {
|
||||
return ECKeyUtil.toSm2PrivateParams(d);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为 ECPrivateKeyParameters
|
||||
*
|
||||
* @param d 私钥d值
|
||||
* @param domainParameters ECDomainParameters
|
||||
* @return ECPrivateKeyParameters
|
||||
*/
|
||||
public static ECPrivateKeyParameters toParams(final byte[] d, final ECDomainParameters domainParameters) {
|
||||
return ECKeyUtil.toPrivateParams(d, domainParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为 ECPrivateKeyParameters
|
||||
*
|
||||
* @param d 私钥d值
|
||||
* @return ECPrivateKeyParameters
|
||||
*/
|
||||
public static ECPrivateKeyParameters toSm2Params(final BigInteger d) {
|
||||
return ECKeyUtil.toSm2PrivateParams(d);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为 ECPrivateKeyParameters
|
||||
*
|
||||
* @param d 私钥d值
|
||||
* @param domainParameters ECDomainParameters
|
||||
* @return ECPrivateKeyParameters
|
||||
*/
|
||||
public static ECPrivateKeyParameters toParams(final BigInteger d, final ECDomainParameters domainParameters) {
|
||||
return ECKeyUtil.toPrivateParams(d, domainParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为ECPublicKeyParameters
|
||||
*
|
||||
* @param x 公钥X
|
||||
* @param y 公钥Y
|
||||
* @param domainParameters ECDomainParameters
|
||||
* @return ECPublicKeyParameters
|
||||
*/
|
||||
public static ECPublicKeyParameters toParams(final BigInteger x, final BigInteger y, final ECDomainParameters domainParameters) {
|
||||
return ECKeyUtil.toPublicParams(x, y, domainParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为SM2的ECPublicKeyParameters
|
||||
*
|
||||
* @param xHex 公钥X
|
||||
* @param yHex 公钥Y
|
||||
* @return ECPublicKeyParameters
|
||||
*/
|
||||
public static ECPublicKeyParameters toSm2Params(final String xHex, final String yHex) {
|
||||
return ECKeyUtil.toSm2PublicParams(xHex, yHex);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为ECPublicKeyParameters
|
||||
*
|
||||
* @param xHex 公钥X
|
||||
* @param yHex 公钥Y
|
||||
* @param domainParameters ECDomainParameters
|
||||
* @return ECPublicKeyParameters
|
||||
*/
|
||||
public static ECPublicKeyParameters toParams(final String xHex, final String yHex, final ECDomainParameters domainParameters) {
|
||||
return ECKeyUtil.toPublicParams(xHex, yHex, domainParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为SM2的ECPublicKeyParameters
|
||||
*
|
||||
* @param xBytes 公钥X
|
||||
* @param yBytes 公钥Y
|
||||
* @return ECPublicKeyParameters
|
||||
*/
|
||||
public static ECPublicKeyParameters toSm2Params(final byte[] xBytes, final byte[] yBytes) {
|
||||
return ECKeyUtil.toSm2PublicParams(xBytes, yBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换为ECPublicKeyParameters
|
||||
*
|
||||
* @param xBytes 公钥X
|
||||
* @param yBytes 公钥Y
|
||||
* @param domainParameters ECDomainParameters
|
||||
* @return ECPublicKeyParameters
|
||||
*/
|
||||
public static ECPublicKeyParameters toParams(final byte[] xBytes, final byte[] yBytes, final ECDomainParameters domainParameters) {
|
||||
return ECKeyUtil.toPublicParams(xBytes, yBytes, domainParameters);
|
||||
}
|
||||
|
||||
/**
|
||||
* 公钥转换为 {@link ECPublicKeyParameters}
|
||||
*
|
||||
* @param publicKey 公钥,传入null返回null
|
||||
* @return {@link ECPublicKeyParameters}或null
|
||||
*/
|
||||
public static ECPublicKeyParameters toParams(final PublicKey publicKey) {
|
||||
return ECKeyUtil.toPublicParams(publicKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 私钥转换为 {@link ECPrivateKeyParameters}
|
||||
*
|
||||
* @param privateKey 私钥,传入null返回null
|
||||
* @return {@link ECPrivateKeyParameters}或null
|
||||
*/
|
||||
public static ECPrivateKeyParameters toParams(final PrivateKey privateKey) {
|
||||
return ECKeyUtil.toPrivateParams(privateKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取PEM格式的私钥
|
||||
*
|
||||
* @param pemStream pem流
|
||||
* @return {@link PrivateKey}
|
||||
* @since 5.2.5
|
||||
* @see PemUtil#readPemPrivateKey(InputStream)
|
||||
*/
|
||||
public static PrivateKey readPemPrivateKey(final InputStream pemStream) {
|
||||
return PemUtil.readPemPrivateKey(pemStream);
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取PEM格式的公钥
|
||||
*
|
||||
* @param pemStream pem流
|
||||
* @return {@link PublicKey}
|
||||
* @since 5.2.5
|
||||
* @see PemUtil#readPemPublicKey(InputStream)
|
||||
*/
|
||||
public static PublicKey readPemPublicKey(final InputStream pemStream) {
|
||||
return PemUtil.readPemPublicKey(pemStream);
|
||||
}
|
||||
|
||||
/**
|
||||
* Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式
|
||||
*
|
||||
|
@ -12,30 +12,6 @@
|
||||
|
||||
package org.dromara.hutool.crypto.bc;
|
||||
|
||||
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
||||
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class BCUtilTest {
|
||||
|
||||
/**
|
||||
* 密钥生成来自:<a href="https://i.goto327.top/CryptTools/SM2.aspx?tdsourcetag=s_pctim_aiomsg">...</a>
|
||||
*/
|
||||
@Test
|
||||
public void createECPublicKeyParametersTest() {
|
||||
final String x = "706AD9DAA3E5CEAC3DA59F583429E8043BAFC576BE10092C4EA4D8E19846CA62";
|
||||
final String y = "F7E938B02EED7280277493B8556E5B01CB436E018A562DFDC53342BF41FDF728";
|
||||
|
||||
final ECPublicKeyParameters keyParameters = BCUtil.toSm2Params(x, y);
|
||||
Assertions.assertNotNull(keyParameters);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createECPrivateKeyParametersTest() {
|
||||
final String privateKeyHex = "5F6CA5BB044C40ED2355F0372BF72A5B3AE6943712F9FDB7C1FFBAECC06F3829";
|
||||
|
||||
final ECPrivateKeyParameters keyParameters = BCUtil.toSm2Params(privateKeyHex);
|
||||
Assertions.assertNotNull(keyParameters);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2023. looly(loolly@aliyun.com)
|
||||
* Hutool is licensed under Mulan PSL v2.
|
||||
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
* You may obtain a copy of Mulan PSL v2 at:
|
||||
* https://license.coscl.org.cn/MulanPSL2
|
||||
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
* See the Mulan PSL v2 for more details.
|
||||
*/
|
||||
|
||||
package org.dromara.hutool.crypto.bc;
|
||||
|
||||
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
||||
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class ECKeyUtilTest {
|
||||
|
||||
/**
|
||||
* 密钥生成来自:<a href="https://i.goto327.top/CryptTools/SM2.aspx?tdsourcetag=s_pctim_aiomsg">...</a>
|
||||
*/
|
||||
@Test
|
||||
public void createECPublicKeyParametersTest() {
|
||||
final String x = "706AD9DAA3E5CEAC3DA59F583429E8043BAFC576BE10092C4EA4D8E19846CA62";
|
||||
final String y = "F7E938B02EED7280277493B8556E5B01CB436E018A562DFDC53342BF41FDF728";
|
||||
|
||||
final ECPublicKeyParameters keyParameters = ECKeyUtil.toSm2PublicParams(x, y);
|
||||
Assertions.assertNotNull(keyParameters);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createECPrivateKeyParametersTest() {
|
||||
final String privateKeyHex = "5F6CA5BB044C40ED2355F0372BF72A5B3AE6943712F9FDB7C1FFBAECC06F3829";
|
||||
|
||||
final ECPrivateKeyParameters keyParameters = ECKeyUtil.toSm2PrivateParams(privateKeyHex);
|
||||
Assertions.assertNotNull(keyParameters);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user