{"id":22963964,"url":"https://github.com/jnaulty/sequoia-openpgp-webapp","last_synced_at":"2026-04-22T05:31:18.041Z","repository":{"id":78739394,"uuid":"562362666","full_name":"jnaulty/sequoia-openpgp-webapp","owner":"jnaulty","description":"Playing with Sequoia OpenPGP on the web with yew.rs","archived":false,"fork":false,"pushed_at":"2022-11-07T04:27:38.000Z","size":27038,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-30T01:51:29.473Z","etag":null,"topics":["crypto","openpgp","rust","sequoia","wasm","yew"],"latest_commit_sha":null,"homepage":"https://jnaulty.github.io/sequoia-openpgp-webapp/","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/jnaulty.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-06T05:12:54.000Z","updated_at":"2022-11-07T04:09:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"415f702d-391f-4760-af12-960698943b26","html_url":"https://github.com/jnaulty/sequoia-openpgp-webapp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jnaulty/sequoia-openpgp-webapp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnaulty%2Fsequoia-openpgp-webapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnaulty%2Fsequoia-openpgp-webapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnaulty%2Fsequoia-openpgp-webapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnaulty%2Fsequoia-openpgp-webapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jnaulty","download_url":"https://codeload.github.com/jnaulty/sequoia-openpgp-webapp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jnaulty%2Fsequoia-openpgp-webapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32122679,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"online","status_checked_at":"2026-04-22T02:00:05.693Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","openpgp","rust","sequoia","wasm","yew"],"created_at":"2024-12-14T19:42:44.793Z","updated_at":"2026-04-22T05:31:18.025Z","avatar_url":"https://github.com/jnaulty.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sequoia OpenPGP WebApp Demo\n\n`sequoia-openpgp-webapp` is a playground project I created to explore pgp on the web, in rust.\n\nMy objective was to create a web app written completely in rust that could show off the `sequoia-openpgp` project.\nI've had exposure to Javascript web frameworks like Angular, React, and Vue, but wanted to stay completely within the rust ecosystem.\nI'd like to get more comfortable with the `sequoia-openpgp` library. Eventually, I'd like to use it on the [betrusted.io](https://betrusted.io) `precursor` device.\n\nHere's the [Demo.](https://jnaulty.github.io/sequoia-openpgp-webapp/) (rendered via `gh-pages`). It's written entirely in rust :crab: \n\n## Underlying Tech\n\nThis web app is built with two primary technologies, [yew.rs](https://yew.rs) and [sequoia-openpgp](https://sequoia-pgp.org/)\n\n### Why Yew?\n\nI wanted to work on a project that was using Rust + WebAssembly--[Mozilla Developer Docs](https://developer.mozilla.org/en-US/docs/WebAssembly/Rust_to_wasm#rust_and_webassembly_use_cases) pointed me to Yew:\n\n```\nThere are two main use cases for Rust and WebAssembly:\n\n- Build an entire application — an entire web app based in Rust.\n- Build a part of an application — using Rust in an existing JavaScript frontend.\n\nFor now, the Rust team is focusing on the latter case, and so that's what we cover here. \nFor the former case, check out projects like yew.\n```\n\n[Yew](https://github.com/yewstack/yew) \n\u003e Yew is a modern Rust framework for creating multi-threaded front-end web apps with WebAssembly.\n\nMy pet peeve with web development is having to deal with javascript. I'm so happy to see frameworks like `Yew` developing in the rust ecosystem!\n\n### Why Sequoia-Openpgp?\n\nThe Sequoia Project ([gitlab](https://gitlab.com/sequoia-pgp/sequoia)) is a \n\u003e cool new OpenPGP implementation.  It consists of several crates, providing both a low-level and a high-level API for dealing with OpenPGP data.\n\nSome cool features about this project is that it's a very complete implementation of OpenPGP standard in rust. This project is much more friendly for development than building something on top of the `gpg` ecosystem.\n\nThe [RustCrypto Backend](https://gitlab.com/sequoia-pgp/sequoia/-/tree/main/openpgp#crypto-backends) also means this utility will be easier to port over into [xous-core](https://github.com/betrusted-io/xous-core) as an app. `xous-core` is the OS for a secure information/compute device called the Precursor.\n\n#### OpenPGP Web App Integration Features\n\n- [ ] Go through [Sequoia OpenPGP Examples](https://gitlab.com/sequoia-pgp/sequoia/-/tree/main/openpgp/examples)\n    - [ ] [decrypt.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/decrypt-with.rs)\n    - [ ] [encrypt-for.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/encrypt-for.rs)\n    - [x] [generate-encrypt-decrypt.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/generate-encrypt-decrypt.rs)\n    - [ ] [generate-group-key.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/generate-group-key.rs)\n    - [ ] [generate-sign-verify.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/generate-sign-verify.rs)\n    - [ ] [notarize.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/notarize.rs)\n    - [ ] [pad.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/pad.rs)\n    - [ ] [replly-encrypted.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/reply-encrypted.rs)\n    - [ ] [sign-detached.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/sign-detached.rs)\n    - [ ] [sign.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/sign.rs)\n    - [ ] [statistics.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/statistics.rs)\n    - [ ] [supported-algorithms.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/supported-algorithms.rs)\n    - [ ] [web-of-trust.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/web-of-trust.rs)\n    - [ ] [wrap-literal.rs](https://gitlab.com/sequoia-pgp/sequoia/-/blob/main/openpgp/examples/wrap-literal.rs)\n\n\n## Miscellaneous\n\n### Build\n\n- `cargo install trunk`\n- `trunk serve --open`\n\n### Deps.Dev\n\n#### Yew\n\n- [deps.dev - yew v0.19.3](https://deps.dev/cargo/yew/0.19.3)\n\n#### sequoia-openpgp\n\n- [deps.dev - sequoia-openpgp v1.10.0](https://deps.dev/cargo/sequoia_openpgp)\n\n\n### Thanks\n\n- to [antonleviathan/pgp-encrypt-files-static-site](https://github.com/antonleviathan/pgp-encrypt-files-static-site). I was inspired to try out a similar project in rust after seeing this work!\n- to the [hashbang](https://hashbang.sh) group--it's cool learning from you all!\n- to github for free hosting!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjnaulty%2Fsequoia-openpgp-webapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjnaulty%2Fsequoia-openpgp-webapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjnaulty%2Fsequoia-openpgp-webapp/lists"}