diff --git a/pom.xml b/pom.xml
index fdc5654..a6232ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -40,7 +40,7 @@
DashScope Java SDK
com.alibaba
dashscope-sdk-java
- 2.23.2
+ 2.23.3
8
diff --git a/src/main/java/com/alibaba/dashscope/Version.java b/src/main/java/com/alibaba/dashscope/Version.java
index 9d0fde9..c94315a 100644
--- a/src/main/java/com/alibaba/dashscope/Version.java
+++ b/src/main/java/com/alibaba/dashscope/Version.java
@@ -3,5 +3,5 @@
package com.alibaba.dashscope;
public final class Version {
- public static final String version = "2.23.2";
+ public static final String version = "2.23.3";
}
diff --git a/src/main/java/com/alibaba/dashscope/protocol/HalfDuplexRequest.java b/src/main/java/com/alibaba/dashscope/protocol/HalfDuplexRequest.java
index e361639..2d1852e 100644
--- a/src/main/java/com/alibaba/dashscope/protocol/HalfDuplexRequest.java
+++ b/src/main/java/com/alibaba/dashscope/protocol/HalfDuplexRequest.java
@@ -126,7 +126,9 @@ public HttpRequest getHttpRequest() throws NoApiKeyException, ApiException {
|| getHttpMethod() == HttpMethod.DELETE) {
JsonObject body = param.getHttpBody();
if (isEncryptRequest() && body != null) { // we need to encrypt the input
- this.encryptionConfig = EncryptionUtils.generateEncryptionConfig(param.getApiKey());
+ this.encryptionConfig =
+ EncryptionUtils.generateEncryptionConfig(
+ param.getApiKey(), serviceOption.getBaseHttpUrl());
requestHeaders.put("X-DashScope-EncryptionKey", getEncryptionKeyHeader(encryptionConfig));
JsonObject input = body.get("input").getAsJsonObject();
String chiperInput =
diff --git a/src/main/java/com/alibaba/dashscope/utils/EncryptionUtils.java b/src/main/java/com/alibaba/dashscope/utils/EncryptionUtils.java
index 9bdb072..38ba2da 100644
--- a/src/main/java/com/alibaba/dashscope/utils/EncryptionUtils.java
+++ b/src/main/java/com/alibaba/dashscope/utils/EncryptionUtils.java
@@ -151,7 +151,14 @@ public static String AESDecrypt(String cipherText, SecretKey secretKey, byte[] i
/** Generate a EncryptionConfig. */
public static EncryptionConfig generateEncryptionConfig(String apiKey)
throws ApiException, NoApiKeyException {
- EncryptionKeys encryptionKeys = new EncryptionKeys();
+ return generateEncryptionConfig(apiKey, null);
+ }
+
+ /** Generate a EncryptionConfig, fetching the public key from the given base URL. */
+ public static EncryptionConfig generateEncryptionConfig(String apiKey, String baseHttpUrl)
+ throws ApiException, NoApiKeyException {
+ EncryptionKeys encryptionKeys =
+ baseHttpUrl != null ? new EncryptionKeys(baseHttpUrl) : new EncryptionKeys();
EncryptionKey encryptionKey = encryptionKeys.get(apiKey);
byte[] iv = new byte[12];
new SecureRandom().nextBytes(iv);