(encryptedData: string)
| 603 | * @returns {Promise<ICommonObject>} |
| 604 | */ |
| 605 | export const decryptCredentialData = async (encryptedData: string): Promise<ICommonObject> => { |
| 606 | let decryptedDataStr: string |
| 607 | |
| 608 | if (USE_AWS_SECRETS_MANAGER && secretsManagerClient) { |
| 609 | try { |
| 610 | if (encryptedData.startsWith('FlowiseCredential_')) { |
| 611 | const command = new GetSecretValueCommand({ SecretId: encryptedData }) |
| 612 | const response = await secretsManagerClient.send(command) |
| 613 | |
| 614 | if (response.SecretString) { |
| 615 | const secretObj = JSON.parse(response.SecretString) |
| 616 | decryptedDataStr = JSON.stringify(secretObj) |
| 617 | } else { |
| 618 | throw new Error('Failed to retrieve secret value.') |
| 619 | } |
| 620 | } else { |
| 621 | const encryptKey = await getEncryptionKey() |
| 622 | const decryptedData = AES.decrypt(encryptedData, encryptKey) |
| 623 | decryptedDataStr = decryptedData.toString(enc.Utf8) |
| 624 | } |
| 625 | } catch (error) { |
| 626 | console.error(error) |
| 627 | throw new Error('Failed to decrypt credential data.') |
| 628 | } |
| 629 | } else { |
| 630 | // Fallback to existing code |
| 631 | const encryptKey = await getEncryptionKey() |
| 632 | const decryptedData = AES.decrypt(encryptedData, encryptKey) |
| 633 | decryptedDataStr = decryptedData.toString(enc.Utf8) |
| 634 | } |
| 635 | |
| 636 | if (!decryptedDataStr) return {} |
| 637 | try { |
| 638 | return JSON.parse(decryptedDataStr) |
| 639 | } catch (e) { |
| 640 | console.error(e) |
| 641 | throw new Error('Credentials could not be decrypted.') |
| 642 | } |
| 643 | } |
| 644 | |
| 645 | /** |
| 646 | * Get credential data |
no test coverage detected