El entorno de desarrollo Omnis Studio 11, competidor de tools como Visual Studio y Delphi, da soporte a TOTP, acrónimo de “Time-based One Time Passwords”, o contraseñas temporales de un solo uso. Es decir, estas contraseñas tienen una vida útil bien de un uso, o de un periodo de tiempo concreto a partir del cual se auto-destruyen. Dos nuevas funciones nos permiten incorporar éste protocolo en nuestros desarrollos: OW3.$totpgenerate() y OW3.$totpvalidate()
La primera contiene 4 parámetros necesarios, más 2 opcionales y su sintaxis es la siguiente:
OW3.$totpgenerate(xSharedSecretKey,iTimeStep,iDigits,&iTOTP[,&cErrorText,iHashType=kOW3hashSHA1])
Esta función genera una contraseña de un solo uso con base en el tiempo, quedará contenida en iTOTP y se utilizará para ello el algoritmo TOTP. Retornado “true” si la función es ejecutada con éxito.
Parámetros obligatorios:
xSharedSecretKey (Binary) es la clave secreta compartida, su longitud debe estar entre 16 y 256 bytes.
iTimeStep (Integer 32 bit) es el salto de tiempo en segundos el cual deberá estar entre 1 y 3600.
iDigits (Integer 32 bit) es el número de dígitos del TOTP resultante, un valor entre 6 y 8.
iTOTP (Integer 32 bit) recibe el TOTP generado.
Parámetros opcionales:
cErrorText (Character 100000000) Si se proporciona, recibirá la descripción del posible error provocado por $totpgenerate o $totpvalidate (si resultó “false”).
iHashType (Integer 32 bit), su valor por defecto es proporcionado por la constante kOW3hashSHA1) es el tipo de “hash” a utilizar, use una de las constantes del grupo kOW3hash…
La segunda contiene 4 parámetros necesarios, más 4 opcionales y su sintaxis es la siguiente:
OW3.$totpvalidate(xSharedSecretKey,iTimeStep,iDigits,iTOTP[,&cErrorText,iHashType=kOW3hashSHA1,iStepsBefore=2,iStepsAfter=1])
Esta función valida la contraseña de un solo uso con base en el tiempo, contenida en iTOTP utilizando para ello el algoritmo TOTP. Retornado “true” si iTOTP resulta en un TOTP válido.
Parámetros obligatorios:
xSharedSecretKey (Binary) es la clave secreta compartida, su longitud debe estar entre 16 y 256 bytes.
TimeStep (Integer 32 bit) es el salto de tiempo en segundos el cual deberá estar entre 1 y 3600.
iDigits (Integer 32 bit) es el número de dígitos del TOTP resultante, un valor entre 6 y 8.
iTOTP (Integer 32 bit) es el TOTP que va a ser validado.
Parámetros opcionales:
cErrorText (Character 100000000) Si se proporciona, recibirá la descripción del posible error provocado por $totpgenerate o $totpvalidate (si resultó “false”).
iHashType (Integer 32 bit), su valor por defecto es proporcionado por la constante kOW3hashSHA1) es el tipo de “hash” a utilizar, use una de las constantes del grupo kOW3hash…
iStepsBefore (Integer 32 bit), el valor por defecto es 2 y es el número de saltos de tiempo anteriores al momento actual, para llevar a cabo la verificación del TOTP proporcionado, deberá ser un valor entre 1 y 20.
iStepsAfter (Integer 32 bit), su valor por defecto es 1 y es el número de saltos de tiempo después del momento actual, para llevar a cabo la verificación del TOTP proporcionado, deberá ser un valor entre 1 y 20.