Last active
January 18, 2024 15:52
-
-
Save theanam/053b9129649d52368911d4d9c02d2af1 to your computer and use it in GitHub Desktop.
create SMS OTP hash
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const otpGenerator = require("otp-generator"); | |
const crypto = require("crypto"); | |
const key = "verysecretkey"; // Key for cryptograpy. Keep it secret | |
function createNewOTP(phone){ | |
// Generate a 6 digit numeric OTP | |
const otp = otpGenerator.generate(6, {alphabets: false, upperCase: false, specialChars: false}); | |
const ttl = 5 * 60 * 1000; //5 Minutes in miliseconds | |
const expires = Date.now() + ttl; //timestamp to 5 minutes in the future | |
const data = `${phone}.${otp}.${expires}`; // phone.otp.expiry_timestamp | |
const hash = crypto.createHmac("sha256",key).update(data).digest("hex"); // creating SHA256 hash of the data | |
const fullHash = `${hash}.${expires}`; // Hash.expires, format to send to the user | |
// you have to implement the function to send SMS yourself. For demo purpose. let's assume it's called sendSMS | |
sendSMS(phone,`Your OTP is ${otp}. it will expire in 5 minutes`); | |
return fullHash; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment