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  }