/Crypter

A Blazor WASM web application that offers end-to-end encrypted file and message transfer using Libsodium, Entity Framework, Hangfire, Docker, NUnit, and Mailkit.

Primary LanguageC#GNU Affero General Public License v3.0AGPL-3.0

Crypter

Licensing

Crypter is open-source software with a dual license.

Personal and Non-Commercial Use

For free, non-commercial use, Crypter is licensed under the AGPLv3.

A copy of the AGLPv3 is provided in LICENSE.md.

Commercial Use

Contact the current copyright holder in order to purchase a commercial license.

Email: jackedwards@protonmail.com

Getting Started

Check out these documents to get started working on Crypter:

Also take a look at some of the articles that have come in handy while working on the project:

If you have any questions, please add an issue or send an email to jackedwards@protonmail.com. I would love to hear from you.

Projects

Crypter.API

A RESTful API written using ASP.NET.

Crypter.Benchmarks

A sandbox for benchmarking various things.

Crypter.Common

A small class library containing domain models and data types that may be used in any project.

Crypter.Common.Client

A class library containing various interfaces and most of their implementations for use in client applications.

The "Repository" interfaces must be implemented per-environment, since these implementations must decide where and how to store data on the client device. These decisions and locations are device-specific. For example, storing data in a browser is likely to be different than storing data on a mobile phone.

Crypter.Core

All back-end business logic.

Crypter.Crypto.Common

A class library containing interfaces and portable implementations of various cryptographic primitives.

Crypter.Crypto.Providers.Browser

An implementation of the Crypter.Crypto.Common interfaces for use in browsers. This uses libsodium through the BlazorSodium nuget package.

Crypter.Crypto.Providers.Default

An implementation of the Crypter.Crypto.Common interfaces for use in non-browser platforms. This uses libsodium through the Geralt nuget package, as well as System.Security.Cryptography for random number generation.

Crypter.DataAccess

A class library containing code to interact with the PostgreSQL database.

Crypter.Test

A project containing NUnit unit tests.

Crypter.Web

A web application written using ASP.NET Blazor web-assembly.

Acknowledgements

Thank you to the following people and organizations for helping make this project possible:

And special thanks to the C# and Web Dev Buddies Discord servers for answering all my questions and providing motivation to continue working on this project.