Files
pastepass/db/models.go
Vikas eec79dc9d9 Improve encryption/decryption
- Use crypto.rand. Relying on math.rand does not ensure true randomness.
- Bas64 encode random bytes instead of generating keys using a fixed set of letters.
- Based on reddit feedback: https://www.reddit.com/r/golang/comments/1d73vsl/comment/l6xmtja/
2024-06-23 12:18:37 +05:30

32 lines
684 B
Go

package db
import (
"time"
)
type Paste struct {
ID string `json:"id"`
Text string `json:"-"`
EncryptedBytes []byte `json:"-"`
Key string `json:"-"`
CreatedAt time.Time `json:"createdAt"`
ExpiresAt time.Time `json:"expiresAt"`
}
func NewEncryptedPaste(text string, expiresAt time.Time) (*Paste, error) {
key := NewEncryptionKey()
encryptedText, err := key.Encrypt(text)
if err != nil {
return nil, err
}
return &Paste{
ID: randomKey(),
Text: text,
EncryptedBytes: encryptedText,
Key: key.Base64Key(),
CreatedAt: time.Now(),
ExpiresAt: expiresAt,
}, nil
}