{"name":"@deckyard/sealbox","description":"One-call encryption formats on top of crypto: sealed boxes, encrypt-then-MAC, Fernet","versions":{"0.1.0":{"version":"0.1.0","kind":"git","url":"https://github.com/deckyard/deck-sealbox.git","ref":"0.1.0","commit":"1513fd02cefe6a11fb2e257acc0d2781e138c018","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.26.0","jennifer-tiny":"\u003e=0.26.0"},"capabilities":[],"keywords":["crypto","encryption","aes-gcm","hmac","fernet"],"description":"One-call encryption formats on top of crypto: sealed boxes, encrypt-then-MAC, Fernet","publishedAt":"1794387959","repoId":1453233168,"repoOwnerId":346943577,"repoOwner":"deckyard"}},"readme":"# @deckyard/sealbox\n\n[![test](https://github.com/deckyard/deck-sealbox/actions/workflows/test.yml/badge.svg)](https://github.com/deckyard/deck-sealbox/actions/workflows/test.yml)\n[![Documentation](https://img.shields.io/badge/docs-github%20pages-blue)](https://deckyard.github.io/deck-sealbox/)\n[![release](https://img.shields.io/github/v/release/deckyard/deck-sealbox)](https://github.com/deckyard/deck-sealbox/releases/latest)\n\nOne-call encryption formats for [Jennifer](https://jennifer-lang.dev/), on top\nof its `crypto` library: sealed boxes (AES-256-GCM with the nonce stored in\nfront), encrypt-then-MAC (AES-CBC + HMAC-SHA256), and Fernet tokens compatible\nwith Python's `cryptography.fernet`. The caller never handles a nonce, an IV\nor a MAC, and every failure to open is one error that does not say which\ncheck failed.\n\n**[Documentation](https://deckyard.github.io/deck-sealbox/)**\n\n## Install\n\n```sh\njvc add @deckyard/sealbox\n```\n\nThis vendors the deck to `vendor/\u003cscope\u003e/sealbox/`. Without `jvc`, unpack the\n`src/` subtree of a release archive (`\u003cscope\u003e-sealbox-\u003cversion\u003e.tar.gz`) there.\n\n## Usage\n\n```jennifer\nuse convert;\nimport \"@deckyard/sealbox/\" as sealbox;\n\ndef key as bytes init sealbox.newKey();\ndef box as bytes init sealbox.seal(convert.bytesFromString(\"utf-8\", \"secret\"), $key);\ndef back as bytes init sealbox.open($box, $key);\n```\n\n## Requirements\n\nJennifer 0.26.0 or newer. Pure computation: no network, programs or\ndatabases, so it runs on `jennifer-tiny` too.\n\n## Development\n\n```sh\ntools/check-all.sh                   # the full gate, as CI runs it\njennifer test src/sealbox_test.j      # the test overlay\ntools/check-docs.sh                  # docs against the code\ntools/pack.sh dist                   # build the release archive\n```\n\n## Licence\n\nLGPL-3.0-only, see [LICENSE](LICENSE). Copyright (C) 2026 mplx \u0026lt;mplx@jennifer-lang.dev\u0026gt;.\n\n`tools/check-headers.sh` checks every source file's SPDX header against\n`deck.toml`.\n"}