{"id":27979306,"url":"https://github.com/apeleghq/ts-cms-ep-sfx","last_synced_at":"2025-12-24T19:17:13.992Z","repository":{"id":244339333,"uuid":"814959266","full_name":"ApelegHQ/ts-cms-ep-sfx","owner":"ApelegHQ","description":"Securely encrypt and decrypt files locally from a web browser","archived":false,"fork":false,"pushed_at":"2025-04-18T18:14:14.000Z","size":1517,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-08T02:51:50.643Z","etag":null,"topics":["cms","decryption","encryption","html","javascript","no-install","pwri","rfc3211","rfc5652","sandbox","standalone"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ApelegHQ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":"AUDITING.md","citation":null,"codeowners":null,"security":"SECURITY","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["Exact-Realty"]}},"created_at":"2024-06-14T04:03:35.000Z","updated_at":"2025-04-29T02:03:39.000Z","dependencies_parsed_at":"2024-06-14T05:26:34.908Z","dependency_job_id":"bc8e347e-dfd4-459e-a129-0264e71e5448","html_url":"https://github.com/ApelegHQ/ts-cms-ep-sfx","commit_stats":null,"previous_names":["exact-realty/ts-cms-ep-sfx","apeleghq/ts-cms-ep-sfx"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ApelegHQ%2Fts-cms-ep-sfx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ApelegHQ%2Fts-cms-ep-sfx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ApelegHQ%2Fts-cms-ep-sfx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ApelegHQ%2Fts-cms-ep-sfx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ApelegHQ","download_url":"https://codeload.github.com/ApelegHQ/ts-cms-ep-sfx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252989941,"owners_count":21836666,"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":["cms","decryption","encryption","html","javascript","no-install","pwri","rfc3211","rfc5652","sandbox","standalone"],"created_at":"2025-05-08T02:52:00.081Z","updated_at":"2025-12-24T19:17:13.986Z","avatar_url":"https://github.com/ApelegHQ.png","language":"TypeScript","funding_links":["https://github.com/sponsors/Exact-Realty"],"categories":[],"sub_categories":[],"readme":"# 🔒 Secure File Sharing Utility 🔒\n\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=Exact-Realty_ts-cms-ep-sfx\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=Exact-Realty_ts-cms-ep-sfx)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=Exact-Realty_ts-cms-ep-sfx\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=Exact-Realty_ts-cms-ep-sfx)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=Exact-Realty_ts-cms-ep-sfx\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=Exact-Realty_ts-cms-ep-sfx)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=Exact-Realty_ts-cms-ep-sfx\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=Exact-Realty_ts-cms-ep-sfx)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=Exact-Realty_ts-cms-ep-sfx\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=Exact-Realty_ts-cms-ep-sfx)\n[![License](https://img.shields.io/badge/License-Apache%202.0%20with%20llvm%20exception-blue.svg)](https://github.com/ApelegHQ/ts-cms-ep-sfx/blob/master/LICENSE)\n[![Integration Tests (GitHub Actions)](https://github.com/ApelegHQ/ts-cms-ep-sfx/actions/workflows/integration-tests-github.yml/badge.svg?event=push)](https://github.com/ApelegHQ/ts-cms-ep-sfx/actions/workflows/integration-tests-github.yml)\n\nWelcome to our secure file sharing utility! This HTML-based tool allows you to\neasily encrypt, share, and decrypt files using the CMS (Cryptographic Message\nSyntax) standard, PWRI (password recipient info) and AES-256-GCM encryption.\n\n## 🔐 Features\n\n- **Encrypt Files**: Select a file, enter a password, and the tool will generate\n  a standalone HTML file that contains the encrypted data.\n- **Share Securely**: Share the generated HTML file with your recipient, who can\n  then decrypt the file using the same password.\n- **Decrypt Files**: The recipient can use the standalone HTML file to decrypt\n  the CMS payload and access the original file.\n- **Local Processing**: All encryption and decryption operations are performed\n  locally in the browser, ensuring your data never leaves your device.\n- **Standalone HTML**: The encrypted and decrypted files are self-contained HTML\n  files, making them easy to share and use.\n- **AES-256-GCM**: The utility uses the secure AES-256-GCM cipher to encrypt\n  your files, providing strong protection for your data.\n- **Standards-based**: By using the CMS standard, this tool avoids \"reinventing\n  the wheel\" and allows interoperability with other file encryption tools.\n- **No Installation Required**: This utility can be used directly in your web\n  browser, without the need for any additional software installation.\n\n## 🚀 Getting Started\n\nUsing this secure file sharing utility is simple:\n\n1. **Encrypt a File**:\n    - Open the HTML file in your browser.\n    - Select the file you want to encrypt.\n    - Enter a password to protect the file.\n    - Click the \"\u0026#x1f4be;\u0026#xfe0e; Save\" button.\n    - The tool will generate a new HTML file containing the encrypted data.\n\n2. **Share the Encrypted File**:\n    - Share the generated HTML file with your recipient.\n\n3. **Decrypt the File**:\n    - Your recipient can open the HTML file in their browser.\n    - They will be prompted to enter the password you provided and will need to\n      click on the \"Next \u0026#x2192;\" button to decrypt the file and confirm details\n      before downloading.\n    - Clicking on the \"\u0026#x1f4be;\u0026#xfe0e; Download\" button will download the\n      original file.\n\nThat's it! Your file is now securely shared, and the recipient can access the\ndecrypted content.\n\n## 🎥 Demo\n\n![Screencast showing file encryption and decryption in action](assets/demo.gif)\n\nWant to see how it works? Check out the live demo at\n\u003chttps://cms-sfx-demo.apeleg.com\u003e.\n\n## 🌐 Browser Support\n\nThe following is a non-comprehensive list of browsers that have been tested.\nEven though we have tested with older versions for compatibility support and\nreporting, we strongly recommend using up-to-date browsers that still receive\nsecurity updates.\n\n- 360安全浏览器: ✅️ 12.1.2103.0–\n- Brave: ✅️ 0.62.30–\n- Chrome: ✅️ 73–\n- Dillo: ❌ Not supported\n- Edge: ✅️ 79–\n- Falkon: ✅️ 22.03.80–\n- Firefox: ✅️ 65–\n- GNOME Web: ✅️ 43.0–\n- Internet Explorer: ❌ Not supported\n- NetSurf: ❌ Not supported\n- Opera: ✅️ 60–\n- Pale Moon: ✅️ 33.3.0–\n- Tor Browser: ✅️ 9.0–\n- Safari: ✅️ 15–\n- SeaMonkey: ✅️ 2.53.18–\n- Vivaldi: ✅️ 2.4–\n\n### Other platforms\n\nIn addition to working on a web browser as a self-extracting file, the resulting\nencrypted file can also be decrypted by tools that support PEM-encoded CMS, such\nas OpenSSL.\n\nExample:\n\n```sh\nopenssl cms \\\n  -decrypt \\\n  -pwri_password MyPassword \\\n  -inform PEM \\\n  -in encrypted.html \\\n  -out decrypted.example.zip\nunzip decrypted.example.zip\n```\n\n## ⚡ Performance\n\nNote that this tool works by creating a self-contained HTML file. As a result,\nit may not be the best fit for very large files, for two main reasons:\n\n1. A large file will produce a correpondingly larger HTML document. Since this\n   is atypical, browsers may not be optimised for parsing such large files.\n2. Because of the file being embedded in the DOM tree (in encrypted form), the\n   need to encrypt / decrypt it, and some design constraints, the entire content\n   may need to fit into memory several times over. Ultimately, the amount of RAM\n   available is a hard limit to how big a file this tool can support.\n\n## 🔒 Security Considerations\n\nThis utility is designed with security in mind. By using the CMS standard, PWRI,\nand AES-256-GCM encryption, your files are protected during the sharing process.\nAdditionally, all encryption and decryption operations are performed locally in\nthe browser, so your data never leaves your device.\n\n**Password Strength Matters**: The strength of the encryption and overall\nsecurity of this tool _greatly_ depend on the strength of the password you\nchoose. We recommend using a strong, unique password to protect your files.\nWeak or compromised passwords can put your data at risk.\n\nFor more detailed information about the security of this tool and how it works,\nsee [`AUDITING.md`](./AUDITING.md).\n\n## ❗️ Disclaimer\n\nThis tool is provided in the hope that it will be helpful, but it comes with\nabsolutely no warranty, to the maximum extent permitted by law. While we have\ntaken great care to design this utility with security in mind, the\nresponsibility for the security and proper use of this tool lies entirely with\nthe user.\n\nWe cannot guarantee that this tool will be free from bugs, vulnerabilities, or\nother issues that could compromise the security of your data. The strength of\nthe encryption and the overall security of this tool ultimately depend on\nfactors outside of our control, such as the strength of the password you choose,\nthe security of your web browser, and the overall security of your computing\nenvironment.\n\n**By using this tool, you acknowledge and agree that, to the maximum extent\npermitted by law, we make no representations or warranties, express or implied,\nincluding but not limited to the warranties of merchantability, fitness for a\nparticular purpose and noninfringement. Please refer to the license for\nadditional details.**\n\nIt is your responsibility to thoroughly evaluate the risks and benefits of using\nthis tool, and to take appropriate measures to ensure the security of your data.\nWe strongly recommend that you carefully review the source code, perform your\nown security audits, and seek the advice of security professionals before\nrelying on this tool for any sensitive or critical data.\n\n## 📝 Contributing\n\nWe welcome contributions to this project! If you have any ideas, bug reports,\nor feature requests, please feel free to submit them.\n\n## 🧪 Testing\n\nThis project is tested with BrowserStack.\n\n## 📜 License\n\nThis project is licensed under the Apache 2.0 License with the LLVM exception.\nYou are free to use this package in compliance with the terms of the license.\nFor more information, see the [`LICENSE`](./LICENSE) file.\n\nWe hope you find this secure file sharing utility useful! If you have any\nquestions or feedback, please don't hesitate to reach out.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapeleghq%2Fts-cms-ep-sfx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapeleghq%2Fts-cms-ep-sfx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapeleghq%2Fts-cms-ep-sfx/lists"}