From c81e16ab82b2576c6a1b0d360ea81ab3a93de844 Mon Sep 17 00:00:00 2001 From: Soroush mohammadi Date: Thu, 23 Apr 2026 13:01:52 +0330 Subject: [PATCH 1/3] Add support for SHA-384 hash algorithm --- .../beemdevelopment/aegis/importers/StratumImporter.java | 1 + .../java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java | 6 ++++++ .../main/java/com/beemdevelopment/aegis/otp/OtpInfo.java | 3 ++- app/src/main/proto/google_auth.proto | 1 + app/src/main/res/values/arrays.xml | 1 + docs/vault.md | 1 + 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/importers/StratumImporter.java b/app/src/main/java/com/beemdevelopment/aegis/importers/StratumImporter.java index 7504d98aa6..22828618f7 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/importers/StratumImporter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/importers/StratumImporter.java @@ -54,6 +54,7 @@ public class StratumImporter extends DatabaseImporter { private enum Algorithm { SHA1, SHA256, + SHA384, SHA512 } diff --git a/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java b/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java index f41f155c08..cb41a2ce84 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java +++ b/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java @@ -231,6 +231,9 @@ public static Export parseExportUri(Uri uri) throws GoogleAuthInfoException { case ALGORITHM_SHA512: algo = "SHA512"; break; + case ALGORITHM_SHA384: + algo = "SHA384"; + break; default: throw new GoogleAuthInfoException(uri, String.format("Unsupported hash algorithm: %d", params.getAlgorithm().ordinal())); } @@ -416,6 +419,9 @@ public Uri getUri() throws GoogleAuthInfoException { case "SHA256": parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA256); break; + case "SHA384": + parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA384); + break; case "SHA512": parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA512); break; diff --git a/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java b/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java index 3fbaa96872..fff757474f 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java +++ b/app/src/main/java/com/beemdevelopment/aegis/otp/OtpInfo.java @@ -77,7 +77,8 @@ public void setSecret(byte[] secret) { public static boolean isAlgorithmValid(String algorithm) { return algorithm.equals("SHA1") || algorithm.equals("SHA256") || - algorithm.equals("SHA512") || algorithm.equals("MD5"); + algorithm.equals("SHA384") || algorithm.equals("SHA512") || + algorithm.equals("MD5"); } public void setAlgorithm(String algorithm) throws OtpInfoException { diff --git a/app/src/main/proto/google_auth.proto b/app/src/main/proto/google_auth.proto index b214f554ec..98d6c974c0 100644 --- a/app/src/main/proto/google_auth.proto +++ b/app/src/main/proto/google_auth.proto @@ -10,6 +10,7 @@ message MigrationPayload { ALGORITHM_SHA256 = 2; ALGORITHM_SHA512 = 3; ALGORITHM_MD5 = 4; + ALGORITHM_SHA384 = 5; } enum DigitCount { diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 14f10385a1..e4c1da9601 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -11,6 +11,7 @@ SHA1 SHA256 + SHA384 SHA512 diff --git a/docs/vault.md b/docs/vault.md index e60d244d2a..5e60a0397e 100644 --- a/docs/vault.md +++ b/docs/vault.md @@ -314,6 +314,7 @@ The following algorithms are supported for HOTP and TOTP: |:----------|:---------| | SHA-1 | "SHA1" | | SHA-256 | "SHA256" | +| SHA-384 | "SHA384" | | SHA-512 | "SHA512" | ##### Steam From cb310746410a154d98f971e57ff51a0659896e7d Mon Sep 17 00:00:00 2001 From: Soroush mohammadi Date: Mon, 27 Apr 2026 13:33:24 +0330 Subject: [PATCH 2/3] Remove unsupported SHA-384 from Google Auth migration logic --- .../com/beemdevelopment/aegis/otp/GoogleAuthInfo.java | 8 ++------ app/src/main/proto/google_auth.proto | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java b/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java index cb41a2ce84..5b15485f0b 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java +++ b/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java @@ -231,9 +231,7 @@ public static Export parseExportUri(Uri uri) throws GoogleAuthInfoException { case ALGORITHM_SHA512: algo = "SHA512"; break; - case ALGORITHM_SHA384: - algo = "SHA384"; - break; + default: throw new GoogleAuthInfoException(uri, String.format("Unsupported hash algorithm: %d", params.getAlgorithm().ordinal())); } @@ -419,9 +417,7 @@ public Uri getUri() throws GoogleAuthInfoException { case "SHA256": parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA256); break; - case "SHA384": - parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA384); - break; + case "SHA512": parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA512); break; diff --git a/app/src/main/proto/google_auth.proto b/app/src/main/proto/google_auth.proto index 98d6c974c0..e3563d0cd0 100644 --- a/app/src/main/proto/google_auth.proto +++ b/app/src/main/proto/google_auth.proto @@ -10,7 +10,7 @@ message MigrationPayload { ALGORITHM_SHA256 = 2; ALGORITHM_SHA512 = 3; ALGORITHM_MD5 = 4; - ALGORITHM_SHA384 = 5; + } enum DigitCount { From f7804d62f87370b687a03398acb2ddf97293c5c9 Mon Sep 17 00:00:00 2001 From: Soroush mohammadi Date: Mon, 27 Apr 2026 13:40:37 +0330 Subject: [PATCH 3/3] Clean up formatting and remove extra newlines --- .../main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java | 2 -- app/src/main/proto/google_auth.proto | 1 - 2 files changed, 3 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java b/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java index 5b15485f0b..f41f155c08 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java +++ b/app/src/main/java/com/beemdevelopment/aegis/otp/GoogleAuthInfo.java @@ -231,7 +231,6 @@ public static Export parseExportUri(Uri uri) throws GoogleAuthInfoException { case ALGORITHM_SHA512: algo = "SHA512"; break; - default: throw new GoogleAuthInfoException(uri, String.format("Unsupported hash algorithm: %d", params.getAlgorithm().ordinal())); } @@ -417,7 +416,6 @@ public Uri getUri() throws GoogleAuthInfoException { case "SHA256": parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA256); break; - case "SHA512": parameters.setAlgorithm(GoogleAuthProtos.MigrationPayload.Algorithm.ALGORITHM_SHA512); break; diff --git a/app/src/main/proto/google_auth.proto b/app/src/main/proto/google_auth.proto index e3563d0cd0..b214f554ec 100644 --- a/app/src/main/proto/google_auth.proto +++ b/app/src/main/proto/google_auth.proto @@ -10,7 +10,6 @@ message MigrationPayload { ALGORITHM_SHA256 = 2; ALGORITHM_SHA512 = 3; ALGORITHM_MD5 = 4; - } enum DigitCount {