package cert import ( "crypto/tls" "github.com/Dreamacro/clash/component/trie" ) // DomainTrieCertsStorage cache wildcard certificates type DomainTrieCertsStorage struct { certsCache *trie.DomainTrie[*tls.Certificate] } // Get gets the certificate from the storage func (c *DomainTrieCertsStorage) Get(key string) (*tls.Certificate, bool) { ca := c.certsCache.Search(key) if ca == nil { return nil, false } return ca.Data(), true } // Set saves the certificate to the storage func (c *DomainTrieCertsStorage) Set(key string, cert *tls.Certificate) { _ = c.certsCache.Insert(key, cert) } func NewDomainTrieCertsStorage() *DomainTrieCertsStorage { return &DomainTrieCertsStorage{ certsCache: trie.New[*tls.Certificate](), } }