Age Encryption (Age)
Age Data Library ("age_encrypt" feature)
Example
/// Receiver in real life will most likely be a remote system.
/// Public keys could come from DB, HTTP, etc.
Receiver: {
#[private]
const passport: Age.generate()
fn key() -> str {
self.passport.public()
}
fn receive(encrypted: blob) -> str {
const dest = new {};
Age.parse(self.passport, encrypted, dest, "bstf");
?dest.speak();
dest.message ?? "none"
}
}
#[main]
fn sending_sensitive() {
// Create a binary blob of encrypted data that only the receiver can use
const encrypted: blob = {
// Create the payload, including Stof functions/APIs
const payload = new { message: "hey there, this is secret" };
parse(r#"fn speak() { pln('Speaking: ', self.message); }"#, payload, "stof");
// Can use one or more receivers Data<Age> or str public keys (list for multiple)
const res = Age.blobify(self.Receiver.key(), "bstf", payload);
drop(payload);
res
};
// Now have the receiver do what it wants with it
const msg = self.Receiver.receive(encrypted);
assert_eq(msg, "hey there, this is secret");
}Output
Age.blobify(recipients: str | list | Data<Age>, format: str = 'stof', context?: obj) -> blob
Age.generate(context: obj = self) -> Data<Age>
Age.parse(age: Data<Age>, bin: blob, context: obj = self, format: str = "stof") -> bool
Age.public(age: Data<Age>) -> str
Last updated