MCPcopy Index your code
hub / github.com/coder/coder / cryptoKey

Method cryptoKey

coderd/cryptokeys/cache.go:232–276  ·  view source on GitHub ↗
(ctx context.Context, sequence int32)

Source from the content-addressed store, hash-verified

230}
231
232func (c *cache) cryptoKey(ctx context.Context, sequence int32) (string, []byte, error) {
233 c.logger.Debug(ctx, "request for key", slog.F("sequence", sequence))
234 c.mu.Lock()
235 defer c.mu.Unlock()
236
237 if c.closed {
238 return "", nil, ErrClosed
239 }
240
241 var key codersdk.CryptoKey
242 var ok bool
243 for key, ok = c.key(sequence); !ok && c.fetching && !c.closed; {
244 c.cond.Wait()
245 }
246
247 if c.closed {
248 return "", nil, ErrClosed
249 }
250
251 if ok {
252 return checkKey(key, sequence, c.clock.Now())
253 }
254
255 c.fetching = true
256
257 c.mu.Unlock()
258 keys, err := c.cryptoKeys(ctx)
259 c.mu.Lock()
260 if err != nil {
261 return "", nil, xerrors.Errorf("get keys: %w", err)
262 }
263
264 c.lastFetch = c.clock.Now()
265 c.refresher.Reset(refreshInterval)
266 c.keys = keys
267 c.fetching = false
268 c.cond.Broadcast()
269
270 key, ok = c.key(sequence)
271 if !ok {
272 return "", nil, ErrKeyNotFound
273 }
274
275 return checkKey(key, sequence, c.clock.Now())
276}
277
278func (c *cache) key(sequence int32) (codersdk.CryptoKey, bool) {
279 if sequence == latestSequence {

Callers 4

EncryptingKeyMethod · 0.95
DecryptingKeyMethod · 0.95
SigningKeyMethod · 0.95
VerifyingKeyMethod · 0.95

Calls 8

keyMethod · 0.95
cryptoKeysMethod · 0.95
checkKeyFunction · 0.85
WaitMethod · 0.65
ResetMethod · 0.65
LockMethod · 0.45
UnlockMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected