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);