From f16f1319ec479f09566db3fda4005513d088d97d Mon Sep 17 00:00:00 2001 From: rkonfj Date: Fri, 27 Sep 2024 11:01:47 +0800 Subject: [PATCH] secure/chacha20poly1305: add func SetDefaultTimeWindow --- secure/chacha20poly1305/chacha20poly1305.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/secure/chacha20poly1305/chacha20poly1305.go b/secure/chacha20poly1305/chacha20poly1305.go index da1a28a..9063aeb 100644 --- a/secure/chacha20poly1305/chacha20poly1305.go +++ b/secure/chacha20poly1305/chacha20poly1305.go @@ -15,6 +15,12 @@ import ( var _ secure.SymmAlgo = (*Chacha20Poly1305)(nil) +var timeWindow int64 = 10 + +func SetDefaultTimeWindow(seconds int64) { + timeWindow = seconds +} + type Chacha20Poly1305 struct { mut sync.RWMutex cipher *lru.Cache[string, cipher.AEAD] @@ -30,7 +36,7 @@ func (s *Chacha20Poly1305) Encrypt(data []byte, pubKey string) ([]byte, error) { return nil, err } nonce := make([]byte, aead.NonceSize()) - binary.LittleEndian.PutUint64(nonce[aead.NonceSize()-8:], uint64(time.Now().Unix()/5)) + binary.LittleEndian.PutUint64(nonce[aead.NonceSize()-8:], uint64(time.Now().Unix()/timeWindow)) return aead.Seal(nil, nonce, data, nil), nil } @@ -46,13 +52,13 @@ func (s *Chacha20Poly1305) Decrypt(data []byte, pubKey string) ([]byte, error) { startIndex := aead.NonceSize() - 8 nowUnix := time.Now().Unix() - binary.LittleEndian.PutUint64(nonce[startIndex:], uint64(nowUnix/5)) + binary.LittleEndian.PutUint64(nonce[startIndex:], uint64(nowUnix/timeWindow)) plain, err := aead.Open(nil, nonce, data, nil) if err != nil { - binary.LittleEndian.PutUint64(nonce[startIndex:], uint64(nowUnix/5+1)) + binary.LittleEndian.PutUint64(nonce[startIndex:], uint64(nowUnix/timeWindow+1)) plain, err = aead.Open(nil, nonce, data, nil) if err != nil { - binary.LittleEndian.PutUint64(nonce[startIndex:], uint64(nowUnix/5-1)) + binary.LittleEndian.PutUint64(nonce[startIndex:], uint64(nowUnix/timeWindow-1)) plain, err = aead.Open(nil, nonce, data, nil) if err != nil { return nil, errors.New("invalid data")