(PureBasic) Generate TOTP using Base32 Secret (6 Digits, Time-based, 30-second period)
Generates a 6-digit time-based TOTP code using a base32 secret with a 30-second time period.
IncludeFile "CkCrypt2.pb"
IncludeFile "CkStringBuilder.pb"
Procedure ChilkatExample()
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
;
crypt.i = CkCrypt2::ckCreate()
If crypt.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Base32 secret key:
secretKey.s = "oebf ytfl qmzb p4xd 2ztf zyz4 hjrw 3uyo"
sbKey.i = CkStringBuilder::ckCreate()
If sbKey.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success.i = CkStringBuilder::ckAppend(sbKey,secretKey)
; Remove SPACE chars.
numRemoved.i = CkStringBuilder::ckReplace(sbKey," ","")
; Note: A new token is generated every 30 seconds. You must generate within the same 30 second interval to get the same result.
; Generate 6 digits.
numDigits.i = 6
; 30 second time period.
timePeriod.i = 30
Debug "Your token is: " + CkCrypt2::ckTotp(crypt,CkStringBuilder::ckGetAsString(sbKey),"base32","0","",timePeriod,numDigits,-1,"sha1")
CkCrypt2::ckDispose(crypt)
CkStringBuilder::ckDispose(sbKey)
ProcedureReturn
EndProcedure
|