Skip to main content
Skip table of contents

Verificación del signature

Introducción

El incluir una firma en la respuesta del Charges para el flujo autorización, tiene como finalidad reforzar la seguridad y garantizar la integrad de los datos transmitidos hacia el comercio a traves de un redireccionamiento o una notificación ServerToServer.

Datos de la llave privada:

  • Key Type: Asymmetric

  • Key Spec: RSA_2048

  • Key Length: 2048 bits

  • Key Usage: Sign and verify

  • Signing algorithm: SHA512withRSA

Longitud de la firma signature, considerar hasta una longitud de 512

A continuación se muestra los pasos para la validación de la firma.

Paso 1: Identificar los Campos a Cifrar

Flujo Redireccionamiento

En este flujo, el comercio recibe dos parámetros en el redireccionamiento(signature - authorization_result). El parámetro authorization_result es un JSON en Base64 con contiene el resultado de la autorización que será usado como el campo a cifrar para luego compararlo con el parámetro signature.

Flujo notificación ServerToServer

En este flujo, el comercio recibe una petición REST donde el body es en el resultado de la autorización, y en el header viaja el signature. El body será usado como el campo a cifrar para luego compararlo con el parámetro signature.

Paso 2: Verificar el signature

En el proceso de validación, todos los comercios emplearán la llave pública proporcionada por Alignet para verificar la firma digital. La verificación de la firma implica comparar el valor(resultado de la autorización) generado con el signature recibido del CHARGES.

Llave Publica:

Ambiente

Llave PEM

Llave Publica

PRE-PRODUCCIÓN

Publickey-6f031bb8-45cb-4aed-9375-80d8dbb9c8fd.pem  

-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkmpsqcJzjQ45u0K7JOQJ tfjXGeMXNwsaU6JDGSdKwSDGGXt1m551p2mlG0oGkmn9FPbp4E0lOQzkL/qhHB1Y pTP2MqecJ7pMTonEeXOv0P6uwR9yvV5lxK17nE3+xgfcpFfxT5GAI/wZsQJ3+Lsv qh3+IcRG2Hb2BUdM5pYZFOUBGGSZWc/ULPtsFx2DSjI9peJ9kYibpaokphP+Cypz /LgKV7Yiv/TUufPiUk5gFYIad5VhRU822sTMRQ7BgS2CY4t49jqFkIiRnmPwM8fF KjPD4wvzssrqbAQvkk56XOcE9ML0iJhcIY1/xgNSiHqij0Ql1UTU5nAIJR5/paOn hQIDAQAB -----END PUBLIC KEY-----

PRODUCCIÓN

 

 

Ejemplo

Python

PY
import json
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.serialization import load_pem_public_key
from cryptography.exceptions import InvalidSignature
def verify_rsa_signature(public_key_pem, authorization_result, signature):
    # Convertir la clave pública en formato PEM a un objeto de clave
    public_key = load_pem_public_key(public_key_pem.encode('utf-8'))
    # Convertir el mensaje a bytes
    message_bytes = authorization_result.encode('utf-8')
    try:
        # Verificar la firma usando PKCS#1 v1.5 y SHA-512
        public_key.verify(
            signature,
            message_bytes,
            padding.PKCS1v15(),
            hashes.SHA512()
        )
        return True
    except Exception:
        return False
if __name__ == "__main__":
    print("VALIDAR FIRMA")
    public_key_pem = """""" #LLAVE ENTREGADA EN LA DOCUMENTACION
    signature = base64.b64decode("SIGNATURE")
    message = "" #RESULTADO DE LA AUTORIZACION. En caso de la notificacion ServerToServer, aplicar json.dumps()
    result = verify_rsa_signature(public_key_pem, message, signature)
    print(f'Firma valida: {result}')

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.