diff options
| author | Levi Durfee <levi.durfee@gmail.com> | 2026-01-06 19:08:34 -0500 |
|---|---|---|
| committer | Levi Durfee <levi.durfee@gmail.com> | 2026-01-06 19:08:44 -0500 |
| commit | 35a6325ba12d0462bf01eb740fb6abde2d43c17a (patch) | |
| tree | e102dac429a78557ab4078d66bbd175d88b2d277 /internal/encrypt.go | |
| parent | 452911586df6115a7c8deadee87fe5d97a7fe36f (diff) | |
Add ability to encrypt files
Diffstat (limited to 'internal/encrypt.go')
| -rw-r--r-- | internal/encrypt.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/internal/encrypt.go b/internal/encrypt.go new file mode 100644 index 0000000..a404de7 --- /dev/null +++ b/internal/encrypt.go @@ -0,0 +1,38 @@ +package internal + +import ( + "log" + + "github.com/joho/godotenv" +) + +func Encrypt(data []byte) (EncryptedDataPayload, error) { + if err := godotenv.Load(); err != nil { + log.Fatal("Error loading .env file") + } + + kek, err := NewKEKFromEnvB64("SECRET_KEY") + if err != nil { + return EncryptedDataPayload{}, err + } + + dek, err := NewDEK() + if err != nil { + return EncryptedDataPayload{}, err + } + + edek, err := WrapDEK(dek, kek) + if err != nil { + return EncryptedDataPayload{}, err + } + + ct, err := EncryptData(data, dek) + if err != nil { + return EncryptedDataPayload{}, err + } + + return EncryptedDataPayload{ + DEK: edek, + Payload: ct, + }, nil +} |
