Skip to content

Commit 7c9cd95

Browse files
authored
chore(input_secrets): add encryptInputSecretValue method (#348)
1 parent ada6eb1 commit 7c9cd95

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

packages/input_secrets/src/input_secrets.ts

+13-3
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,22 @@ export function getInputSchemaSecretFieldKeys(inputSchema: any): string[] {
1414
.filter((key) => !!inputSchema.properties[key].isSecret);
1515
}
1616

17+
/**
18+
* Encrypts input secret value
19+
*/
20+
export function encryptInputSecretValue({ value, publicKey }: { value: string, publicKey: KeyObject }): string {
21+
ow(value, ow.string);
22+
ow(publicKey, ow.object.instanceOf(KeyObject));
23+
24+
const { encryptedValue, encryptedPassword } = publicEncrypt({ value, publicKey });
25+
return `${ENCRYPTED_INPUT_VALUE_PREFIX}:${encryptedPassword}:${encryptedValue}`;
26+
}
27+
1728
/**
1829
* Encrypts actor input secrets
1930
*/
2031
export function encryptInputSecrets<T>(
21-
{ input, inputSchema, publicKey }: { input: T, inputSchema: object, publicKey: KeyObject},
32+
{ input, inputSchema, publicKey }: { input: T, inputSchema: object, publicKey: KeyObject },
2233
): T {
2334
ow(input, ow.object);
2435
ow(inputSchema, ow.object);
@@ -33,8 +44,7 @@ export function encryptInputSecrets<T>(
3344
// NOTE: Skips already encrypted values. It can happens in case client already encrypted values, before
3445
// sending them using API. Or input was takes from task, run console or scheduler, where input is stored encrypted.
3546
if (value && ow.isValid(value, ow.string) && !ENCRYPTED_INPUT_VALUE_REGEXP.test(value)) {
36-
const { encryptedValue, encryptedPassword } = publicEncrypt({ value: input[key], publicKey });
37-
encryptedInput[key] = `${ENCRYPTED_INPUT_VALUE_PREFIX}:${encryptedPassword}:${encryptedValue}`;
47+
encryptedInput[key] = encryptInputSecretValue({ value: input[key], publicKey });
3848
}
3949
}
4050

0 commit comments

Comments
 (0)