Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 25 additions & 22 deletions EXPORT-INVENTORY.json
Original file line number Diff line number Diff line change
Expand Up @@ -137,14 +137,18 @@
".github/ISSUE_TEMPLATE/bug-report.yml": "132a4fc8d7cfc655485dd70dbbd2042fcf49636818329e9df5ab14fbe1ca38f0",
".github/ISSUE_TEMPLATE/config.yml": "e309cd574df26e9b0eea44083905d3785da1ed9761ce2d9a8f020fded3cb097a",
".github/ISSUE_TEMPLATE/licensing-enquiry.yml": "c4686b43c2b39718ab9b86713461ad919a10415c6b6a1b5ecdc4183b449e2524",
".github/workflows/ci.yml": "f8e7dc60e0138d61841817bcf44338ed7ed19d1f97645e83631c97575fa14436",
".github/workflows/ci.yml": "37f74c0187b1130489f60dc325d10f3d5c1f47e58df507e470cc5edb53542a33",
".gitignore": "ac05572173ab2ab7437511f230c35c4d767ebb9611496581f7bc9e54c57bc24a",
"Cargo.lock": "9aaef2432ecadcbc53b75e70abd75b0e41fc9d316e576938e4cc594861ec51e5",
"Cargo.toml": "98c1cef192250bc371784bfb7df7a947e172a886112da29f1714f3c405929bf5",
"clippy.toml": "447c1c2ae9dc0dfef9bae35ca82cb04f08c09bf7943d3835823138b546c03621",
"CONTRIBUTING.md": "72a29ff17d21e903057986be6ee97cdfe7c20f519cc4845b0a58a9831a7c0eb7",
"Cargo.lock": "ce1a55412b61ad14b36e2bee4f617a6d87f95cfbaa3a04aee784ba5d0d0fc9b0",
"Cargo.toml": "c7f50ae96d964d3b5db205e5147a6ba17545d10bc161e44a736fe4b85f54c12b",
"LICENSE": "eebdd6a75537205ccfccdaac674d895247aded560225a519a01300b2e46bc70f",
"LICENSE-OPENCRATE": "eebdd6a75537205ccfccdaac674d895247aded560225a519a01300b2e46bc70f",
"README.md": "263456986a9dc156b5a85931d76933c8b971ef996ed03169bff6b99722dae1e7",
"SECURITY.md": "839c254e62ea1cfa4628520ca6d1e145c5fc1f6b109ab4f2f9c711b3db26d930",
"clippy.toml": "447c1c2ae9dc0dfef9bae35ca82cb04f08c09bf7943d3835823138b546c03621",
"crates/oc-crypto/Cargo.toml": "22a3f3142203716749ea5f7e9d626ae2b270d23f4f54f68f4db0b511d8bd5de2",
"crates/oc-crypto/README.md": "4adca414c2c7386d4688305d823a9c7e9061f4c31e372d6f025617d6661bbe44",
"crates/oc-crypto/README.md": "cb87aec71ad72c033f2c23ac02d2aeaf7fcffb6db6509f689e062ecc0e6bce83",
"crates/oc-crypto/src/aead.rs": "173799c3e6ce7bf46058377cdd54c0e9d43408752341cd49f720ebce74043ca8",
"crates/oc-crypto/src/agreement.rs": "469d4d3f4c1e3aa402ad7cd12e99653ab539fd879ce3b83afcd896b63fbc0aa6",
"crates/oc-crypto/src/kdf.rs": "9de22b06f3ac9ff2a5a105811df9a218509061c26e871abf2c8a949c0d75bcc0",
Expand All @@ -170,17 +174,17 @@
"crates/oc-crypto/tests/security_probe_tree_signatures.rs": "e8d9f1d83bb258002cc26193b005164aed7bfb013939ca0a8dc0fb665e2dd1d1",
"crates/oc-crypto/tests/spec_labels.rs": "cbe4cb4198efddf426b02d25e92c9d59dc867065a76c3dee24cb31e5a8b8034d",
"crates/oc-crypto/tests/zeroize_on_drop.rs": "fa1bd7770cfaf01f08b24cb8131c848fd26f551dbf7f2b94a016ad9aff43d679",
"crates/oc-engine/Cargo.toml": "f380978c462b3d63daf977798f1ad61e1ed75b0276504ed03ed8c0984c8a1a24",
"crates/oc-engine/Cargo.toml": "f64d88174eacceb868beb3621c98c45fb80a7de830d4b3128a7ef621da1a8232",
"crates/oc-engine/README.md": "2676481c405099b07528b277b459c2723f4061b1c85e7b3edf390d0a74a1419e",
"crates/oc-engine/src/edit.rs": "0ca917d571b1a6845247c7ef0b850f216df16a893d6be4b6a37c2b316b739aac",
"crates/oc-engine/src/lib.rs": "cf10dda5a19e795f98823b3a42ea05847c421ad8343b03931917d8817ad38798",
"crates/oc-engine/src/wire.rs": "5a015ab02a5bd7249d09ffddb0b3fc4f18cc718e264ce652148eabba31775ec8",
"crates/oc-engine/tests/edit_writer.rs": "a2a4a298ff9e7f745847785283aaf62bf8a7aebfefbe5e501bdab83870aebde3",
"crates/oc-engine/tests/hardware_hybrid_golden.rs": "95d20e98b857b065b0ba02e32a7685018be8394414045537e143b8188156337d",
"crates/oc-engine/tests/p256_author_golden.rs": "6bf77dcc1e172715c31e088fb044d34e11d0f14dd98ba004b93ca46e0dd56ea7",
"crates/oc-format/Cargo.toml": "5d6b7876dfa5c4b7bc2558a51b1af7632d404252513900e241cbe72bb9578f5b",
"crates/oc-format/examples/verify-header.rs": "82fef149cdae9b3fbf75db7ce7ad77c3adf13c3cbcf2c20998f4d53f63f9d713",
"crates/oc-format/Cargo.toml": "92fed5d3bcd9fc6c4fb5404831b762adad14213d0390f558f52f53aa6825ca2e",
"crates/oc-format/README.md": "36af480e569969e4ec58f501e6beb3b2045d83569ba0d0c101bca3e4f1712567",
"crates/oc-format/examples/verify-header.rs": "82fef149cdae9b3fbf75db7ce7ad77c3adf13c3cbcf2c20998f4d53f63f9d713",
"crates/oc-format/src/content.rs": "c71922d037cfebb63941634a6e8c38b7d1d1a38d1c120da84d632b0e8896866a",
"crates/oc-format/src/edit.rs": "e750af07d3624c1b41054ef3e88354ee2450285e94e643cee5a12170553603a6",
"crates/oc-format/src/encoding.rs": "afa7b4b03710050820d9d49eda04df29af919932b6e3ecc984842a346dd00b95",
Expand All @@ -199,12 +203,12 @@
"crates/oc-format/tests/security_probe_policy_enforcement.rs": "0fc8d6e4b0c2b71a552ef2deba8972208f42f787f374b1084f5703ea1541c6e2",
"crates/oc-format/tests/skeptic_recheck_slot_tags.rs": "89ea63efa807d1e4c44c95b27df6677d77b2ccda7ee58a18677c29a9fb0e635f",
"crates/oc-policy/Cargo.toml": "daf309b367433dbb51d016c490acf6eff8f855a24b22e9bedbdedbc8a29952f7",
"crates/oc-policy/examples/access-policy.rs": "dc2912832af92b86d394e1bb48aaaa36e8b10e6342fc908862b455d7b3a928bd",
"crates/oc-policy/README.md": "781d826f5467727ee848d0f0ebe294ef0f1fdf8d7b526caf76098fff5327a16a",
"crates/oc-policy/examples/access-policy.rs": "dc2912832af92b86d394e1bb48aaaa36e8b10e6342fc908862b455d7b3a928bd",
"crates/oc-policy/src/lib.rs": "df6149fbd31b71cf1cf9016c0dbfcce1d134d5c86bb4810706292edc77346df7",
"crates/oc-policy/tests/security_probe_skeptic.rs": "643226418b27a4afdd2f4c04de37770fd5f14fea84ffa8ed9e01fbd09abff35c",
"crates/oc-policy/tests/server_policy_composition.rs": "41a7447828ced259660829ada1d950ff29fbf6705fec2883c18be0768e49d6fb",
"crates/oc-protocol/Cargo.toml": "b47ac2a899d686825125d6c4fdfee41c6e937460c5f39d55dc33a6760b4a6d56",
"crates/oc-protocol/Cargo.toml": "e75d306598726e2ed014da0fbeb1327123437c3414516e0204353d7ff3f661cd",
"crates/oc-protocol/README.md": "38315a2a4544e9adc1e786e94a7d6741fdaf8dc3c1e5c259abbb79a964ce3352",
"crates/oc-protocol/src/access.rs": "d80cee99a7103d751f283d4f140714f7342072b24167966d08779f1c96477eb7",
"crates/oc-protocol/src/action.rs": "d5ad66ed3090f7bac3f9acc59450a017ba076b02ef4522db30d68aa8c1423af2",
Expand All @@ -231,29 +235,28 @@
"crates/oc-protocol/tests/lease_signature.rs": "a7136a640483be24523e3bfc64a6027a41e6efe8681527d4fd01d29e3ce947e2",
"crates/oc-protocol/tests/session_mac_table.rs": "9ee07caece5581e02de07e32a8f1833ab8ed47dc60b62ddf8ee57723ceb38807",
"crates/oc-protocol/tests/unknown_tags.rs": "de2e3a346d0db0f9380974f675ac6e6b21095d0b6c46cc6c5a7f43953c303aa0",
"crates/opencrate/Cargo.toml": "94898b29340647bfe0cae14d60f6d56cd839a9b49f1aefb0827159a93cd59d5a",
"crates/opencrate/README.md": "2757055daf9ef5673b2844638cfa6c5b38fa25fe9cd3aedf6edd40c9e739f63b",
"crates/opencrate/src/lib.rs": "ee7cb30cf8f068eb75ba0c0dce166087119b865754ecc750052301c183456ed9",
"deny.toml": "558674f4b6c54ed6fe5ca9ac16447e038f544c0ca2aee72549ac7beb864ce979",
"docs/architecture.md": "f14a9d213075ba3eecac721290558a343489e9f0ae6544a9fd475a37877f5266",
"crates/opencrate/Cargo.toml": "2c8fe575cd61706f75665947501cc660b9d187becc0e6a213c4f4d3b82cb1675",
"crates/opencrate/README.md": "cde5a1df4285070791ff32fa4cdd92c594672d3a5506f2573cb316802b5cc436",
"crates/opencrate/examples/seal-file.rs": "fd435aaee04d62b3a2dbae23a4c58c38ad5bee00a1f54a96c8eb168d43a43b5c",
"crates/opencrate/src/lib.rs": "1a64b27375a63aad5396bbb56f6dbf36f643ab8e3bf0550351a523905993c8fb",
"deny.toml": "8c5d560e337a419a378c0cd65fdc513046b59953c43b8210dea95e23f8af47b8",
"docs/architecture.md": "9b606db5d5b7a27bf25d90c2cef3f823a2c07989d25aeb0282bd5d6ef2f70e43",
"docs/assets/access-decisions.svg": "b106699adb59aeb9466d94b48ab505045faf7e91f9bd5739074911e244a4c030",
"docs/assets/core-map.svg": "716048cb3069ba81a1b23da228ee9a82385199b423337f8dd17bc77e533ecce2",
"docs/assets/document-lifecycle.svg": "00faf9ae57fde14858b297c72d46902ac227a490215356248c9896d75454b79d",
"docs/assets/open-crate-banner.svg": "9e169d913482e4eb5c01094b20b6870c4b3c2931514dc0b8b0f37c489c170b9c",
"docs/assets/open-crate-mark.svg": "f3039e6557a4a5cac7aff44ec4457119efc1fa543caf17320fafc15489ed0dc0",
"docs/assets/quick-start.gif": "4f0232560ff9bd8e1e7a1c34c4c04b5aa94deeb134e22ea722307e0b3aa5bee1",
"docs/format.md": "b4e98a8bd6ccbe09e81f10637068a9d878f996387e6d36096d8dde21534ca1c5",
"docs/getting-started.md": "1b3fe36e5470afd9528a8c7847dbc0efb7bbf2d2e695cc328103514558f0838d",
"docs/getting-started.md": "1699b2a39f3299aa4e66beb9b70824eac50a55b69d37291c221607537f0b99f4",
"docs/how-it-works.md": "5a15ef7455a46a9b550a85359fcf0b8e8dd85bcbc45e2ded612676b1cc8826e7",
"docs/index.md": "072f1cdf5778cd95919c40cb2e1cc9b4e8b4a3c8fe592348f3343f288f0a9708",
"docs/index.md": "328e5e1d6ea45daae7ef1651459a83c759f4b698b5d81a571f5eb1f9a3c985fa",
"docs/licensing.md": "6711f5603b9198fdaacf6c769dddb26c6d6f324d319b66a971859ba06dcf90ef",
"docs/protocol.md": "ec582526e61914ee6251ba2188d6680d3aa88aacaf2056d49ee6a463ce1e6990",
"docs/translation-notes.md": "c290d69d83f42cd1f9d9311e32b8ad2b08391a94856e68a0b4993dfa1d103065",
"examples/README.md": "5d0b19f37c3c600537147116277b6c82362278d7e7b830e31074ac3c0eb59cdf",
"LICENSE": "eebdd6a75537205ccfccdaac674d895247aded560225a519a01300b2e46bc70f",
"LICENSE-OPENCRATE": "eebdd6a75537205ccfccdaac674d895247aded560225a519a01300b2e46bc70f",
"README.md": "1fc96deecea02091be4f20a54d63a33d99e458407284d8d47e0ac9b3dd59adb5",
"examples/README.md": "7a95174a360ec6527fcb86cef5a78c011e4281010bde5ddfac8fc280f7194738",
"rust-toolchain.toml": "41308dbe82a83679b7b2081be4d5ae7f9aa52f642bcc3eab104ac77501560e79",
"rustfmt.toml": "6b2630173db5274ede0d37501985e54cc9eda6af99fd7602bb67b39c9ca84e8a",
"SECURITY.md": "839c254e62ea1cfa4628520ca6d1e145c5fc1f6b109ab4f2f9c711b3db26d930",
"tests/golden/basic.cc": "fb852bcf8c6d1e07d5c3f9fba3ce1f5fb936a33c9cf94754dcea7330347302f0",
"tests/golden/claim.cc": "e7e2f272ba4bceacc5a07b97175b11c7262e42fb9ebfe1ab5d9e74cc5d548adc",
"tests/golden/coauthors.cc": "85ac6220eb0c1c10ba405d41baee785631b41966ecf3841eb04a57f0a94f24d0",
Expand Down
66 changes: 40 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
<p align="center">
<img src="docs/assets/open-crate-mark.svg" width="88" alt="Open Crate logo">
</p>

