{"id":15370264,"url":"https://github.com/jedisct1/wasi-crypto-preview","last_synced_at":"2025-04-15T13:53:31.876Z","repository":{"id":52413507,"uuid":"245899293","full_name":"jedisct1/wasi-crypto-preview","owner":"jedisct1","description":null,"archived":false,"fork":false,"pushed_at":"2021-04-29T21:31:24.000Z","size":639,"stargazers_count":10,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-28T20:46:37.319Z","etag":null,"topics":["crypto","cryptography","wasi","webassembly"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jedisct1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-03-08T22:38:36.000Z","updated_at":"2023-12-13T22:17:23.000Z","dependencies_parsed_at":"2022-09-03T09:01:58.911Z","dependency_job_id":null,"html_url":"https://github.com/jedisct1/wasi-crypto-preview","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedisct1%2Fwasi-crypto-preview","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedisct1%2Fwasi-crypto-preview/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedisct1%2Fwasi-crypto-preview/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jedisct1%2Fwasi-crypto-preview/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jedisct1","download_url":"https://codeload.github.com/jedisct1/wasi-crypto-preview/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249085474,"owners_count":21210267,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crypto","cryptography","wasi","webassembly"],"created_at":"2024-10-01T13:40:38.322Z","updated_at":"2025-04-15T13:53:31.847Z","avatar_url":"https://github.com/jedisct1.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WASI Cryptography APIs\n\nThis repository is for development of Cryptography API proposals for the\n[WASI Subgroup] of the [WebAssembly Community Group].\n\nPlease refer to those groups' documentation for more information on their\nprocesses, goals, scope, and deliverables.\n\n[WASI Subgroup]: https://github.com/WebAssembly/WASI\n[WebAssembly Community Group]: https://www.w3.org/community/webassembly/\n\n* [High-level goals](docs/HighLevelGoals.md)\n* [Security design document](design/security.md)\n* [Specification](docs/wasi-crypto.md)\n* Interface definitions:\n  * common types and functions ([witx](witx/proposal_common.witx), [doc](witx/proposal_common.md))\n  * symmetric operations ([witx](witx/proposal_siymmetric.witx), [doc](witx/proposal_symmetric.md))\n  * common types and functions for asymmetric operations ([witx](witx/proposal_asymmetric_common.witx), [doc](witx/proposal_asymmetric_common.md))\n  * signatures ([witx](witx/proposal_signatures.witx), [doc](witx/proposal_signatures.md))\n  * key exchange ([witx](witx/proposal_kx.witx), [doc](witx/proposal_kx.md))\n  * external secrets ([witx](witx/proposal_external_secrets.witx), [doc](witx/proposal_external_secrets.md))\n* [Concise API overview](witx/wasi_ephemeral_crypto.txt)\n* [Wasmtime implementation](implementations/wasmtime) - [Wasmtime fork with wasi-crypto integration](https://github.com/jedisct1/wasmtime-crypto)\n* [Example AssemblyScript bindings](implementations/bindings/assemblyscript)\n* [Example Rust bindings](implementations/bindings/rust)\n\n## Testing the API\n\nThe example implementation exports:\n\n* A Rust interface `CryptoCtx` modeled after the `witx` file, but that can be directly used without a WebAssembly runtime.\n* A thin `WasiCryptoCtx` layer that directly maps that API to the WASI calling conventions, using `wiggle`.\n\n`CryptoCtx` can be used to quickly experiment with the API in Rust.\n\nOther languages can use the [`wasmtime` fork](https://github.com/jedisct1/wasmtime-crypto) above as a WebAssembly runtime in order to access the crypto API.\n\nIn that configuration, the API can be accessed via the exported `wasi_ephemeral_crypto` module.\n\nSee the AssemblyScript and Rust bindings as an example.\n\nCurrently supported algorithms as a proof of concept:\n\n* `ECDSA_P256_SHA256`\n* `ECDSA_K256_SHA256`\n* `Ed25519`\n* `RSA_PKCS1_2048_SHA256`\n* `RSA_PKCS1_2048_SHA384`\n* `RSA_PKCS1_2048_SHA512`\n* `RSA_PKCS1_3072_SHA384`\n* `RSA_PKCS1_3072_SHA512`\n* `RSA_PKCS1_4096_SHA512`\n* `RSA_PSS_2048_SHA256`\n* `RSA_PSS_2048_SHA384`\n* `RSA_PSS_2048_SHA512`\n* `RSA_PSS_3072_SHA384`\n* `RSA_PSS_3072_SHA512`\n* `RSA_PSS_4096_SHA512`\n* `HKDF-EXTRACT/SHA-256`\n* `HKDF-EXTRACT/SHA-512`\n* `HKDF-EXPAND/SHA-256`\n* `HKDF-EXPAND/SHA-512`\n* `HMAC/SHA-256`\n* `HMAC/SHA-512`\n* `SHA-256`\n* `SHA-512`\n* `SHA-512/256`\n* `AES-128-GCM`\n* `AES-256-GCM`\n* `CHACHA20-POLY1305`\n* `XCHACHA20-POLY1305`\n* `XOODYAK-128`\n* `XOODYAK-160`\n* `X25519`\n* `KYBER768`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedisct1%2Fwasi-crypto-preview","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjedisct1%2Fwasi-crypto-preview","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjedisct1%2Fwasi-crypto-preview/lists"}