83 lines
3.0 KiB
Plaintext
83 lines
3.0 KiB
Plaintext
|
|
#!/usr/bin/env nu
|
||
|
|
# SecretumVault Plugin Quick Demo
|
||
|
|
|
||
|
|
print ""
|
||
|
|
print "═════════════════════════════════════════════════════════════════════════════════"
|
||
|
|
print "SecretumVault PQC Plugin Demo"
|
||
|
|
print "═════════════════════════════════════════════════════════════════════════════════"
|
||
|
|
print ""
|
||
|
|
|
||
|
|
# Test 1: Health Check
|
||
|
|
print "Test 1: Health Check"
|
||
|
|
try {
|
||
|
|
let health = (curl -s -H "X-Vault-Token: mytoken" "http://localhost:8200/v1/sys/health" | from json)
|
||
|
|
print " Status: OK"
|
||
|
|
print $" Sealed: ($health.data.sealed)"
|
||
|
|
} catch {
|
||
|
|
print " ERROR: Cannot connect to vault"
|
||
|
|
exit 1
|
||
|
|
}
|
||
|
|
|
||
|
|
print ""
|
||
|
|
print "Test 2: Generate ML-KEM-768 Key"
|
||
|
|
with-env {SECRETUMVAULT_TOKEN: "mytoken"} {
|
||
|
|
let key_id = "demo-" + (date now | format date "%s")
|
||
|
|
let generated = ("" | secretumvault generate-pqc-key --key-id $key_id)
|
||
|
|
|
||
|
|
let pub_key_size = ($generated.public_key | decode base64 | bytes length)
|
||
|
|
print $" Key ID: ($generated.key_id)"
|
||
|
|
print $" Algorithm: ($generated.algorithm)"
|
||
|
|
print $" Public key size: ($pub_key_size) bytes"
|
||
|
|
|
||
|
|
$key_id | save -f /tmp/pqc-key.txt
|
||
|
|
}
|
||
|
|
|
||
|
|
print ""
|
||
|
|
print "Test 3: Retrieve Key via API"
|
||
|
|
with-env {SECRETUMVAULT_TOKEN: "mytoken"} {
|
||
|
|
let key_id = (open /tmp/pqc-key.txt)
|
||
|
|
let url = "http://localhost:8200/v1/transit/keys/" + $key_id
|
||
|
|
let api_resp = (curl -s -H "X-Vault-Token: mytoken" $url | from json)
|
||
|
|
|
||
|
|
if ($api_resp.status == "success") {
|
||
|
|
let pub_key_size = ($api_resp.data.public_key | decode base64 | bytes length)
|
||
|
|
print $" Algorithm: ($api_resp.data.algorithm)"
|
||
|
|
print $" Public key size: ($pub_key_size) bytes"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
print ""
|
||
|
|
print "Test 4: KEM Encapsulation"
|
||
|
|
with-env {SECRETUMVAULT_TOKEN: "mytoken"} {
|
||
|
|
let key_id = (open /tmp/pqc-key.txt)
|
||
|
|
let kem = ("" | secretumvault kem-encapsulate --pqc-key-id $key_id)
|
||
|
|
print $" Algorithm: ($kem.algorithm)"
|
||
|
|
print " Status: Encapsulation OK"
|
||
|
|
}
|
||
|
|
|
||
|
|
print ""
|
||
|
|
print "Test 5: Plugin Version"
|
||
|
|
with-env {SECRETUMVAULT_TOKEN: "mytoken"} {
|
||
|
|
let version = ("" | secretumvault version)
|
||
|
|
print $" Version: ($version)"
|
||
|
|
}
|
||
|
|
|
||
|
|
print ""
|
||
|
|
print "═════════════════════════════════════════════════════════════════════════════════"
|
||
|
|
print ""
|
||
|
|
print "SUCCESS: All tests passed!"
|
||
|
|
print ""
|
||
|
|
print "PQC Commands:"
|
||
|
|
print " • generate-pqc-key"
|
||
|
|
print " • hybrid-encrypt, hybrid-decrypt"
|
||
|
|
print " • hybrid-sign, hybrid-verify"
|
||
|
|
print " • kem-encapsulate, kem-decapsulate"
|
||
|
|
print ""
|
||
|
|
print "Classical Commands:"
|
||
|
|
print " • encrypt, decrypt"
|
||
|
|
print " • generate-key, generate-data-key"
|
||
|
|
print " • rotate-key"
|
||
|
|
print ""
|
||
|
|
print "Environment: SECRETUMVAULT_TOKEN required"
|
||
|
|
print ""
|