func (f *localStorePerHostCertProviderMap) GetCertProvider(hostName string) (CertProvider, bool, error) {
	lcHostName := strings.ToLower(hostName)
	if f.certProviderCache == nil {
		return nil, true, nil
	}
	cachedCertProvider, ok := f.certProviderCache[lcHostName]
	if !ok {
		return nil, true, nil
	}
	clientAuthRequired := f.clientAuthCache[lcHostName]
	return cachedCertProvider, clientAuthRequired, nil
}
GetCertProvider for a given host name returns a cert provider (nil if not found) and if client authentication is required
package encryption
import (
	"strings"
	"time"
	"go.temporal.io/server/common/config"
	"go.temporal.io/server/common/log"
)
var _ PerHostCertProviderMap = (*localStorePerHostCertProviderMap)(nil)
var _ CertExpirationChecker = (*localStorePerHostCertProviderMap)(nil)
type localStorePerHostCertProviderMap struct {
	certProviderCache map[string]CertProvider
	clientAuthCache   map[string]bool
}
func newLocalStorePerHostCertProviderMap(
	overrides map[string]config.ServerTLS,
	certProviderFactory CertProviderFactory,
	refreshInterval time.Duration,
	logger log.Logger,
) *localStorePerHostCertProviderMap {
	providerMap := &localStorePerHostCertProviderMap{}
	if overrides == nil {
		return providerMap
	}
	providerMap.certProviderCache = make(map[string]CertProvider, len(overrides))
	providerMap.clientAuthCache = make(map[string]bool, len(overrides))
	for host, settings := range overrides {
		lcHost := strings.ToLower(host)
		provider := certProviderFactory(&config.GroupTLS{Server: settings}, nil, nil, refreshInterval, logger)
		providerMap.certProviderCache[lcHost] = provider
		providerMap.clientAuthCache[lcHost] = settings.RequireClientAuth
	}
	return providerMap
}