@@ -73,6 +73,14 @@ type AppKeyResponse struct {
7373 Apps []App `json:"apps"`
7474}
7575
76+ // UpdateSecretOptions holds all the options for updating a secret.
77+ type UpdateSecretOptions struct {
78+ EnvName string
79+ AppName string
80+ Key string
81+ Value string
82+ Path string
83+ }
7684
7785func (p * Phase ) PhaseGet (envName , appName , keyToFind , tag , path string ) (* map [string ]interface {}, error ) {
7886 // Fetch user data
@@ -322,7 +330,7 @@ func (p *Phase) CreateSecrets(keyValuePairs []map[string]string, envName, appNam
322330 return api .CreatePhaseSecrets (p .AppToken , envID , secrets , p .Host )
323331}
324332
325- func (p * Phase ) UpdateSecret (envName , appName , key , value , path string ) error {
333+ func (p * Phase ) UpdateSecret (opts UpdateSecretOptions ) error {
326334 // Fetch user data
327335 resp , err := api .FetchPhaseUser (p .AppToken , p .Host )
328336 if err != nil {
@@ -337,7 +345,7 @@ func (p *Phase) UpdateSecret(envName, appName, key, value, path string) error {
337345 return err
338346 }
339347
340- envKey , err := findEnvironmentKey (& userData , envName , appName )
348+ envKey , err := findEnvironmentKey (& userData , opts . EnvName , opts . AppName )
341349 if err != nil {
342350 log .Fatalf ("Failed to find environment key: %v" , err )
343351 return err
@@ -350,14 +358,14 @@ func (p *Phase) UpdateSecret(envName, appName, key, value, path string) error {
350358 }
351359
352360 // Generate key digest
353- keyDigest , err := crypto .Blake2bDigest (key , decryptedSalt )
361+ keyDigest , err := crypto .Blake2bDigest (opts . Key , decryptedSalt )
354362 if err != nil {
355363 log .Fatalf ("Failed to generate key digest: %v" , err )
356364 return err
357365 }
358366
359367 // Fetch a single secret based on keyDigest
360- secret , err := api .FetchPhaseSecret (p .AppToken , envKey .Environment .ID , p .Host , keyDigest , path )
368+ secret , err := api .FetchPhaseSecret (p .AppToken , envKey .Environment .ID , p .Host , keyDigest , opts . Path )
361369 if err != nil {
362370 log .Printf ("Failed to fetch secret: %v" , err )
363371 return err
@@ -366,13 +374,13 @@ func (p *Phase) UpdateSecret(envName, appName, key, value, path string) error {
366374 publicKeyHex := envKey .IdentityKey
367375
368376 // Encrypt the key and value with the environment's public key
369- encryptedKey , err := crypto .EncryptAsymmetric (key , publicKeyHex )
377+ encryptedKey , err := crypto .EncryptAsymmetric (opts . Key , publicKeyHex )
370378 if err != nil {
371379 log .Fatalf ("Failed to encrypt key: %v" , err )
372380 return err
373381 }
374382
375- encryptedValue , err := crypto .EncryptAsymmetric (value , publicKeyHex )
383+ encryptedValue , err := crypto .EncryptAsymmetric (opts . Value , publicKeyHex )
376384 if err != nil {
377385 log .Fatalf ("Failed to encrypt value: %v" , err )
378386 return err
@@ -385,16 +393,16 @@ func (p *Phase) UpdateSecret(envName, appName, key, value, path string) error {
385393 }
386394
387395 // Default path to "/" if not provided
388- if path == "" {
389- path = "/"
396+ if opts . Path == "" {
397+ opts . Path = "/"
390398 }
391399
392400 secretUpdatePayload := map [string ]interface {}{
393401 "id" : secretID ,
394402 "key" : encryptedKey ,
395403 "keyDigest" : keyDigest ,
396404 "value" : encryptedValue ,
397- "path" : path ,
405+ "path" : opts . Path ,
398406 "tags" : []string {},
399407 "comment" : "" ,
400408 }
@@ -410,6 +418,7 @@ func (p *Phase) UpdateSecret(envName, appName, key, value, path string) error {
410418 return nil
411419}
412420
421+
413422// DeleteSecret deletes a secret in Phase KMS based on a key and environment.
414423func (p * Phase ) DeleteSecret (envName , appName , keyToDelete , path string ) error {
415424 // Fetch user data
0 commit comments