MCPcopy Create free account
hub / github.com/TheThingsNetwork/lorawan-stack / fetchSenderClientCAs

Function fetchSenderClientCAs

pkg/interop/config.go:86–169  ·  view source on GitHub ↗

TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/6026)

( //nolint:gocyclo
	ctx context.Context, conf config.InteropServer, httpClientProvider httpclient.Provider,
)

Source from the content-addressed store, hash-verified

84
85// TODO: Remove (https://github.com/TheThingsNetwork/lorawan-stack/issues/6026)
86func fetchSenderClientCAs( //nolint:gocyclo
87 ctx context.Context, conf config.InteropServer, httpClientProvider httpclient.Provider,
88) (map[string][]*x509.Certificate, error) {
89 decodeCerts := func(b []byte) (res []*x509.Certificate, err error) {
90 for len(b) > 0 {
91 var block *pem.Block
92 block, b = pem.Decode(b)
93 if block == nil {
94 break
95 }
96 if block.Type != "CERTIFICATE" || len(block.Headers) != 0 {
97 continue
98 }
99 cert, err := x509.ParseCertificate(block.Bytes)
100 if err != nil {
101 return nil, err
102 }
103 res = append(res, cert)
104 }
105 return res, nil
106 }
107
108 var senderClientCAs map[string][]*x509.Certificate
109 if len(conf.SenderClientCADeprecated) > 0 {
110 senderClientCAs = make(map[string][]*x509.Certificate, len(conf.SenderClientCA.Static))
111 for id, filename := range conf.SenderClientCADeprecated {
112 b, err := os.ReadFile(filename)
113 if err != nil {
114 return nil, err
115 }
116 certs, err := decodeCerts(b)
117 if err != nil {
118 return nil, err
119 }
120 if len(certs) > 0 {
121 senderClientCAs[id] = certs
122 }
123 }
124 } else if len(conf.SenderClientCA.Static) > 0 {
125 senderClientCAs = make(map[string][]*x509.Certificate, len(conf.SenderClientCA.Static))
126 for id, b := range conf.SenderClientCA.Static {
127 certs, err := decodeCerts(b)
128 if err != nil {
129 return nil, err
130 }
131 if len(certs) > 0 {
132 senderClientCAs[id] = certs
133 }
134 }
135 } else {
136 fetcher, err := conf.SenderClientCA.Fetcher(ctx, httpClientProvider)
137 if err != nil {
138 return nil, err
139 }
140 if fetcher != nil {
141 confFileBytes, err := fetcher.File(SenderClientCAsConfigurationName)
142 if err != nil {
143 return nil, err

Callers 1

NewServerFunction · 0.85

Calls 4

DecodeMethod · 0.65
ReadFileMethod · 0.65
FileMethod · 0.65
FetcherMethod · 0.45

Tested by

no test coverage detected