import numberfy from "./numberfy";

export type GrabEncryptionKeysParam = {
    encryptionKey?: string;
    encryptionSalt?: string;
    apiKey?: string;
    algorithm?: string;
    bufferAllocSize?: number;
};

/**
 *  # Grab Encryption Keys
 * @description Grab Required Encryption Keys
 */
export default function grabKeys(param?: GrabEncryptionKeysParam) {
    return {
        key: param?.encryptionKey || process.env.DSQL_ENCRYPTION_PASSWORD,
        keyLen: process.env.DSQL_ENCRYPTION_KEY_LENGTH
            ? Number(process.env.DSQL_ENCRYPTION_KEY_LENGTH)
            : 24,
        salt: param?.encryptionSalt || process.env.DSQL_ENCRYPTION_SALT,
        apiKey: param?.apiKey || process.env.DSQL_API_KEY,
        algorithm:
            param?.algorithm ||
            process.env.DSQL_ENCRYPTION_ALGORITHM ||
            "aes-192-cbc",
        bufferAllocSize:
            param?.bufferAllocSize ||
            (process.env.DSQL_ENCRYPTION_BUFFER_ALLOCATION_SIZE
                ? numberfy(process.env.DSQL_ENCRYPTION_BUFFER_ALLOCATION_SIZE)
                : undefined) ||
            16,
    };
}
