mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 22:27:48 +00:00
Switch to v2/secrets CURD api for cli
This commit is contained in:
+22
-12
@@ -7,18 +7,21 @@ import (
|
|||||||
"github.com/go-resty/resty/v2"
|
"github.com/go-resty/resty/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const USER_AGENT = "cli"
|
||||||
|
|
||||||
func CallBatchModifySecretsByWorkspaceAndEnv(httpClient *resty.Client, request BatchModifySecretsByWorkspaceAndEnvRequest) error {
|
func CallBatchModifySecretsByWorkspaceAndEnv(httpClient *resty.Client, request BatchModifySecretsByWorkspaceAndEnvRequest) error {
|
||||||
endpoint := fmt.Sprintf("%v/v2/secret/batch-modify/workspace/%v/environment/%v", config.INFISICAL_URL, request.WorkspaceId, request.EnvironmentName)
|
endpoint := fmt.Sprintf("%v/v2/secrets", config.INFISICAL_URL)
|
||||||
response, err := httpClient.
|
response, err := httpClient.
|
||||||
R().
|
R().
|
||||||
SetBody(request).
|
SetBody(request).
|
||||||
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
Patch(endpoint)
|
Patch(endpoint)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("CallBatchModifySecretsByWorkspaceAndEnv: Unable to complete api request [err=%s]", err)
|
return fmt.Errorf("CallBatchModifySecretsByWorkspaceAndEnv: Unable to complete api request [err=%s]", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.StatusCode() > 299 {
|
if response.IsError() {
|
||||||
return fmt.Errorf("CallBatchModifySecretsByWorkspaceAndEnv: Unsuccessful response: [response=%s]", response)
|
return fmt.Errorf("CallBatchModifySecretsByWorkspaceAndEnv: Unsuccessful response: [response=%s]", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,17 +29,18 @@ func CallBatchModifySecretsByWorkspaceAndEnv(httpClient *resty.Client, request B
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CallBatchCreateSecretsByWorkspaceAndEnv(httpClient *resty.Client, request BatchCreateSecretsByWorkspaceAndEnvRequest) error {
|
func CallBatchCreateSecretsByWorkspaceAndEnv(httpClient *resty.Client, request BatchCreateSecretsByWorkspaceAndEnvRequest) error {
|
||||||
endpoint := fmt.Sprintf("%v/v2/secret/batch-create/workspace/%v/environment/%v", config.INFISICAL_URL, request.WorkspaceId, request.EnvironmentName)
|
endpoint := fmt.Sprintf("%v/v2/secrets/", config.INFISICAL_URL)
|
||||||
response, err := httpClient.
|
response, err := httpClient.
|
||||||
R().
|
R().
|
||||||
SetBody(request).
|
SetBody(request).
|
||||||
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
Post(endpoint)
|
Post(endpoint)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("CallBatchCreateSecretsByWorkspaceAndEnv: Unable to complete api request [err=%s]", err)
|
return fmt.Errorf("CallBatchCreateSecretsByWorkspaceAndEnv: Unable to complete api request [err=%s]", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.StatusCode() > 299 {
|
if response.IsError() {
|
||||||
return fmt.Errorf("CallBatchCreateSecretsByWorkspaceAndEnv: Unsuccessful response: [response=%s]", response)
|
return fmt.Errorf("CallBatchCreateSecretsByWorkspaceAndEnv: Unsuccessful response: [response=%s]", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -44,17 +48,18 @@ func CallBatchCreateSecretsByWorkspaceAndEnv(httpClient *resty.Client, request B
|
|||||||
}
|
}
|
||||||
|
|
||||||
func CallBatchDeleteSecretsByWorkspaceAndEnv(httpClient *resty.Client, request BatchDeleteSecretsBySecretIdsRequest) error {
|
func CallBatchDeleteSecretsByWorkspaceAndEnv(httpClient *resty.Client, request BatchDeleteSecretsBySecretIdsRequest) error {
|
||||||
endpoint := fmt.Sprintf("%v/v2/secret/batch/workspace/%v/environment/%v", config.INFISICAL_URL, request.WorkspaceId, request.EnvironmentName)
|
endpoint := fmt.Sprintf("%v/v2/secrets", config.INFISICAL_URL)
|
||||||
response, err := httpClient.
|
response, err := httpClient.
|
||||||
R().
|
R().
|
||||||
SetBody(request).
|
SetBody(request).
|
||||||
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
Delete(endpoint)
|
Delete(endpoint)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("CallBatchDeleteSecretsByWorkspaceAndEnv: Unable to complete api request [err=%s]", err)
|
return fmt.Errorf("CallBatchDeleteSecretsByWorkspaceAndEnv: Unable to complete api request [err=%s]", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.StatusCode() > 299 {
|
if response.IsError() {
|
||||||
return fmt.Errorf("CallBatchDeleteSecretsByWorkspaceAndEnv: Unsuccessful response: [response=%s]", response)
|
return fmt.Errorf("CallBatchDeleteSecretsByWorkspaceAndEnv: Unsuccessful response: [response=%s]", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,13 +72,14 @@ func CallGetEncryptedWorkspaceKey(httpClient *resty.Client, request GetEncrypted
|
|||||||
response, err := httpClient.
|
response, err := httpClient.
|
||||||
R().
|
R().
|
||||||
SetResult(&result).
|
SetResult(&result).
|
||||||
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
Get(endpoint)
|
Get(endpoint)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GetEncryptedWorkspaceKeyResponse{}, fmt.Errorf("CallGetEncryptedWorkspaceKey: Unable to complete api request [err=%s]", err)
|
return GetEncryptedWorkspaceKeyResponse{}, fmt.Errorf("CallGetEncryptedWorkspaceKey: Unable to complete api request [err=%s]", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.StatusCode() > 299 {
|
if response.IsError() {
|
||||||
return GetEncryptedWorkspaceKeyResponse{}, fmt.Errorf("CallGetEncryptedWorkspaceKey: Unsuccessful response: [response=%s]", response)
|
return GetEncryptedWorkspaceKeyResponse{}, fmt.Errorf("CallGetEncryptedWorkspaceKey: Unsuccessful response: [response=%s]", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,13 +91,14 @@ func CallGetServiceTokenDetailsV2(httpClient *resty.Client) (GetServiceTokenDeta
|
|||||||
response, err := httpClient.
|
response, err := httpClient.
|
||||||
R().
|
R().
|
||||||
SetResult(&tokenDetailsResponse).
|
SetResult(&tokenDetailsResponse).
|
||||||
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
Get(fmt.Sprintf("%v/v2/service-token", config.INFISICAL_URL))
|
Get(fmt.Sprintf("%v/v2/service-token", config.INFISICAL_URL))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GetServiceTokenDetailsResponse{}, fmt.Errorf("CallGetServiceTokenDetails: Unable to complete api request [err=%s]", err)
|
return GetServiceTokenDetailsResponse{}, fmt.Errorf("CallGetServiceTokenDetails: Unable to complete api request [err=%s]", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.StatusCode() > 299 {
|
if response.IsError() {
|
||||||
return GetServiceTokenDetailsResponse{}, fmt.Errorf("CallGetServiceTokenDetails: Unsuccessful response: [response=%s]", response)
|
return GetServiceTokenDetailsResponse{}, fmt.Errorf("CallGetServiceTokenDetails: Unsuccessful response: [response=%s]", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -103,14 +110,16 @@ func CallGetSecretsV2(httpClient *resty.Client, request GetEncryptedSecretsV2Req
|
|||||||
response, err := httpClient.
|
response, err := httpClient.
|
||||||
R().
|
R().
|
||||||
SetResult(&secretsResponse).
|
SetResult(&secretsResponse).
|
||||||
SetQueryParam("environment", request.EnvironmentName).
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
Get(fmt.Sprintf("%v/v2/secret/workspace/%v", config.INFISICAL_URL, request.WorkspaceId))
|
SetQueryParam("environment", request.Environment).
|
||||||
|
SetQueryParam("workspaceId", request.WorkspaceId).
|
||||||
|
Get(fmt.Sprintf("%v/v2/secrets", config.INFISICAL_URL))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GetEncryptedSecretsV2Response{}, fmt.Errorf("CallGetSecretsV2: Unable to complete api request [err=%s]", err)
|
return GetEncryptedSecretsV2Response{}, fmt.Errorf("CallGetSecretsV2: Unable to complete api request [err=%s]", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.StatusCode() > 299 {
|
if response.IsError() {
|
||||||
return GetEncryptedSecretsV2Response{}, fmt.Errorf("CallGetSecretsV2: Unsuccessful response: [response=%s]", response)
|
return GetEncryptedSecretsV2Response{}, fmt.Errorf("CallGetSecretsV2: Unsuccessful response: [response=%s]", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -122,13 +131,14 @@ func CallGetAllWorkSpacesUserBelongsTo(httpClient *resty.Client) (GetWorkSpacesR
|
|||||||
response, err := httpClient.
|
response, err := httpClient.
|
||||||
R().
|
R().
|
||||||
SetResult(&workSpacesResponse).
|
SetResult(&workSpacesResponse).
|
||||||
|
SetHeader("User-Agent", USER_AGENT).
|
||||||
Get(fmt.Sprintf("%v/v1/workspace", config.INFISICAL_URL))
|
Get(fmt.Sprintf("%v/v1/workspace", config.INFISICAL_URL))
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return GetWorkSpacesResponse{}, err
|
return GetWorkSpacesResponse{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if response.StatusCode() > 299 {
|
if response.IsError() {
|
||||||
return GetWorkSpacesResponse{}, fmt.Errorf("CallGetAllWorkSpacesUserBelongsTo: Unsuccessful response: [response=%v]", response)
|
return GetWorkSpacesResponse{}, fmt.Errorf("CallGetAllWorkSpacesUserBelongsTo: Unsuccessful response: [response=%v]", response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+47
-39
@@ -142,19 +142,19 @@ type Secret struct {
|
|||||||
SecretCommentTag string `json:"secretCommentTag,omitempty"`
|
SecretCommentTag string `json:"secretCommentTag,omitempty"`
|
||||||
SecretCommentHash string `json:"secretCommentHash,omitempty"`
|
SecretCommentHash string `json:"secretCommentHash,omitempty"`
|
||||||
Type string `json:"type,omitempty"`
|
Type string `json:"type,omitempty"`
|
||||||
ID string `json:"_id,omitempty"`
|
ID string `json:"id,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type BatchCreateSecretsByWorkspaceAndEnvRequest struct {
|
type BatchCreateSecretsByWorkspaceAndEnvRequest struct {
|
||||||
EnvironmentName string `json:"environmentName"`
|
Environment string `json:"environment"`
|
||||||
WorkspaceId string `json:"workspaceId"`
|
WorkspaceId string `json:"workspaceId"`
|
||||||
Secrets []Secret `json:"secrets"`
|
Secrets []Secret `json:"secrets"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type BatchModifySecretsByWorkspaceAndEnvRequest struct {
|
type BatchModifySecretsByWorkspaceAndEnvRequest struct {
|
||||||
EnvironmentName string `json:"environmentName"`
|
Environment string `json:"environment"`
|
||||||
WorkspaceId string `json:"workspaceId"`
|
WorkspaceId string `json:"workspaceId"`
|
||||||
Secrets []Secret `json:"secrets"`
|
Secrets []Secret `json:"secrets"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type BatchDeleteSecretsBySecretIdsRequest struct {
|
type BatchDeleteSecretsBySecretIdsRequest struct {
|
||||||
@@ -195,41 +195,49 @@ type GetSecretsByWorkspaceIdAndEnvironmentRequest struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type GetEncryptedSecretsV2Request struct {
|
type GetEncryptedSecretsV2Request struct {
|
||||||
EnvironmentName string `json:"environmentName"`
|
Environment string `json:"environment"`
|
||||||
WorkspaceId string `json:"workspaceId"`
|
WorkspaceId string `json:"workspaceId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetEncryptedSecretsV2Response []struct {
|
type GetEncryptedSecretsV2Response struct {
|
||||||
ID string `json:"_id"`
|
Secrets []struct {
|
||||||
Version int `json:"version"`
|
ID string `json:"_id"`
|
||||||
Workspace string `json:"workspace"`
|
Version int `json:"version"`
|
||||||
Type string `json:"type"`
|
Workspace string `json:"workspace"`
|
||||||
Environment string `json:"environment"`
|
Type string `json:"type"`
|
||||||
SecretKeyCiphertext string `json:"secretKeyCiphertext"`
|
Environment string `json:"environment"`
|
||||||
SecretKeyIV string `json:"secretKeyIV"`
|
SecretKeyCiphertext string `json:"secretKeyCiphertext"`
|
||||||
SecretKeyTag string `json:"secretKeyTag"`
|
SecretKeyIV string `json:"secretKeyIV"`
|
||||||
SecretKeyHash string `json:"secretKeyHash"`
|
SecretKeyTag string `json:"secretKeyTag"`
|
||||||
SecretValueCiphertext string `json:"secretValueCiphertext"`
|
SecretValueCiphertext string `json:"secretValueCiphertext"`
|
||||||
SecretValueIV string `json:"secretValueIV"`
|
SecretValueIV string `json:"secretValueIV"`
|
||||||
SecretValueTag string `json:"secretValueTag"`
|
SecretValueTag string `json:"secretValueTag"`
|
||||||
SecretValueHash string `json:"secretValueHash"`
|
V int `json:"__v"`
|
||||||
SecretCommentCiphertext string `json:"secretCommentCiphertext"`
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
SecretCommentIV string `json:"secretCommentIV"`
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
SecretCommentTag string `json:"secretCommentTag"`
|
User string `json:"user,omitempty"`
|
||||||
SecretCommentHash string `json:"secretCommentHash"`
|
} `json:"secrets"`
|
||||||
V int `json:"__v"`
|
|
||||||
CreatedAt time.Time `json:"createdAt"`
|
|
||||||
UpdatedAt time.Time `json:"updatedAt"`
|
|
||||||
User string `json:"user,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetServiceTokenDetailsResponse struct {
|
type GetServiceTokenDetailsResponse struct {
|
||||||
ID string `json:"_id"`
|
ID string `json:"_id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Workspace string `json:"workspace"`
|
Workspace string `json:"workspace"`
|
||||||
Environment string `json:"environment"`
|
Environment string `json:"environment"`
|
||||||
User string `json:"user"`
|
User struct {
|
||||||
EncryptedKey string `json:"encryptedKey"`
|
ID string `json:"_id"`
|
||||||
Iv string `json:"iv"`
|
Email string `json:"email"`
|
||||||
Tag string `json:"tag"`
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
|
V int `json:"__v"`
|
||||||
|
FirstName string `json:"firstName"`
|
||||||
|
LastName string `json:"lastName"`
|
||||||
|
} `json:"user"`
|
||||||
|
ExpiresAt time.Time `json:"expiresAt"`
|
||||||
|
EncryptedKey string `json:"encryptedKey"`
|
||||||
|
Iv string `json:"iv"`
|
||||||
|
Tag string `json:"tag"`
|
||||||
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
|
UpdatedAt time.Time `json:"updatedAt"`
|
||||||
|
V int `json:"__v"`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ func Execute() {
|
|||||||
func init() {
|
func init() {
|
||||||
rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
|
||||||
rootCmd.PersistentFlags().BoolVarP(&debugLogging, "debug", "d", false, "Enable verbose logging")
|
rootCmd.PersistentFlags().BoolVarP(&debugLogging, "debug", "d", false, "Enable verbose logging")
|
||||||
rootCmd.PersistentFlags().StringVar(&config.INFISICAL_URL, "domain", "https://app.infisical.com/api", "Point the CLI to your own backend")
|
rootCmd.PersistentFlags().StringVar(&config.INFISICAL_URL, "domain", "http://localhost:8080/api", "Point the CLI to your own backend")
|
||||||
// rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
|
// rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -205,9 +205,9 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
|
|
||||||
if len(secretsToCreate) > 0 {
|
if len(secretsToCreate) > 0 {
|
||||||
batchCreateRequest := api.BatchCreateSecretsByWorkspaceAndEnvRequest{
|
batchCreateRequest := api.BatchCreateSecretsByWorkspaceAndEnvRequest{
|
||||||
WorkspaceId: workspaceFile.WorkspaceId,
|
WorkspaceId: workspaceFile.WorkspaceId,
|
||||||
EnvironmentName: environmentName,
|
Environment: environmentName,
|
||||||
Secrets: secretsToCreate,
|
Secrets: secretsToCreate,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = api.CallBatchCreateSecretsByWorkspaceAndEnv(httpClient, batchCreateRequest)
|
err = api.CallBatchCreateSecretsByWorkspaceAndEnv(httpClient, batchCreateRequest)
|
||||||
@@ -219,9 +219,9 @@ var secretsSetCmd = &cobra.Command{
|
|||||||
|
|
||||||
if len(secretsToModify) > 0 {
|
if len(secretsToModify) > 0 {
|
||||||
batchModifyRequest := api.BatchModifySecretsByWorkspaceAndEnvRequest{
|
batchModifyRequest := api.BatchModifySecretsByWorkspaceAndEnvRequest{
|
||||||
WorkspaceId: workspaceFile.WorkspaceId,
|
WorkspaceId: workspaceFile.WorkspaceId,
|
||||||
EnvironmentName: environmentName,
|
Environment: environmentName,
|
||||||
Secrets: secretsToModify,
|
Secrets: secretsToModify,
|
||||||
}
|
}
|
||||||
|
|
||||||
err = api.CallBatchModifySecretsByWorkspaceAndEnv(httpClient, batchModifyRequest)
|
err = api.CallBatchModifySecretsByWorkspaceAndEnv(httpClient, batchModifyRequest)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ func GetPlainTextSecretsViaServiceToken(fullServiceToken string) ([]models.Singl
|
|||||||
serviceToken := fmt.Sprintf("%v.%v.%v", serviceTokenParts[0], serviceTokenParts[1], serviceTokenParts[2])
|
serviceToken := fmt.Sprintf("%v.%v.%v", serviceTokenParts[0], serviceTokenParts[1], serviceTokenParts[2])
|
||||||
|
|
||||||
httpClient := resty.New()
|
httpClient := resty.New()
|
||||||
|
|
||||||
httpClient.SetAuthToken(serviceToken).
|
httpClient.SetAuthToken(serviceToken).
|
||||||
SetHeader("Accept", "application/json")
|
SetHeader("Accept", "application/json")
|
||||||
|
|
||||||
@@ -33,8 +34,8 @@ func GetPlainTextSecretsViaServiceToken(fullServiceToken string) ([]models.Singl
|
|||||||
}
|
}
|
||||||
|
|
||||||
encryptedSecrets, err := api.CallGetSecretsV2(httpClient, api.GetEncryptedSecretsV2Request{
|
encryptedSecrets, err := api.CallGetSecretsV2(httpClient, api.GetEncryptedSecretsV2Request{
|
||||||
WorkspaceId: serviceTokenDetails.Workspace,
|
WorkspaceId: serviceTokenDetails.Workspace,
|
||||||
EnvironmentName: serviceTokenDetails.Environment,
|
Environment: serviceTokenDetails.Environment,
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -80,8 +81,8 @@ func GetPlainTextSecretsViaJTW(JTWToken string, receiversPrivateKey string, work
|
|||||||
plainTextWorkspaceKey := crypto.DecryptAsymmetric(encryptedWorkspaceKey, encryptedWorkspaceKeyNonce, encryptedWorkspaceKeySenderPublicKey, currentUsersPrivateKey)
|
plainTextWorkspaceKey := crypto.DecryptAsymmetric(encryptedWorkspaceKey, encryptedWorkspaceKeyNonce, encryptedWorkspaceKeySenderPublicKey, currentUsersPrivateKey)
|
||||||
|
|
||||||
encryptedSecrets, err := api.CallGetSecretsV2(httpClient, api.GetEncryptedSecretsV2Request{
|
encryptedSecrets, err := api.CallGetSecretsV2(httpClient, api.GetEncryptedSecretsV2Request{
|
||||||
WorkspaceId: workspaceId,
|
WorkspaceId: workspaceId,
|
||||||
EnvironmentName: environmentName,
|
Environment: environmentName,
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -226,7 +227,7 @@ func OverrideWithPersonalSecrets(secrets []models.SingleEnvironmentVariable) []m
|
|||||||
|
|
||||||
func GetPlainTextSecrets(key []byte, encryptedSecrets api.GetEncryptedSecretsV2Response) ([]models.SingleEnvironmentVariable, error) {
|
func GetPlainTextSecrets(key []byte, encryptedSecrets api.GetEncryptedSecretsV2Response) ([]models.SingleEnvironmentVariable, error) {
|
||||||
plainTextSecrets := []models.SingleEnvironmentVariable{}
|
plainTextSecrets := []models.SingleEnvironmentVariable{}
|
||||||
for _, secret := range encryptedSecrets {
|
for _, secret := range encryptedSecrets.Secrets {
|
||||||
// Decrypt key
|
// Decrypt key
|
||||||
key_iv, err := base64.StdEncoding.DecodeString(secret.SecretKeyIV)
|
key_iv, err := base64.StdEncoding.DecodeString(secret.SecretKeyIV)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user