PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@vechain/sdk-core/src/keystore

Просмотр файла: keystore.ts

import { VeChainSDKLogger } from '@vechain/sdk-logging';
import { Txt } from '../vcdm';
import { keystoreEthers, keystoreExperimental } from './cryptography';
import { type Keystore, type KeystoreAccount } from './types';

/**
 * A boolean indicating whether the keystore cryptography is experimental or not.
 */
let EXPERIMENTAL_CRYPTOGRAPHY: boolean = false;

/**
 * Sets the keystore cryptography to experimental mode.
 *
 * @param experimentalCryptography - A boolean indicating whether the keystore cryptography is experimental or not.
 */
function useExperimentalCryptography(experimentalCryptography: boolean): void {
    EXPERIMENTAL_CRYPTOGRAPHY = experimentalCryptography;
}

/**
 * Encrypts a given private key into a keystore format using the specified password.
 *
 * @param privateKey - The private key to be encrypted.
 * @param password - The password used for the encryption.
 * @returns A Promise that resolves to the encrypted keystore.
 */
async function encrypt(
    privateKey: Uint8Array,
    password: string
): Promise<Keystore> {
    if (EXPERIMENTAL_CRYPTOGRAPHY)
        VeChainSDKLogger('warning').log({
            title: `Experimental cryptography`,
            messages: [
                `Remember, you are using an experimental cryptography library.`,
                'functions: keystore.encrypt'
            ]
        });

    return EXPERIMENTAL_CRYPTOGRAPHY
        ? keystoreExperimental.encrypt(privateKey, Txt.of(password).bytes)
        : await keystoreEthers.encrypt(privateKey, password);
}

/**
 * Decrypts a keystore to obtain the private key using the given password.
 *
 * @throws {InvalidKeystoreError, InvalidKeystorePasswordError}
 * @param keystore - The keystore containing the encrypted private key.
 * @param password - The password used to decrypt the keystore.
 * @returns A Promise that resolves to the decrypted KeystoreAccount or rejects if the keystore or password is invalid.
 */
async function decrypt(
    keystore: Keystore,
    password: string
): Promise<KeystoreAccount> {
    if (EXPERIMENTAL_CRYPTOGRAPHY)
        VeChainSDKLogger('warning').log({
            title: `Experimental cryptography`,
            messages: [
                `Remember, you are using an experimental cryptography library.`,
                'functions: keystore.decrypt'
            ]
        });

    return EXPERIMENTAL_CRYPTOGRAPHY
        ? keystoreExperimental.decrypt(keystore, Txt.of(password).bytes)
        : await keystoreEthers.decrypt(keystore, password);
}

/**
 * Validates if the provided keystore adheres to the expected format and structure.
 *
 * @param keystore - The keystore to be validated.
 * @returns A boolean indicating whether the keystore is valid or not.
 */
function isValid(keystore: Keystore): boolean {
    if (EXPERIMENTAL_CRYPTOGRAPHY)
        VeChainSDKLogger('warning').log({
            title: `Experimental cryptography`,
            messages: [
                `Remember, you are using an experimental cryptography library.`,
                'functions: keystore.isValid'
            ]
        });

    return EXPERIMENTAL_CRYPTOGRAPHY
        ? keystoreExperimental.isValid(keystore)
        : keystoreEthers.isValid(keystore);
}

/**
 * Exports the keystore functions for encryption, decryption, and validation.
 */
const keystore = { encrypt, decrypt, isValid, useExperimentalCryptography };
export { keystore };

Выполнить команду


Для локальной разработки. Не используйте в интернете!