![Open Crate — encrypted documents, explicit access decisions](docs/assets/open-crate-banner.svg)

<p align="center">
<a href="https://github.com/AlexiAxAxA/OpenCrate/actions/workflows/ci.yml"><img alt="Core CI on main" src="https://github.com/AlexiAxAxA/OpenCrate/actions/workflows/ci.yml/badge.svg?branch=main"></a>
<a href="LICENSE"><img alt="Open Crate Community License 1.0" src="https://img.shields.io/badge/license-Community%201.0-527fba"></a>
<a href="https://crates.io/crates/opencrate"><img alt="Total opencrate crate downloads" src="https://img.shields.io/crates/d/opencrate?label=downloads"></a>
</p>

<div align="center">

[Get started](docs/getting-started.md) · [Documentation](docs/index.md) · [Examples](examples/README.md) ·
Expand All @@ -25,6 +35,25 @@ Your application supplies storage, transport, keys, secure randomness and time.
The core handles the container rules, cryptography and policy evaluation.
The default core remains buildable for WebAssembly.

## Quick Start

With Git and Rust installed, clone the repository and run a policy example:

```sh
git clone https://github.com/AlexiAxAxA/OpenCrate.git
cd OpenCrate
cargo run --locked -p oc-policy --example access-policy
```

It prints an allowed view with obligations, a denied print, and a view denied
after the lease window. This example uses synthetic facts; your application
must verify its own inputs and enforce the returned obligations. The first
Cargo build downloads dependencies and may take more than a minute. No account
or server is needed. See the [getting started guide](docs/getting-started.md)
for prerequisites and a signed-header check.

