This commit is contained in:
2025-09-14 16:17:05 +02:00
parent 0cbf0758f9
commit 0c2d805fa0
6 changed files with 571 additions and 2 deletions

View File

@@ -0,0 +1,112 @@
#!/usr/bin/env -S v -n -w -cg -gc none -cc tcc -d use_openssl -enable-globals run
import freeflowuniverse.herolib.hero.crypt
import freeflowuniverse.herolib.core.redisclient
// Connect to default Redis instance (127.0.0.1:6379)
mut age_client := crypt.new_age_client()!
// Test stateless encryption
println('Testing stateless encryption...')
keypair := age_client.generate_keypair() or {
println('Error generating keypair: ${err}')
return
}
message := 'Hello, AGE encryption!'
encrypted := age_client.encrypt(keypair.recipient, message) or {
println('Error encrypting message: ${err}')
return
}
decrypted := age_client.decrypt(keypair.identity, encrypted.ciphertext) or {
println('Error decrypting message: ${err}')
return
}
println('Original message: ${message}')
println('Encrypted message: ${encrypted.ciphertext}')
println('Decrypted message: ${decrypted}')
assert decrypted == message
println('Stateless encryption test passed!')
// Test stateless signing
println('\nTesting stateless signing...')
signing_keypair := age_client.generate_signing_keypair() or {
println('Error generating signing keypair: ${err}')
return
}
!signed := age_client.sign(signing_keypair.sign_key, message) or {
println('Error signing message: ${err}')
return
}
verified := age_client.verify(signing_keypair.verify_key, message, signed.signature) or {
println('Error verifying signature: ${err}')
return
}
!println('Message: ${message}')
println('Signature: ${signed.signature}')
println('Signature valid: ${verified}')
assert verified == true
println('Stateless signing test passed!')
// Test key-managed encryption
println('\nTesting key-managed encryption...')
key_name := 'example_encryption_key'
named_keypair := age_client.create_named_keypair(key_name) or {
println('Error creating named keypair: ${err}')
return
}
named_encrypted := age_client.encrypt_with_named_key(key_name, message) or {
println('Error encrypting with named key: ${err}')
return
}
named_decrypted := age_client.decrypt_with_named_key(key_name, named_encrypted.ciphertext) or {
println('Error decrypting with named key: ${err}')
return
}
println('Key name: ${key_name}')
println('Encrypted with named key: ${named_encrypted.ciphertext}')
println('Decrypted with named key: ${named_decrypted}')
assert named_decrypted == message
println('Key-managed encryption test passed!')
// Test key-managed signing
println('\nTesting key-managed signing...')
signing_key_name := 'example_signing_key'
age_client.create_named_signing_keypair(signing_key_name) or {
println('Error creating named signing keypair: ${err}')
return
}
named_signed := age_client.sign_with_named_key(signing_key_name, message) or {
println('Error signing with named key: ${err}')
return
}
named_verified := age_client.verify_with_named_key(signing_key_name, message, named_signed.signature) or {
println('Error verifying with named key: ${err}')
return
}
println('Signing key name: ${signing_key_name}')
println('Signature: ${named_signed.signature}')
println('Signature valid: ${named_verified}')
assert named_verified == true
println('Key-managed signing test passed!')
// Test list keys
println('\nTesting list keys...')
keys := age_client.list_keys() or {
println('Error listing keys: ${err}')
return
}
println('Stored keys: ${keys}')
println('All tests completed successfully!')