diff --git a/src/core/operations/OTP.js b/src/core/operations/OTP.js index ff67d1c8..20205053 100755 --- a/src/core/operations/OTP.js +++ b/src/core/operations/OTP.js @@ -1,5 +1,6 @@ import otp from "otp"; import Base64 from "./Base64.js"; +import Utils from "../Utils.js"; /** * One-Time Password operations. @@ -24,7 +25,7 @@ const OTP = { name: args[0], keySize: args[1], codeLength: args[2], - secret: Base64.runTo32(input, []), + secret: Base64.runTo32(Utils.strToByteArray(input), []), epoch: args[3], timeSlice: args[4] }); @@ -44,7 +45,7 @@ const OTP = { name: args[0], keySize: args[1], codeLength: args[2], - secret: Base64.runTo32(input, []), + secret: Base64.runTo32(Utils.strToByteArray(input), []), }); const counter = args[3]; return `URI: ${otpObj.hotpURL}\n\nPassword: ${otpObj.hotp(counter)}`; diff --git a/test/index.js b/test/index.js index 9c7e3ca8..050acf0f 100644 --- a/test/index.js +++ b/test/index.js @@ -27,6 +27,7 @@ import "./tests/operations/MorseCode.js"; import "./tests/operations/MS.js"; import "./tests/operations/PHP.js"; import "./tests/operations/NetBIOS.js"; +import "./tests/operations/OTP.js"; import "./tests/operations/StrUtils.js"; import "./tests/operations/SeqUtils.js"; diff --git a/test/tests/operations/OTP.js b/test/tests/operations/OTP.js new file mode 100644 index 00000000..b321e7cf --- /dev/null +++ b/test/tests/operations/OTP.js @@ -0,0 +1,23 @@ +/** + * OTP HOTP tests. + * + * @author bwhitn [brian.m.whitney@outlook.com] + * + * @copyright Crown Copyright 2017 + * @license Apache-2.0 + */ +import TestRegister from "../../TestRegister.js"; + +TestRegister.addTests([ + { + name: "Generate HOTP", + input: "12345678901234567890", + expectedOutput: "URI: otpauth://hotp/OTPAuthentication?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ\n\nPassword: 755224", + recipeConfig: [ + { + op: "Generate HOTP", + args: ["", 32, 6, 0], + }, + ], + }, +]);