MCPcopy Create free account
hub / github.com/cli/cli / setSecret

Function setSecret

pkg/cmd/secret/set/set.go:330–374  ·  view source on GitHub ↗
(opts *SetOptions, pk *PubKey, host string, client *api.Client, baseRepo ghrepo.Interface, secretKey string, secret []byte, repositoryIDs []int64, app shared.App, entity shared.SecretEntity)

Source from the content-addressed store, hash-verified

328}
329
330func setSecret(opts *SetOptions, pk *PubKey, host string, client *api.Client, baseRepo ghrepo.Interface, secretKey string, secret []byte, repositoryIDs []int64, app shared.App, entity shared.SecretEntity) (res setResult) {
331 orgName := opts.OrgName
332 envName := opts.EnvName
333 res.key = secretKey
334
335 decodedPubKey, err := base64.StdEncoding.DecodeString(pk.Key)
336 if err != nil {
337 res.err = fmt.Errorf("failed to decode public key: %w", err)
338 return
339 }
340 var peersPubKey [32]byte
341 copy(peersPubKey[:], decodedPubKey[0:32])
342
343 var rand io.Reader
344 if opts.RandomOverride != nil {
345 rand = opts.RandomOverride()
346 }
347 eBody, err := box.SealAnonymous(nil, secret[:], &peersPubKey, rand)
348 if err != nil {
349 res.err = fmt.Errorf("failed to encrypt body: %w", err)
350 return
351 }
352
353 encoded := base64.StdEncoding.EncodeToString(eBody)
354 if opts.DoNotStore {
355 res.encrypted = encoded
356 return
357 }
358
359 switch entity {
360 case shared.Organization:
361 err = putOrgSecret(client, host, pk, orgName, opts.Visibility, secretKey, encoded, repositoryIDs, app)
362 case shared.Environment:
363 err = putEnvSecret(client, pk, baseRepo, envName, secretKey, encoded)
364 case shared.User:
365 err = putUserSecret(client, host, pk, secretKey, encoded, repositoryIDs)
366 default:
367 err = putRepoSecret(client, pk, baseRepo, secretKey, encoded, app)
368 }
369 if err != nil {
370 res.err = fmt.Errorf("failed to set secret %q: %w", secretKey, err)
371 return
372 }
373 return
374}
375
376func getSecretsFromOptions(opts *SetOptions) (map[string][]byte, error) {
377 secrets := make(map[string][]byte)

Callers 1

setRunFunction · 0.85

Calls 5

putOrgSecretFunction · 0.85
putEnvSecretFunction · 0.85
putUserSecretFunction · 0.85
putRepoSecretFunction · 0.85
ErrorfMethod · 0.65

Tested by

no test coverage detected