es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para generar un par de claves pública y privada EC (ES256) usando el paquete fido2 de Python, puedes utilizar la biblioteca cryptography, la cual es una dependencia de fido2. Aquí tienes un ejemplo de código para generar las claves:

    from cryptography.hazmat.primitives.asymmetric import ec
    from cryptography.hazmat.backends import default_backend
    
    curve = ec.SECP256R1()  # Curva ES256
    private_key = ec.generate_private_key(curve, default_backend())
    public_key = private_key.public_key()
    

    Para firmar un desafío usando la clave privada, puedes utilizar la biblioteca ecdsa, la cual también es una dependencia de fido2. Aquí tienes un ejemplo de código para firmar un desafío:

    from ecdsa import SigningKey
    import hashlib
    
    challenge = b'some_challenge_bytes_here'
    
    sk_bytes = private_key.private_bytes(
        encoding=serialization.Encoding.DER,
        format=serialization.PrivateFormat.PKCS8,
        encryption_algorithm=serialization.NoEncryption()
    )
    sk = SigningKey.from_der(sk_bytes)
    
    digest = hashlib.sha256(challenge).digest()
    signature = sk.sign(digest)
    

    Para verificar la firma con la clave pública, nuevamente puedes utilizar la biblioteca ecdsa. Aquí tienes un ejemplo de código para verificar la firma:

    from ecdsa import VerifyingKey
    
    vk_bytes = public_key.public_bytes(
        encoding=serialization.Encoding.DER,
        format=serialization.PublicFormat.SubjectPublicKeyInfo
    )
    vk = VerifyingKey.from_der(vk_bytes)
    
    verification_result = vk.verify(signature, digest)
    if verification_result:
        print("La firma se verificó correctamente")
    else:
        print("La verificación de la firma falló")
    

Comments are closed.