Unofficial Content
  • This documentation is valid for:

 
Se implementó una biblioteca que incluye funcionalidades básicas de encriptación y firma digital para el generador .Net.

Esta biblioteca se integra a GX X como un conjunto de objetos externos y una DLL de soporte y permite: 
 
-         Crear y validar firmas digitales
-          Cifrar textos o archivos.
 
Esto permitirá incluir funcionalidades de cifrado en los  clientes que necesiten incorporarlo en sus aplicaciones.
A continuación se describen los tipos de datos agregados al lenguaje mediante esta biblioteca.
CryptographicHash

Permite crear un hash para un texto dado.
Algoritmos soportados:
-          MD5
-          RIPEMD160
-          SHA1
-          SHA256
-          SHA384
-          SHA512

Miembros

CryptographicHash Create( string algorithm)

Método estático para crear el objeto, recibe un string con el nombre del algoritmo a utilizar.
base64string ComputeHash(string data)
Método para obtener el valor de hash.

Ejemplo

&hashAlg:CryptographicHash
&hashAlg = CryptographicHash.Create( "MD5")
&outp = &hashAlg.ComputeHash(&text)
PKCS1Signature

Permite manipular firmas digitales básicas con clave pública-privada utilizando certificados X509.

Miembros

string ErrorMessage
Devuelve el texto del último error registrado.
X509Certificate2 Certificate
Certificado X509 que provee las claves para firmar.
base64string Sign(string text)
Dado un texto devuelve una firma para este, utilizando la información del certificado configurado.
bool VerifySignature(base64string signature, string text)
Dado un texto y una firma, verifica si la firma corresponde al texto utilizando la información del certificado configurado.
 

Ejemplo


&pkcs1.Certificate = CryptoUtils.GetCertificateFromFile1(&pathCertificado, &clave)
&firma = &pkcs1.Sign( &texto)
...
...
if (&pkcs1.VerifySignature( &firma, &texto ))
    &error = "Firma valida!"
else
    &error = &pkcs1.ErrorMessage
endif

PKCS7Signature

Permite manipular firmas digitales con formato según el estándar PKCS7, con clave pública-privada utilizando certificados X509.

Miembros

X509Certificate2 Certificate
Certificado X509 que provee las claves.

bool Detached
Indica si la firma contiene los datos cifrados.

bool ValidateCertificates
Determina si además se debe validar el certificado al verificar una firma (falso por defecto)

string ErrorMessage
Devuelve el texto del último error registrado.

string Sign(string text)
Dado un texto devuelve una firma para este, utilizando la información del certificado configurado.

bool VerifySignature(string signature, string text)
Dado un texto y una firma, verifica si la firma corresponde al texto utilizando la información del certificado configurado.

string ExtractEnvelopedData(string dataWithSignature)
Dada una firma que contiene la información firmada, extrae el texto de esta.

Ejemplo

&pkcs7.Certificate = CryptoUtils.GetCertificateFromFile1(&certificado, &clave)
&pkcs7.Detached = true
&firma = &pkcs7.Sign( &texto)
...
...
if (&pkcs7.VerifySignature( &firma, &texto ))
    &error = "Firma valida!"
else
    &error = &pkcs7.ErrorMessage
endif

SymmetricEncryption

Permite cifrar un texto  o un archivo utilizando un algoritmo simétrico. Los algoritmos soportados son:

-          Rijndael
-          DES
-          RC2
-          TripleDES

Miembros

string Key
Clave de cifrado, se genera automaticamente al crear la instancia.

string IV
Vector de inicialización de cifrado, se genera automáticamente al crear la instancia.

int ErrorCode
Código de error de la última operación realizada (0=ok, 1=error).

string ErrorDescription
Description de error de la última operación realizada.

int KeySize
Tamaño de la clave.

List<string> LegalKeySizes
Tamaños posibles de la clave soportados por el algoritmo seleccionado.

int BlockSize
Tamaño del bloque.

List<string> LegalBlockSizes
Tamaños de bloques soportados por el algoritmo seleccionado.

SymmetricEncryption Create(string algorithm)
Método estático para crear una instancia del algoritmo de cifrado. Recibe como parámetro un string con el nombre del algoritmo a crear.

base64string EncryptString(string inStr)
Devuelve el texto dado cifrado según el algoritmo, clave y vector de inicialización configurados.

string DecryptString(base64string inData)
Devuelve el texto dado descifrado según el algoritmo, clave y vector de inicialización configurados.

EncryptFile(string inFileName, string outFileName)
Cifra un archivo dado.

DecryptFile(string inFileName, string outFileName)
Descifra un archivo dado.

Ejemplo

Event'encrypt'
      &symCrypter = SymmetricEncryption.Create( "rijndael")
      &key = &symCrypter.Key
      &IV = &symCrypter.IV
      &encrypted = &symCrypter.EncryptString(&input)
EndEvent 
Event'decrypt'
     &symCrypter = SymmetricEncryption.Create( "rijndael")
      &symCrypter.Key = &key
      &symCrypter.IV = &IV
      &outp = &symCrypter.DecryptString(&encrypted)
EndEvent 

Criptography sample
 

Last update: February 2024 | © GeneXus. All rights reserved. GeneXus Powered by Globant