import os
import sys
import secrets
from pathlib import Path
import time
sys.path.insert(0, str(Path(__file__).parent.parent))
from bitcoinpqc import Algorithm, keygen, sign, verify
def main():
algorithm = Algorithm.ML_DSA_44
random_data = secrets.token_bytes(128)
print(f"Generating key pair for {algorithm.name}...")
start = time.time()
keypair = keygen(algorithm, random_data)
keygen_time = time.time() - start
print(f"Key generation took {keygen_time:.4f} seconds")
print(f"Public key size: {len(keypair.public_key)} bytes")
print(f"Secret key size: {len(keypair.secret_key)} bytes")
message = b"This is a test message for Bitcoin PQC signatures."
print(f"\nSigning message: {message.decode('utf-8')}")
start = time.time()
signature = sign(algorithm, keypair.secret_key, message)
sign_time = time.time() - start
print(f"Signing took {sign_time:.4f} seconds")
print(f"Signature size: {len(signature.signature)} bytes")
print("\nVerifying signature...")
start = time.time()
is_valid = verify(algorithm, keypair.public_key, message, signature)
verify_time = time.time() - start
print(f"Verification took {verify_time:.4f} seconds")
print(f"Signature is valid: {is_valid}")
bad_message = b"This is NOT the original message!"
print("\nVerifying signature with incorrect message...")
is_valid = verify(algorithm, keypair.public_key, bad_message, signature)
print(f"Signature is valid (should be False): {is_valid}")
if __name__ == "__main__":
main()