diff --git a/EXPORT-INVENTORY.json b/EXPORT-INVENTORY.json index d37d517..37120d8 100644 --- a/EXPORT-INVENTORY.json +++ b/EXPORT-INVENTORY.json @@ -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", @@ -170,7 +174,7 @@ "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", @@ -178,9 +182,9 @@ "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", @@ -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", @@ -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", diff --git a/README.md b/README.md index cb45973..870ce2c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,15 @@ +

+ Open Crate logo +

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

+ Core CI on main + Open Crate Community License 1.0 + Total opencrate crate downloads +

+
[Get started](docs/getting-started.md) · [Documentation](docs/index.md) · [Examples](examples/README.md) · @@ -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 @@ -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 @@ -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. @@ -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. diff --git a/docs/assets/open-crate-mark.svg b/docs/assets/open-crate-mark.svg new file mode 100644 index 0000000..f8d6da1 --- /dev/null +++ b/docs/assets/open-crate-mark.svg @@ -0,0 +1,15 @@ + + Open Crate mark + A warm crate resting on layered blue document sheets. + + + + + + + + + + + + diff --git a/docs/assets/quick-start.gif b/docs/assets/quick-start.gif new file mode 100644 index 0000000..cdc415b Binary files /dev/null and b/docs/assets/quick-start.gif differ