From 2c6a18c83fb45f9642f605d9467df93980b257e5 Mon Sep 17 00:00:00 2001 From: Benjamin Conlan Date: Mon, 29 Jun 2026 14:19:58 +1000 Subject: [PATCH] Updated api/dependencies simplify post JDK8 runtimes: - Remove JAXB api calls - Add conditional dependency to javax.annotation library --- webull-openapi-java-sdk/pom.xml | 17 +++++++++++++++++ .../core/auth/signer/HmacSHA1Signer.java | 4 ++-- .../core/auth/signer/HmacSHA256Signer.java | 4 ++-- .../core/auth/signer/SHA256withRSASigner.java | 6 +++--- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/webull-openapi-java-sdk/pom.xml b/webull-openapi-java-sdk/pom.xml index b6d7082..3cf8497 100644 --- a/webull-openapi-java-sdk/pom.xml +++ b/webull-openapi-java-sdk/pom.xml @@ -107,4 +107,21 @@ + + + + java-post-8 + + [9,) + + + + javax.annotation + javax.annotation-api + 1.3.2 + + + + + \ No newline at end of file diff --git a/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA1Signer.java b/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA1Signer.java index 0b2d1dd..c97e23b 100644 --- a/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA1Signer.java +++ b/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA1Signer.java @@ -20,10 +20,10 @@ import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; +import java.util.Base64; public class HmacSHA1Signer implements Signer { @@ -36,7 +36,7 @@ public String getSign(String source, String secret) { Mac mac = Mac.getInstance(ALGORITHM); mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), ALGORITHM)); byte[] signData = mac.doFinal(source.getBytes(StandardCharsets.UTF_8)); - return DatatypeConverter.printBase64Binary(signData); + return Base64.getEncoder().encodeToString(signData); } catch (NoSuchAlgorithmException | InvalidKeyException e) { throw new ClientException(ErrorCode.INVALID_CREDENTIAL, e); } diff --git a/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA256Signer.java b/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA256Signer.java index b5bc9fd..028f22a 100644 --- a/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA256Signer.java +++ b/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/HmacSHA256Signer.java @@ -21,10 +21,10 @@ import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; -import javax.xml.bind.DatatypeConverter; import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; +import java.util.Base64; public class HmacSHA256Signer implements Signer { @@ -37,7 +37,7 @@ public String getSign(String source, String secret) { Mac mac = Mac.getInstance(ALGORITHM); mac.init(new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), ALGORITHM)); byte[] signData = mac.doFinal(source.getBytes(StandardCharsets.UTF_8)); - return DatatypeConverter.printBase64Binary(signData); + return Base64.getEncoder().encodeToString(signData); } catch (NoSuchAlgorithmException | InvalidKeyException e) { throw new ClientException(ErrorCode.INVALID_CREDENTIAL, e); } diff --git a/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/SHA256withRSASigner.java b/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/SHA256withRSASigner.java index bd3086a..bcb3645 100644 --- a/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/SHA256withRSASigner.java +++ b/webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/auth/signer/SHA256withRSASigner.java @@ -18,7 +18,6 @@ import com.webull.openapi.core.exception.ClientException; import com.webull.openapi.core.exception.ErrorCode; -import javax.xml.bind.DatatypeConverter; import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.KeyFactory; @@ -28,6 +27,7 @@ import java.security.SignatureException; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; +import java.util.Base64; public class SHA256withRSASigner implements Signer { @@ -39,12 +39,12 @@ public String getSign(String source, String secret) { try { Signature rsaSign = Signature.getInstance(SignAlgorithm.SHA256_WITH_RSA.getSignerName()); KeyFactory kf = KeyFactory.getInstance(ALGORITHM); - byte[] keySpec = DatatypeConverter.parseBase64Binary(secret); + byte[] keySpec = Base64.getDecoder().decode(secret); PrivateKey privateKey = kf.generatePrivate(new PKCS8EncodedKeySpec(keySpec)); rsaSign.initSign(privateKey); rsaSign.update(source.getBytes(StandardCharsets.UTF_8)); byte[] sign = rsaSign.sign(); - return DatatypeConverter.printBase64Binary(sign); + return Base64.getEncoder().encodeToString(sign); } catch (NoSuchAlgorithmException | InvalidKeySpecException | InvalidKeyException | SignatureException e) { throw new ClientException(ErrorCode.INVALID_CREDENTIAL, e); }