ente/pkg/model/enc_string.go

32 lines
736 B
Go
Raw Normal View History

2023-09-21 12:07:18 +00:00
package model
import (
"cli-go/internal/crypto"
2023-09-23 04:05:37 +00:00
"cli-go/utils/encoding"
2023-09-21 12:07:18 +00:00
"log"
)
type EncString struct {
CipherText string `json:"cipherText"`
Nonce string `json:"nonce"`
}
2023-09-22 16:15:01 +00:00
func MakeEncString(plainTextBytes []byte, key []byte) *EncString {
cipher, nonce, err := crypto.EncryptChaCha20poly1305(plainTextBytes, key)
2023-09-21 12:07:18 +00:00
if err != nil {
log.Fatalf("failed to encrypt %s", err)
}
return &EncString{
2023-09-23 04:05:37 +00:00
CipherText: encoding.EncodeBase64(cipher),
Nonce: encoding.EncodeBase64(nonce),
2023-09-21 12:07:18 +00:00
}
}
2023-09-22 16:15:01 +00:00
func (e *EncString) MustDecrypt(key []byte) []byte {
2023-09-23 04:05:37 +00:00
plainBytes, err := crypto.DecryptChaCha20poly1305(encoding.DecodeBase64(e.CipherText), key, encoding.DecodeBase64(e.Nonce))
2023-09-21 12:07:18 +00:00
if err != nil {
panic(err)
}
2023-09-22 16:15:01 +00:00
return plainBytes
2023-09-21 12:07:18 +00:00
}