From 32331c2b23a6602300dd46b963853058c7623f7e Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 3 Dec 2024 23:53:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DJWTSignerUtil.createSigner?= =?UTF-8?q?=E4=B8=ADalgorithmId=E6=9C=AA=E8=BD=AC=E6=8D=A2=E9=97=AE?= =?UTF-8?q?=E9=A2=98=EF=BC=88issue#3806@Github=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../json/jwt/signers/JWTSignerUtil.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/jwt/signers/JWTSignerUtil.java b/hutool-json/src/main/java/org/dromara/hutool/json/jwt/signers/JWTSignerUtil.java index 0c08bb6d5..348bed343 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/jwt/signers/JWTSignerUtil.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/jwt/signers/JWTSignerUtil.java @@ -23,6 +23,7 @@ import java.security.Key; import java.security.KeyPair; import java.security.PrivateKey; import java.security.PublicKey; +import java.util.regex.Pattern; /** * JWT签名器工具类 @@ -32,6 +33,8 @@ import java.security.PublicKey; */ public class JWTSignerUtil { + private static final Pattern ES_ALGORITHM_PATTERN = Pattern.compile("es\\d{3}", Pattern.CASE_INSENSITIVE); + /** * 无签名 * @@ -267,12 +270,13 @@ public class JWTSignerUtil { return none(); } + final String algorithm = AlgorithmUtil.getAlgorithm(algorithmId); // issue3205@Github - if(ReUtil.isMatch("es\\d{3}", algorithmId.toLowerCase())){ - return new EllipticCurveJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), keyPair); + if(ReUtil.isMatch(ES_ALGORITHM_PATTERN, algorithmId)){ + return new EllipticCurveJWTSigner(algorithm, keyPair); } - return new AsymmetricJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), keyPair); + return new AsymmetricJWTSigner(algorithm, keyPair); } /** @@ -288,14 +292,16 @@ public class JWTSignerUtil { if (null == algorithmId || NoneJWTSigner.ID_NONE.equals(algorithmId)) { return NoneJWTSigner.NONE; } + + final String algorithm = AlgorithmUtil.getAlgorithm(algorithmId); if (key instanceof PrivateKey || key instanceof PublicKey) { // issue3205@Github - if(ReUtil.isMatch("ES\\d{3}", algorithmId)){ - return new EllipticCurveJWTSigner(algorithmId, key); + if(ReUtil.isMatch(ES_ALGORITHM_PATTERN, algorithmId)){ + return new EllipticCurveJWTSigner(algorithm, key); } - return new AsymmetricJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), key); + return new AsymmetricJWTSigner(algorithm, key); } - return new HMacJWTSigner(AlgorithmUtil.getAlgorithm(algorithmId), key); + return new HMacJWTSigner(algorithm, key); } }