Skip to content

Commit 9060e20

Browse files
committed
cert auth: proper cert SN interning
1 parent 3ff3432 commit 9060e20

File tree

3 files changed

+14
-10
lines changed

3 files changed

+14
-10
lines changed

auth/cert.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import (
1515
"time"
1616

1717
clog "github.com/SenseUnit/dumbproxy/log"
18+
19+
us "github.com/Snawoot/uniqueslice"
1820
)
1921

2022
type serialNumberSetFile struct {
@@ -149,22 +151,20 @@ func formatSerial(serial *big.Int) string {
149151
return string(buf[:len(buf)-1])
150152
}
151153

152-
type serialNumberKey = [20]byte
154+
type serialNumberKey = us.Handle[[]byte, byte]
153155
type serialNumberSet struct {
154156
sns map[serialNumberKey]struct{}
155157
}
156158

157-
func normalizeSNBytes(b []byte) serialNumberKey {
158-
var k serialNumberKey
159-
copy(
160-
k[max(len(k)-len(b), 0):],
161-
b[max(len(b)-len(k), 0):],
162-
)
163-
return k
159+
func cutLeadingZeroes(b []byte) []byte {
160+
for len(b) > 1 && b[0] == 0 {
161+
b = b[1:]
162+
}
163+
return b
164164
}
165165

166166
func (s *serialNumberSet) Has(serial *big.Int) bool {
167-
key := normalizeSNBytes(serial.Bytes())
167+
key := us.Make(cutLeadingZeroes(serial.Bytes()))
168168
if s == nil || s.sns == nil {
169169
return false
170170
}
@@ -188,7 +188,7 @@ func newSerialNumberSetFromReader(r io.Reader, bad func(error)) (*serialNumberSe
188188
}
189189
continue
190190
}
191-
set[normalizeSNBytes(serial)] = struct{}{}
191+
set[us.Make(cutLeadingZeroes(serial))] = struct{}{}
192192
}
193193

194194
if err := scanner.Err(); err != nil {

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ require (
2020

2121
require golang.org/x/crypto/x509roots/fallback v0.0.0-20250406160420-959f8f3db0fb
2222

23+
require github.com/Snawoot/uniqueslice v0.1.1
24+
2325
require (
2426
github.com/GehirnInc/crypt v0.0.0-20230320061759-8cc1b52080c5 // indirect
2527
github.com/cespare/xxhash/v2 v2.3.0 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ github.com/GehirnInc/crypt v0.0.0-20230320061759-8cc1b52080c5 h1:IEjq88XO4PuBDcv
22
github.com/GehirnInc/crypt v0.0.0-20230320061759-8cc1b52080c5/go.mod h1:exZ0C/1emQJAw5tHOaUDyY1ycttqBAPcxuzf7QbY6ec=
33
github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0=
44
github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
5+
github.com/Snawoot/uniqueslice v0.1.1 h1:KEfv3FtAXiNEoxvcc79pFQDhnqwYXQyZIkxOM4e/qpw=
6+
github.com/Snawoot/uniqueslice v0.1.1/go.mod h1:K9zIaHO43FGLHbqm6WCDFeY6+CN/du5eiio/vxvDVC8=
57
github.com/Snawoot/xtime v0.0.0-20250501122004-d1ce456948bb h1:PleTDwc/EQenzLsvIal2BgvIXr2D214M88RFac3WkeI=
68
github.com/Snawoot/xtime v0.0.0-20250501122004-d1ce456948bb/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
79
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=

0 commit comments

Comments
 (0)