![Animated terminal demo of header verification and policy decisions](docs/assets/quick-start.gif)

## Files beyond `.cc`

Enable the host-side `app-data` feature to seal the bytes of a file of any
Expand Down Expand Up @@ -59,7 +88,8 @@ lease, access policy or revocation; see the
| Small arbitrary file or application value | Opt into `app-data` for a one-recipient sealed-byte envelope outside `.cc` |

These are integration building blocks. Your application enforces the returned
decisions and obligations. Start with the runnable examples below.
decisions and obligations. Start with the Quick Start above, then follow the
[integration guide](docs/getting-started.md).

## What is included

Expand All @@ -71,31 +101,6 @@ decisions and obligations. Start with the runnable examples below.
| `oc-policy` | Access decisions from policy and verified caller-provided facts |
| `oc-engine` | Packing plans, per-file secrets and header assembly |

## Try it

Install Rust through rustup, then run from a terminal:

```sh
git clone https://github.com/AlexiAxAxA/OpenCrate.git
cd OpenCrate
cargo run --locked -p oc-format --example verify-header -- tests/golden/basic.cc
cargo run --locked -p oc-policy --example access-policy
```

The first example verifies a real fixture's header signature and reports an
unknown author until your application pins that identity. The second lets you
explore a policy with synthetic facts:

```text
VIEW at t=1100: ALLOW (obligations: ...)
PRINT at t=1100: DENY (no print permission)
VIEW at t=2000: DENY (lease window has ended)
```

Both run locally, without an account or server. Follow the
[step-by-step guide](docs/getting-started.md) to add the libraries to your own
Rust application, understand the output and try a damaged-header check.

## Designed to be checked

- Frozen known-answer vectors and golden headers accompany the implementation.
Expand Down Expand Up @@ -144,3 +149,12 @@ Send only USDT on the TRON (TRC20) network to this address. Other tokens or
other networks (Ethereum, BNB Chain and so on) will be lost. No memo or tag is
needed. Commercial licensing goes through god@closecrate.com, not through this
address.

## Feedback

Questions and improvement ideas are welcome in
[Issues](https://github.com/AlexiAxAxA/OpenCrate/issues).
Please report security vulnerabilities through [private reporting](SECURITY.md).
If Open Crate helped you, please consider
[starring the repository](https://github.com/AlexiAxAxA/OpenCrate).
It helps others find the project.
15 changes: 15 additions & 0 deletions docs/assets/open-crate-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/quick-start.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading