From 43a62b1a1555d4ff0280168fbddd634fa453d7df Mon Sep 17 00:00:00 2001 From: Rob Marsal Date: Wed, 27 May 2026 09:37:24 +0100 Subject: [PATCH] fix(PLU-270): update the endpoint used for credentials validation --- .../core/services/api/TypedApiImplementation.java | 14 +------------- .../core/services/api/TypedApiInterface.java | 3 --- .../ghidra/core/services/api/mocks/MockApi.java | 6 +----- .../core/services/api/mocks/UnimplementedAPI.java | 5 ----- .../ghidra/core/ui/wizard/CredentialValidator.java | 7 ++++++- 5 files changed, 8 insertions(+), 27 deletions(-) diff --git a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiImplementation.java b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiImplementation.java index e21b76ec..2eb9735a 100644 --- a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiImplementation.java +++ b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiImplementation.java @@ -49,12 +49,11 @@ public class TypedApiImplementation implements TypedApiInterface { private final HttpClient httpClient; private final String baseUrl; - private final ConfigApi configApi; Map headers; private final AnalysesCoreApi analysisCoreApi; - private final AuthenticationUsersApi authenticationUsersApi; private final AnalysesResultsMetadataApi analysesResultsMetadataApi; + private final ConfigApi configApi; private final SearchApi searchApi; private final FunctionsCoreApi functionsCoreApi; private final FunctionsRenamingHistoryApi functionsRenamingHistoryApi; @@ -98,7 +97,6 @@ public TypedApiImplementation(String baseUrl, String apiKey) { APIKey.setApiKey(apiKey); this.analysisCoreApi = new AnalysesCoreApi(apiClient); - this.authenticationUsersApi = new AuthenticationUsersApi(apiClient); this.analysesResultsMetadataApi = new AnalysesResultsMetadataApi(apiClient); this.searchApi = new SearchApi(apiClient); this.functionsCoreApi = new FunctionsCoreApi(apiClient); @@ -443,15 +441,6 @@ public Optional getFunctionDataTypes(AnalysisID analysis } } - @Override - public void authenticate() throws InvalidAPIInfoException { - try { - this.authenticationUsersApi.getRequesterUserInfo(); - } catch (ApiException e) { - throw new InvalidAPIInfoException("Invalid API key", e); - } - } - @Override public boolean triggerAIDecompilationForFunctionID(FunctionID functionID) { JSONObject params = new JSONObject().put("function_id", functionID.value()); @@ -681,4 +670,3 @@ public ConfigResponse getConfig() { } } } - diff --git a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiInterface.java b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiInterface.java index 3fe186b2..26f7134e 100644 --- a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiInterface.java +++ b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/TypedApiInterface.java @@ -114,8 +114,6 @@ default List searchBinaries( String getAnalysisLogs(AnalysisID analysisID); - void authenticate() throws InvalidAPIInfoException; - default DataTypeList generateFunctionDataTypes(AnalysisID analysisID, List functionIDS) { throw new UnsupportedOperationException("generateFunctionDataTypes not implemented yet"); } @@ -230,4 +228,3 @@ default ConfigResponse getConfig() throws ApiException { throw new UnsupportedOperationException("getConfig not implemented yet"); } } - diff --git a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/MockApi.java b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/MockApi.java index 2610743e..59dcc567 100644 --- a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/MockApi.java +++ b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/MockApi.java @@ -47,13 +47,9 @@ public String getAnalysisLogs(AnalysisID analysisID) { return ""; } - @Override - public void authenticate() throws APIAuthenticationException { - } - @Override public void renameFunction(FunctionID id, String newName, String newNameMangled) { - + } @Override diff --git a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/UnimplementedAPI.java b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/UnimplementedAPI.java index 11b20b3e..e20684e8 100644 --- a/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/UnimplementedAPI.java +++ b/src/main/java/ai/reveng/toolkit/ghidra/core/services/api/mocks/UnimplementedAPI.java @@ -30,11 +30,6 @@ public String getAnalysisLogs(AnalysisID analysisID) { return "ANALYSIS LOGS"; } - @Override - public void authenticate() { - - } - @Override public void renameFunction(FunctionID id, String newName, String newNameMangled) { diff --git a/src/main/java/ai/reveng/toolkit/ghidra/core/ui/wizard/CredentialValidator.java b/src/main/java/ai/reveng/toolkit/ghidra/core/ui/wizard/CredentialValidator.java index f72431ca..7b27c327 100644 --- a/src/main/java/ai/reveng/toolkit/ghidra/core/ui/wizard/CredentialValidator.java +++ b/src/main/java/ai/reveng/toolkit/ghidra/core/ui/wizard/CredentialValidator.java @@ -20,7 +20,12 @@ static CredentialValidator defaultValidator() { throw new InvalidAPIInfoException("hostURI and apiKey must not be null"); } var api = new TypedApiImplementation(apiInfo); - api.authenticate(); + try { + // Validate the credentials by making a simple API call that requires authentication. + api.getConfig(); + } catch (Exception e) { + throw new InvalidAPIInfoException("Failed to validate API credentials: " + e.getMessage(), e); + } }; } }