From 143af4258dd8d405b8ff314b271e9fd975c80104 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 14 Aug 2024 08:37:02 +0800 Subject: [PATCH] add KeyManagerUtil --- .../hutool/core/net/ssl}/KeyManagerUtil.java | 49 ++++++++++++++----- .../hutool/core/net/ssl/TrustManagerUtil.java | 3 +- 2 files changed, 38 insertions(+), 14 deletions(-) rename {hutool-crypto/src/main/java/org/dromara/hutool/crypto => hutool-core/src/main/java/org/dromara/hutool/core/net/ssl}/KeyManagerUtil.java (61%) diff --git a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/KeyManagerUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/net/ssl/KeyManagerUtil.java similarity index 61% rename from hutool-crypto/src/main/java/org/dromara/hutool/crypto/KeyManagerUtil.java rename to hutool-core/src/main/java/org/dromara/hutool/core/net/ssl/KeyManagerUtil.java index 581957450..258426219 100644 --- a/hutool-crypto/src/main/java/org/dromara/hutool/crypto/KeyManagerUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/net/ssl/KeyManagerUtil.java @@ -14,17 +14,18 @@ * limitations under the License. */ -package org.dromara.hutool.crypto; +package org.dromara.hutool.core.net.ssl; +import org.dromara.hutool.core.exception.HutoolException; import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.crypto.provider.GlobalProviderFactory; import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManagerFactory; import java.security.*; /** - * {@link KeyManager}相关工具 + * {@link KeyManager}相关工具
+ * 此工具用于读取和使用数字证书、对称密钥等相关信息 * * @author Looly * @since 6.0.0 @@ -32,13 +33,22 @@ import java.security.*; public class KeyManagerUtil { /** - * 获取{@link KeyManagerFactory},使用全局算法提供者 + * 获取{@link KeyManagerFactory} * - * @param algorithm 算法,{@code null}表示默认算法,如SunX509 * @return {@link KeyManagerFactory} */ - public static KeyManagerFactory getKeyManagerFactory(final String algorithm) { - return getKeyManagerFactory(algorithm, GlobalProviderFactory.getProvider()); + public static KeyManagerFactory getDefaultKeyManagerFactory() { + return getDefaultKeyManagerFactory(null); + } + + /** + * 获取{@link KeyManagerFactory} + * + * @param provider 算法提供者,{@code null}使用JDK默认 + * @return {@link KeyManagerFactory} + */ + public static KeyManagerFactory getDefaultKeyManagerFactory(final Provider provider) { + return getKeyManagerFactory(null, provider); } /** @@ -56,23 +66,36 @@ public class KeyManagerUtil { try { return null == provider ? KeyManagerFactory.getInstance(algorithm) : KeyManagerFactory.getInstance(algorithm, provider); } catch (final NoSuchAlgorithmException e) { - throw new CryptoException(e); + throw new HutoolException(e); } } /** * 从KeyStore中获取{@link KeyManager}列表 * - * @param keyStore KeyStore - * @param password 密码 + * @param keyStore KeyStore + * @param password 密码 * @return {@link KeyManager}列表 */ - public static KeyManager[] getKeyManagers(final KeyStore keyStore, final char[] password) { - final KeyManagerFactory keyManagerFactory = getKeyManagerFactory(null); + public static KeyManager[] getDefaultKeyManagers(final KeyStore keyStore, final char[] password) { + return getKeyManagers(keyStore, password, null, null); + } + + /** + * 从KeyStore中获取{@link KeyManager}列表 + * + * @param keyStore KeyStore + * @param password 密码 + * @param algorithm 算法,{@code null}表示默认算法,如SunX509 + * @param provider 算法提供者,{@code null}使用JDK默认 + * @return {@link KeyManager}列表 + */ + public static KeyManager[] getKeyManagers(final KeyStore keyStore, final char[] password, final String algorithm, final Provider provider) { + final KeyManagerFactory keyManagerFactory = getKeyManagerFactory(algorithm, provider); try { keyManagerFactory.init(keyStore, password); } catch (final KeyStoreException | NoSuchAlgorithmException | UnrecoverableKeyException e) { - throw new CryptoException(e); + throw new HutoolException(e); } return keyManagerFactory.getKeyManagers(); } diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/net/ssl/TrustManagerUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/net/ssl/TrustManagerUtil.java index a62fc4bc8..3b50385f2 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/net/ssl/TrustManagerUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/net/ssl/TrustManagerUtil.java @@ -28,7 +28,8 @@ import java.security.NoSuchAlgorithmException; import java.security.Provider; /** - * {@link TrustManager}相关工具类 + * {@link TrustManager}相关工具类
+ * 此工具用于管理可信任的证书等信息 * * @author Looly * @since 6.0.0