(
encryptedData: string,
componentCredentialName?: string,
componentCredentials?: IComponentCredentials
)
| 1607 | * @returns {Promise<ICredentialDataDecrypted>} |
| 1608 | */ |
| 1609 | export const decryptCredentialData = async ( |
| 1610 | encryptedData: string, |
| 1611 | componentCredentialName?: string, |
| 1612 | componentCredentials?: IComponentCredentials |
| 1613 | ): Promise<ICredentialDataDecrypted> => { |
| 1614 | let decryptedDataStr: string |
| 1615 | |
| 1616 | if (USE_AWS_SECRETS_MANAGER && secretsManagerClient) { |
| 1617 | try { |
| 1618 | if (encryptedData.startsWith('FlowiseCredential_')) { |
| 1619 | const command = new GetSecretValueCommand({ SecretId: encryptedData }) |
| 1620 | const response = await secretsManagerClient.send(command) |
| 1621 | |
| 1622 | if (response.SecretString) { |
| 1623 | const secretObj = JSON.parse(response.SecretString) |
| 1624 | decryptedDataStr = JSON.stringify(secretObj) |
| 1625 | } else { |
| 1626 | throw new Error('Failed to retrieve secret value.') |
| 1627 | } |
| 1628 | } else { |
| 1629 | const encryptKey = await getEncryptionKey() |
| 1630 | const decryptedData = AES.decrypt(encryptedData, encryptKey) |
| 1631 | decryptedDataStr = decryptedData.toString(enc.Utf8) |
| 1632 | } |
| 1633 | } catch (error) { |
| 1634 | console.error(error) |
| 1635 | throw new Error('Failed to decrypt credential data.') |
| 1636 | } |
| 1637 | } else { |
| 1638 | // Fallback to existing code |
| 1639 | const encryptKey = await getEncryptionKey() |
| 1640 | const decryptedData = AES.decrypt(encryptedData, encryptKey) |
| 1641 | decryptedDataStr = decryptedData.toString(enc.Utf8) |
| 1642 | } |
| 1643 | |
| 1644 | if (!decryptedDataStr) return {} |
| 1645 | try { |
| 1646 | if (componentCredentialName && componentCredentials) { |
| 1647 | const plainDataObj = JSON.parse(decryptedDataStr) |
| 1648 | return redactCredentialWithPasswordType(componentCredentialName, plainDataObj, componentCredentials) |
| 1649 | } |
| 1650 | return JSON.parse(decryptedDataStr) |
| 1651 | } catch (e) { |
| 1652 | console.error(e) |
| 1653 | return {} |
| 1654 | } |
| 1655 | } |
| 1656 | |
| 1657 | /** |
| 1658 | * Generate an encryption key |
no test coverage detected