Skip to content

Commit

Permalink
优化SM2Util.load*FromFile方法中的字符流或字节流的关闭。
Browse files Browse the repository at this point in the history
删除冗余的配置文件,调整sm2和sm3的对象池最大数,防止测试并发时导致的异常问题

Signed-off-by: xiaohui249 <[email protected]>
  • Loading branch information
xiaohui249 committed Aug 23, 2022
1 parent 50a016e commit 61075fb
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 40 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ build
*.pem
gradle/
gradlew
gradlew.bat
gradlew.bat
out/
45 changes: 20 additions & 25 deletions src/main/java/twgc/gm/sm2/SM2Util.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ public void setSignature(Signature signature) {
* 生成 PKCS#10 证书请求
*
* @return RSA P10 证书请求 Base64 字符串
* @throws InvalidAlgorithmParameterException 当采用的 ECC 算法不适用于该密钥对生成器时
*/
public KeyPair generatekeyPair() {
return generator.generateKeyPair();
Expand Down Expand Up @@ -153,7 +152,6 @@ public static String pemFrom(PrivateKey privateKey, String password) throws Oper
return sw.toString();
}


public static String pemFrom(PublicKey publicKey) throws IOException {
StringWriter sw = new StringWriter();
try (PemWriter pemWriter = new PemWriter(sw)) {
Expand Down Expand Up @@ -187,42 +185,39 @@ public static String pemFrom(X509Certificate x509Certificate) throws IOException
}

public static PrivateKey loadPrivFromFile(String filename, String password) throws IOException, OperatorCreationException, PKCSException {
FileReader fr = new FileReader(filename);
PEMParser pemReader = new PEMParser(fr);
Object obj = pemReader.readObject();
PrivateKey priv = null;
fr.close();
pemReader.close();
if (password != null && password.length() > 0) {
if (obj instanceof PKCS8EncryptedPrivateKeyInfo) {
PKCS8EncryptedPrivateKeyInfo epkInfo = (PKCS8EncryptedPrivateKeyInfo) obj;
InputDecryptorProvider decryptor = new JceOpenSSLPKCS8DecryptorProviderBuilder()
.setProvider(BouncyCastleProvider.PROVIDER_NAME)
.build(password.toCharArray());
PrivateKeyInfo pkInfo = epkInfo.decryptPrivateKeyInfo(decryptor);
priv = CONVERTER.getPrivateKey(pkInfo);
try (PEMParser pemParser = new PEMParser(new FileReader(filename))) {
Object obj = pemParser.readObject();
if (password != null && password.length() > 0) {
if (obj instanceof PKCS8EncryptedPrivateKeyInfo) {
PKCS8EncryptedPrivateKeyInfo epkInfo = (PKCS8EncryptedPrivateKeyInfo) obj;
InputDecryptorProvider decryptor = new JceOpenSSLPKCS8DecryptorProviderBuilder()
.setProvider(BouncyCastleProvider.PROVIDER_NAME)
.build(password.toCharArray());
PrivateKeyInfo pkInfo = epkInfo.decryptPrivateKeyInfo(decryptor);
priv = CONVERTER.getPrivateKey(pkInfo);
}
} else {
priv = CONVERTER.getPrivateKey((PrivateKeyInfo) obj);
}
} else {
priv = CONVERTER.getPrivateKey((PrivateKeyInfo) obj);
}
return priv;
}


public static PublicKey loadPublicFromFile(String filename) throws IOException, NoSuchProviderException, NoSuchAlgorithmException, InvalidKeySpecException {
FileReader fr = new FileReader(filename);
PemObject spki = new PemReader(fr).readPemObject();
fr.close();
Provider p = Security.getProvider(BouncyCastleProvider.PROVIDER_NAME);
return KeyFactory.getInstance(Const.EC_VALUE, BouncyCastleProvider.PROVIDER_NAME).generatePublic(new X509EncodedKeySpec(spki.getContent()));
try (PemReader pemReader = new PemReader(new FileReader(filename))) {
PemObject spki = pemReader.readPemObject();
Security.getProvider(BouncyCastleProvider.PROVIDER_NAME);
return KeyFactory.getInstance(Const.EC_VALUE, BouncyCastleProvider.PROVIDER_NAME).generatePublic(new X509EncodedKeySpec(spki.getContent()));
}
}

public static X509Certificate loadX509CertificateFromFile(String filename) throws IOException, CertificateException,
NoSuchProviderException {
FileInputStream in = null;
in = new FileInputStream(filename);
try (FileInputStream in = new FileInputStream(filename)) {
CertificateFactory cf = CertificateFactory.getInstance("X.509", BouncyCastleProvider.PROVIDER_NAME);
return (X509Certificate) cf.generateCertificate(in);
}
}

public static PublicKey derivePublicFromPrivate(PrivateKey privateKey) {
Expand Down
4 changes: 0 additions & 4 deletions src/test/resources/SM2Pool.properties

This file was deleted.

4 changes: 0 additions & 4 deletions src/test/resources/SM3Pool.properties

This file was deleted.

4 changes: 0 additions & 4 deletions src/test/resources/SM4Pool.properties

This file was deleted.

4 changes: 2 additions & 2 deletions src/test/resources/pool-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ default: &default

sm2:
<<: *default
maxTotal: 12
maxTotal: 30

sm3:
<<: *default
maxIdle: 10
maxTotal: 30

sm4:
<<: *default
Expand Down

0 comments on commit 61075fb

Please sign in to comment.