github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/certloader/cache.go (about) 1 package certloader 2 3 import ( 4 "crypto/tls" 5 "sync" 6 ) 7 8 // Cache returns a client certificate stored in-memory 9 type Cache interface { 10 Get() map[string]*tls.Certificate 11 } 12 13 type certificateCache struct { 14 tlsCerts map[string]*tls.Certificate 15 mutex sync.RWMutex 16 } 17 18 // NewCertificateCache is responsible for in-memory managing of a TLS certificate 19 func NewCertificateCache() *certificateCache { 20 return &certificateCache{ 21 tlsCerts: make(map[string]*tls.Certificate, 2), 22 } 23 } 24 25 // Get returns a map of parsed TLS certificates 26 func (cc *certificateCache) Get() map[string]*tls.Certificate { 27 cc.mutex.RLock() 28 defer cc.mutex.RUnlock() 29 30 return cc.tlsCerts 31 } 32 33 func (cc *certificateCache) put(secretName string, tlsCert *tls.Certificate) { 34 cc.mutex.Lock() 35 defer cc.mutex.Unlock() 36 37 cc.tlsCerts[secretName] = tlsCert 38 }