GUACAMOLE-96: Include recommended key length for each TOTP mode.

Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/4178a4b8
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/4178a4b8
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/4178a4b8

Branch: refs/heads/master
Commit: 4178a4b8b3f4898db4af9159ea2d3df747a01638
Parents: 78c398f
Author: Michael Jumper <mjum...@apache.org>
Authored: Mon Nov 20 10:37:23 2017 -0800
Committer: Michael Jumper <mjum...@apache.org>
Committed: Sun Feb 4 19:45:17 2018 -0800

----------------------------------------------------------------------
 .../apache/guacamole/totp/TOTPGenerator.java    | 33 +++++++++++++++++---
 1 file changed, 29 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/4178a4b8/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/totp/TOTPGenerator.java
----------------------------------------------------------------------
diff --git 
a/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/totp/TOTPGenerator.java
 
b/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/totp/TOTPGenerator.java
index b8c0d95..d075c8a 100644
--- 
a/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/totp/TOTPGenerator.java
+++ 
b/extensions/guacamole-auth-totp/src/main/java/org/apache/guacamole/totp/TOTPGenerator.java
@@ -124,19 +124,19 @@ public class TOTPGenerator {
          * TOTP mode which generates hashes using SHA1. TOTP in SHA1 mode
          * requires 160-bit keys.
          */
-        SHA1("HmacSHA1"),
+        SHA1("HmacSHA1", 20),
 
         /**
          * TOTP mode which generates hashes using SHA256. TOTP in SHA256 mode
          * requires 256-bit keys.
          */
-        SHA256("HmacSHA256"),
+        SHA256("HmacSHA256", 32),
 
         /**
          * TOTP mode which generates hashes using SHA512. TOTP in SHA512 mode
          * requires 512-bit keys.
          */
-        SHA512("HmacSHA512");
+        SHA512("HmacSHA512", 64);
 
         /**
          * The name of the HMAC algorithm which the TOTP implementation should
@@ -146,6 +146,13 @@ public class TOTPGenerator {
         private final String algorithmName;
 
         /**
+         * The recommended length of keys generated for TOTP in this mode, in
+         * bytes. Keys are recommended to be the same length as the hash
+         * involved.
+         */
+        private final int recommendedKeyLength;
+
+        /**
          * Creates a new TOTP operating mode which is associated with the
          * given HMAC algorithm.
          *
@@ -153,9 +160,14 @@ public class TOTPGenerator {
          *     The name of the HMAC algorithm which the TOTP implementation
          *     should use when operating in this mode, in the format required
          *     by Mac.getInstance().
+         *
+         * @param recommendedKeyLength
+         *     The recommended length of keys generated for TOTP in this mode,
+         *     in bytes.
          */
-        private Mode(String algorithmName) {
+        private Mode(String algorithmName, int recommendedKeyLength) {
             this.algorithmName = algorithmName;
+            this.recommendedKeyLength = recommendedKeyLength;
         }
 
         /**
@@ -171,6 +183,19 @@ public class TOTPGenerator {
             return algorithmName;
         }
 
+        /**
+         * Returns the recommended length of keys generated for TOTP in this
+         * mode, in bytes. Keys are recommended to be the same length as the
+         * hash involved.
+         *
+         * @return
+         *     The recommended length of keys generated for TOTP in this mode,
+         *     in bytes.
+         */
+        public int getRecommendedKeyLength() {
+            return recommendedKeyLength;
+        }
+
     }
 
     /**

Reply via email to