Secrets: reveal
● Intermediate2 min
reveal(value) lets a secret through on purpose, where review can see it.
type Order {
id: Int
secret card: String
}
fn charge(secret card: String, amount: Int) -> String {
"charged {amount}, card of {card.len()} digits"
}
fn main() {
const order = Order(id: 7, card: "4242424242421881")
print(charge(order.card, 499))
const card = reveal(order.card)
print("ends in {card.slice(12, 16)}")
}The program ran and printed:
kavach run secret-param.kav
charged 499, card of 16 digitsends in 1881
reveal(order.card) gives an ordinary String, here used to show the last four digits. kavach audit lists every reveal in a project, so none goes unnoticed:
kavach audit
unsafe code: nothing revealed secrets: src/main.kav:13 reveal(…) audited calls: nothing capability use: src/main.kav:10 fn main: Console