| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using Sodium;
- namespace Statum.Tools {
- /**
- * `statum-genkeys` — generates the static key pairs for signing and
- * encryption and prints a ready-to-paste `statum` section for
- * `web-config.json`.
- *
- * With these keys configured, signed frames and encrypted private blobs
- * survive a server restart (the same keys verify/decrypt across restarts).
- */
- public class Genkeys : Object {
- public static int main(string[] args) {
- // Signing (Ed25519) key pair.
- var sign_sk = new uint8[Sodium.Asymmetric.Signing.SECRET_KEY_BYTES];
- var sign_pk = new uint8[Sodium.Asymmetric.Signing.PUBLIC_KEY_BYTES];
- Sodium.Asymmetric.Signing.generate_keypair(sign_pk, sign_sk);
- // Encryption signing (Ed25519) key pair.
- var esign_sk = new uint8[Sodium.Asymmetric.Signing.SECRET_KEY_BYTES];
- var esign_pk = new uint8[Sodium.Asymmetric.Signing.PUBLIC_KEY_BYTES];
- Sodium.Asymmetric.Signing.generate_keypair(esign_pk, esign_sk);
- // Encryption sealing (X25519) key pair.
- var seal_sk = new uint8[Sodium.Asymmetric.Sealing.SECRET_KEY_BYTES];
- var seal_pk = new uint8[Sodium.Asymmetric.Sealing.PUBLIC_KEY_BYTES];
- Sodium.Asymmetric.Sealing.generate_keypair(seal_pk, seal_sk);
- stdout.printf("{\n");
- stdout.printf(" \"statum\": {\n");
- stdout.printf(" \"signing_secret_key\": \"%s\",\n", Base64.encode(sign_sk));
- stdout.printf(" \"signing_public_key\": \"%s\",\n", Base64.encode(sign_pk));
- stdout.printf(" \"encryption_signing_secret_key\": \"%s\",\n", Base64.encode(esign_sk));
- stdout.printf(" \"encryption_signing_public_key\": \"%s\",\n", Base64.encode(esign_pk));
- stdout.printf(" \"encryption_sealing_secret_key\": \"%s\",\n", Base64.encode(seal_sk));
- stdout.printf(" \"encryption_sealing_public_key\": \"%s\"\n", Base64.encode(seal_pk));
- stdout.printf(" }\n");
- stdout.printf("}\n");
- return 0;
- }
- }
- }
|