Merge pull request #129 from 9seconds/disable-antireplay

Possibility to disable antireplay cache
This commit is contained in:
Sergey Arkhipov
2020-02-03 11:32:30 +03:00
committed by GitHub
4 changed files with 28 additions and 6 deletions
+3
View File
@@ -159,6 +159,9 @@ by design and we have the negligible possibility of duplication
(probability is 1/(2^64)) but it could be quite effective to prevent
replays.
It is possible to disable this cache. To do that, please explicitly set
its size to 0.
## FakeTLS
+4 -4
View File
@@ -11,19 +11,19 @@ type cache struct {
data *fastcache.Cache
}
func (c *cache) AddObfuscated2(data []byte) {
func (c cache) AddObfuscated2(data []byte) {
c.data.Set(keyObfuscated2(data), nil)
}
func (c *cache) AddTLS(data []byte) {
func (c cache) AddTLS(data []byte) {
c.data.Set(keyTLS(data), nil)
}
func (c *cache) HasObfuscated2(data []byte) bool {
func (c cache) HasObfuscated2(data []byte) bool {
return c.data.Has(keyObfuscated2(data))
}
func (c *cache) HasTLS(data []byte) bool {
func (c cache) HasTLS(data []byte) bool {
return c.data.Has(keyTLS(data))
}
+13 -2
View File
@@ -8,13 +8,24 @@ import (
"github.com/9seconds/mtg/config"
)
type CacheInterface interface {
AddObfuscated2([]byte)
AddTLS([]byte)
HasObfuscated2([]byte) bool
HasTLS([]byte) bool
}
var (
Cache cache
Cache CacheInterface
initOnce sync.Once
)
func Init() {
initOnce.Do(func() {
Cache.data = fastcache.New(config.C.AntiReplayMaxSize)
if config.C.AntiReplayMaxSize == 0 {
Cache = nilCache{}
} else {
Cache = cache{fastcache.New(config.C.AntiReplayMaxSize)}
}
})
}
+8
View File
@@ -0,0 +1,8 @@
package antireplay
type nilCache struct{}
func (n nilCache) AddObfuscated2(_ []byte) {}
func (n nilCache) AddTLS(_ []byte) {}
func (n nilCache) HasObfuscated2(_ []byte) bool { return false }
func (n nilCache) HasTLS(_ []byte) bool { return false }