MCPcopy Create free account
hub / github.com/devnullvoid/pvetui / DecryptField

Function DecryptField

internal/config/encryption.go:163–197  ·  view source on GitHub ↗

DecryptField decrypts an encrypted field value. Returns the decrypted value, or the original value if not encrypted.

(value string)

Source from the content-addressed store, hash-verified

161// DecryptField decrypts an encrypted field value.
162// Returns the decrypted value, or the original value if not encrypted.
163func DecryptField(value string) (string, error) {
164 if value == "" {
165 return "", nil
166 }
167
168 if !isEncrypted(value) {
169 // Not encrypted, return as-is
170 return value, nil
171 }
172
173 // Remove prefix and decode base64
174 encryptedData := strings.TrimPrefix(value, encryptionPrefix)
175 decoded, err := base64.StdEncoding.DecodeString(encryptedData)
176 if err != nil {
177 return "", fmt.Errorf("decode base64: %w", err)
178 }
179
180 identity, _, err := getOrCreateAgeIdentity()
181 if err != nil {
182 return "", fmt.Errorf("get age identity: %w", err)
183 }
184
185 // Decrypt the value
186 decryptReader, err := age.Decrypt(bytes.NewReader(decoded), identity)
187 if err != nil {
188 return "", fmt.Errorf("create decrypt reader: %w", err)
189 }
190
191 var decrypted bytes.Buffer
192 if _, err := io.Copy(&decrypted, decryptReader); err != nil {
193 return "", fmt.Errorf("read decrypted data: %w", err)
194 }
195
196 return decrypted.String(), nil
197}
198
199// EncryptSensitiveFields encrypts all sensitive fields in a ProfileConfig.
200// Fields that are already encrypted are left unchanged.

Callers 4

NewConfigWizardPageFunction · 0.92
DecryptSensitiveFieldsFunction · 0.85

Calls 3

isEncryptedFunction · 0.85
getOrCreateAgeIdentityFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected