Etiqueta

06 junio 2023

Omnis Studio 11, soporte para TOTP

La última actualización de Omnis Studio da soporte a TOTP, es el 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()

Tech Insight: Autenticación - TOTP | Citrix Tech Zone

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.



26 noviembre 2020

03 julio 2020

Nuevo asistente para la construcción de aplicaciones finales (Deployment Tool)

La última actualización de Omnis 10.1 incluye una nueva herramienta denominada "Deployment Tool", la cual permite crear y personalizar nuestra aplicación final, es decir, la aplicación resultante de la integración de nuestras librerías y ficheros adicionales con el código Omnis (runtime), disponible tanto para Mac OS como para Windows. En el caso de macOS, la herramienta permite crear un paquete (bundle), mientras que en caso de Windows se permite la creación de un constructor completo o parcial. Además, (sólo para Windows) se incluye un nuevo componente externo, denominado "RCEdit", mediante el cual es posible modificar recursos del propio programa Omnis (runtime), permitiendo su completa personalización o "configuración de identidad" del producto final.

Opciones macOS


En caso de macOS y desde la primera pantalla de opciones que mostrará el asistente, podremos cambiar el nombre de la aplicación, la versión, el identificador, el fabricante, el aviso de copyright y su icono:



Desde la segunda pantalla podremos indicar la localización de nuestras carpetas "startup", grupos de iconos (los "iconsets" que requieran nuestras librerías), la "xcomp" e "icons", así como una opción para pre-serializar el paquete o agregar un carpeta de lectura/escritura personalizada.


Finalmente y desde la pantalla de opciones "Build", crearemos el "Omnis Bundle" (Omnis Runtime + nuestros ficheros), indicando una carpeta, es decir, la ruta a la carpeta donde quedará construida la aplicación final, junto con la versión de nuestro "Bundle". También podremos (si así lo deseamos) seleccionar la opción que nos permitirá borrar la carpeta resultante o "Bundle" en caso de producirse algún error durante el proceso.

Opciones Windows

En caso de Windows, podremos indicar el nombre de la aplicación, fabricante, versión, aviso de derechos de autor, nombre del ejecutable y la ruta hacia el archivo ".ico", que será usado en sustitución del icono propio de Omnis.


Desde la segunda pantalla (como en el caso de macOS) podremos especificar su "startup", "iconsets", "xcomp" e "icons", así como la opción para pre-serializar el paquete o agregar un directorio de lectura/escritura personalizado.


En la pantalla de opciones "Build", podremos especificar la ubicación de los archivos de solo lectura propios de Omnis (es decir nuestro Omnis Studio Runtime xx.x), así como la ubicación de los archivos de lectura/escritura (es decir los que se ubicarán en "AppData"), finalmente especificaremos la ruta hacia la carpeta de salida (donde quedará construida la aplicación final) y la opción para 32 o 64 bits. También en éste caso, podremos optar por indicar si queremos que se borre la carpeta "Bundle", si se produce algún error durante el proceso.


En caso de Windows, también podremos optar por crear un directorio simple "Flat tree", una división en árbol "Split tree" o una división en árbol con inclusión del instalador inicial "Split tree with firstruninstall".

  • La opción "Flat tree" generará una carpeta simple con todos los archivos, los de lectura y los de lectura/escritura.
  • La opción "Split tree" generará una carpeta con los archivos de solo lectura, es decir aquellos cuyo destino será "Program Files" y otra de lectura/escritura con los destinados a "AppData".
  • La opción "Split Tree with firstruninstall" generará una carpeta con los archivos de solo lectura y dentro de esta,  otra adicional denominada "firstruninstall", con los archivos de lectura/escritura que Omnis copiará automáticamente sobre la carpeta "AppData" del usuario, la primera vez que ejecute la aplicación.

Es interesante hacer notar que la opción "firstruninstall" nos permitirá instalar y configurar nuestra aplicación sin la necesidad de construir un instalador, lo cual puede resultar ser más rápido, sencillo y/o más conveniente para nuestro producto final. Podríamos incluso usar la función "7Zip's SFX" para que simplemente se auto-descomprima, simplificando así enormemente la instalación de nuestra aplicación, ya que no precisaría del uso de complejos instaladores.

Uso del editor de recursos "RCEdit"


El nuevo componente externo denominado "RCEdit" nos permite editar varios recursos de Windows, tales como la versión del producto, el texto de la versión y el icono representativo del ejecutable Omnis. El componente externo implementa varios métodos nuevos, que podrán ser invocados desde nuestro código Omnis.

  • $setapplicationmanifest(cFile, cManifest), cambia el manifiesto incluido cManifest según la ruta indicada por cFile), ejemplo: Do rcedit.$setapplicationmanifest(“C:\omnis.exe”, “C:\folder\newManifest.xml”) Returns #F

  • $setresourcestring(cFile, cResource, cValue), cambia el recurso "cResource" por el valor de "cValue" para según la ruta indicada en "cFile", ejemplo: Do rcedit.$setresourcestring(“C:\omnis.exe”, “1”, “Nuevo valor”) Returns #F

  • $setproductversion(cFile, cProductVersion), cambia el recurso del ejecutable Windows "Product Version" según lo indicado en cProductVersion para la ruta del archivo cFile, ejemplo: Do rcedit.$setproductversion(“C:\omnis.exe”, “10.1”)

  • $seticon(cFile, cIcon), cambia el icono del ejecutable Windows indicado la ruta del archivo cFile, por el archivo ".ico", indicado en la ruta cIcon, ejemplo: Do rcedit.$seticon(“C:\omnis.exe”, “C:\newIcon.ico”) Returns #F

  • $setversionstring(cFile, cVersion, cValue), cambia el texto de versión en "cVersion" por el especificado en "cValue" según la ruta indicada en cFile, ejemplo: Do rcedit.$setversionstring(“C:\omnis.exe”, “Comments”, “Comment version string”) Returns #F

  • $setfileversion(cFile, cFileVersion), cambia el recurso del ejecutable Windows "File Version" por el contenido en cFileVersion, ejemplo: Do rcedit.$setfileversion(“C:\omnis.exe”, “10.1.0.0”) Returns #F