mirror of
https://github.com/rwinkhart/rcw.git
synced 2026-08-28 04:46:42 -04:00
37 lines
2.0 KiB
Markdown
37 lines
2.0 KiB
Markdown
# RCW (Randall's Cryptographic Wrappers)
|
|
RCW is a cascading symmetric cryptography agent meant to be embedded within Go programs.
|
|
|
|
It encrypts all data with both AES256-GCM and ChaCha20-Poly1305.
|
|
|
|
Passwords are securely cached for three minutes and RPC authentication is used to
|
|
ensure that only the binary+user responsible for caching the password can utilize it.
|
|
This feature is supported on Linux, FreeBSD, MacOS, and Windows. It is disabled if
|
|
built with `-tags=interactive`.
|
|
|
|
RCW also features a sanity check to ensure no data loss occurs due to a user entering the
|
|
incorrect password during encryption.
|
|
|
|
Please note that RCW is a work-in-progress and breaking changes should be expected.
|
|
Future versions may not be capable of decrypting the output of the current version.
|
|
|
|
> [!WARNING]
|
|
>It is your responsibility to assess the security and stability of RCW and to ensure it meets your needs before using it.
|
|
>I am not responsible for any data loss or breaches of your information resulting from the use of RCW.
|
|
>RCW is a new project that is constantly being updated, and though safety and security are priorities, they cannot be guaranteed.
|
|
|
|
# Usage
|
|
For now, please reference [example.go](https://github.com/rwinkhart/randalls-cryptographic-wrappers/blob/main/example.go).
|
|
|
|
# IMPORTANT - READ FOR FreeBSD+Windows SUPPORT w/RCWD!
|
|
There are replacements in the `go.mod` for this module. Make sure you maintain those
|
|
same replacements in your importing module, otherwise FreeBSD and Windows support will break
|
|
(RCWD support for those operating systems requires patched modules).
|
|
|
|
# runtime/secret.Do()?
|
|
This module does not yet make use of the new `secret.Do()` function in Go 1.26.
|
|
The new function is currently in an experimental state and does not function on
|
|
non-Linux platforms, thus the current approach to zeroizing in-memory secrets is
|
|
a manual one that will work everywhere. If `secret.Do()` becomes more complete in
|
|
a future Go version, it will likely be adopted here (on top of the current manual
|
|
approach).
|