# encryptData Function Documentation The `encryptData` function takes two parameters: `data` (string) and `receiverPublicKeyHex` (string). It encrypts the given data using AES encryption algorithm with a shared key derived from the sender's private key and receiver's public key. The function returns an object with two properties: `secret` (the encrypted data) and `senderPublicKeyString` (the sender's public key string). ## Parameters - **data** (String): The data to be encrypted. - **receiverPublicKeyHex** (String): The hexadecimal representation of the receiver's public key. ## Return Value An object containing the following properties: - **secret** (String): The encrypted data. - **senderPublicKeyString** (String): The sender's public key string. ## Example Usage ```javascript const data = "Hello, World!"; const receiverPublicKeyHex = "receiver_public_key_hex_here"; const encryptedData = floCrypto.encryptData(data, receiverPublicKeyHex); console.log("Encrypted Data:", encryptedData.secret); console.log("Sender's Public Key:", encryptedData.senderPublicKeyString); ``` ## Dependencies `getSenderPublicKeyString`: A function to retrieve the sender's public key string. `deriveSharedKeySender`: A function to derive a shared key using sender's private key and receiver's public key. `Crypto.AES.encrypt`: AES encryption function used to encrypt the data. ## Notes - Ensure that the necessary dependencies (getSenderPublicKeyString, deriveSharedKeySender, Crypto.AES.encrypt) are available and properly implemented before using this function. - Note: Replace receiver_public_key_hex_here with the actual hexadecimal representation of the receiver's public key when using the function. # decryptData Function Documentation The `decryptData` function is used to decrypt encrypted data using the receiver's private key. ## Parameters - **data** (Object): An object containing the encrypted data and sender's public key string. - **secret** (String): The encrypted data. - **senderPublicKeyString** (String): The sender's public key string. - **privateKeyHex** (String): The hexadecimal representation of the receiver's private key. ## Return Value The decrypted message as a string. ## Throws - **Error**: If `privateKeyHex` is not a valid string or if the private key cannot be determined from the provided hexadecimal representation. ## Example Usage ```javascript const encryptedData = { secret: "encrypted_data_here", senderPublicKeyString: "sender_public_key_string_here" }; const privateKeyHex = "receiver_private_key_hex_here"; const decryptedMessage = floCrypto.decryptData(encryptedData, privateKeyHex); console.log("Decrypted Message:", decryptedMessage); ``` ## Dependencies - **wifToDecimal**: A function to convert the receiver's private key from WIF format to decimal format. - **deriveSharedKeyReceiver**: A function to derive a shared key using sender's public key string and receiver's private key. - **Crypto.AES.decrypt**: AES decryption function used to decrypt the data. ## Notes - Ensure that the necessary dependencies (`wifToDecimal`, `deriveSharedKeyReceiver`, `Crypto.AES.decrypt`) are available and properly implemented before using this function. - **Note**: Replace `"encrypted_data_here"` with the actual encrypted data, `"sender_public_key_string_here"` with the sender's public key string, and `"receiver_private_key_hex_here"` with the receiver's private key in hexadecimal format when using the function. # signData Function Documentation The `signData` function is used to sign data using the sender's private key. ## Parameters - **data** (String): The data to be signed. - **privateKeyHex** (String): The hexadecimal representation of the sender's private key. ## Return Value A hexadecimal string representing the signature of the input data. ## Dependencies - **Bitcoin.ECKey**: A class for handling elliptic curve cryptography operations. - **Crypto.SHA256**: SHA-256 hash function used to create the message hash. - **Bitcoin.ECDSA.sign**: Function for generating the ECDSA signature. - **Crypto.util.bytesToHex**: Utility function to convert bytes to hexadecimal string. ## Example Usage ```javascript const data = "Hello, World!"; const privateKeyHex = "sender_private_key_hex_here"; const signature = floCrypto.signData(data, privateKeyHex); console.log("Signature:", signature); ``` ## Notes - Ensure that the necessary dependencies (`Bitcoin.ECKey`, `Crypto.SHA256`, `Bitcoin.ECDSA.sign`, `Crypto.util.bytesToHex`) are available and properly implemented before using this function. - **Note**: Replace `"sender_private_key_hex_here"` with the actual sender's private key in hexadecimal format when using the function. # verifySign Function Documentation The `verifySign` function is used to verify the signature of data using the sender's public key. ## Parameters - **data** (String): The original data that was signed. - **signatureHex** (String): The hexadecimal representation of the signature to be verified. - **publicKeyHex** (String): The hexadecimal representation of the sender's public key. ## Return Value A boolean value indicating whether the signature is valid (`true`) or not (`false`). ## Dependencies - **Crypto.SHA256**: SHA-256 hash function used to create the message hash. - **Crypto.util.hexToBytes**: Utility function to convert hexadecimal string to bytes. - **ecparams.getCurve().decodePointHex**: Function to decode the sender's public key from hexadecimal format. - **Bitcoin.ECDSA.verify**: Function for verifying the ECDSA signature. ## Example Usage ```javascript const data = "Hello, World!"; const signatureHex = "signature_hex_here"; const publicKeyHex = "sender_public_key_hex_here"; const isSignatureValid = floCrypto.verifySign(data, signatureHex, publicKeyHex); console.log("Is Signature Valid?", isSignatureValid); ``` ## Notes - Ensure that the necessary dependencies (`Crypto.SHA256`, `Crypto.util.hexToBytes`, `ecparams.getCurve().decodePointHex`, `Bitcoin.ECDSA.verify`) are available and properly implemented before using this function. - **Note**: Replace `"signature_hex_here"` with the actual signature in hexadecimal format, and `"sender_public_key_hex_here"` with the sender's public key in hexadecimal format when using the function # generateNewID Function Documentation The `generateNewID` function is used to generate a new flo ID, along with its corresponding private key and public key. ## Return Value An object containing the following properties: - **floID** (String): The newly generated flo ID. - **pubKey** (String): The hexadecimal representation of the corresponding public key. - **privKey** (String): The Wallet Import Format (WIF) representation of the corresponding private key. ## Dependencies - **Bitcoin.ECKey**: A class for generating elliptic curve key pairs. ## Example Usage ```javascript const newIDInfo = floCrypto.generateNewID(); console.log("Flo ID:", newIDInfo.floID); console.log("Public Key:", newIDInfo.pubKey); console.log("Private Key (WIF):", newIDInfo.privKey); ``` ## Notes - Ensure that the necessary dependency (`Bitcoin.ECKey`) is available and properly implemented before using this function. # getPubKeyHex Function Documentation The `getPubKeyHex` function is used to obtain the public key from a given private key. ## Parameters - **privateKeyHex** (String): The hexadecimal representation of the private key. ## Return Value - (String): The hexadecimal representation of the corresponding public key. ## Dependencies - **Bitcoin.ECKey**: A class for handling elliptic curve cryptography operations. ## Example Usage ```javascript const privateKeyHex = "private_key_hex_here"; const publicKeyHex = floCrypto.getPubKeyHex(privateKeyHex); console.log("Public Key:", publicKeyHex); ``` ## Notes - Ensure that the necessary dependency (`Bitcoin.ECKey`) is available and properly implemented before using this function. - If `privateKeyHex` is not provided or invalid, the function will return `null`. # getFloID Function Documentation The `getFloID` function is used to obtain the flo-ID from a given public key or private key. ## Parameters - **keyHex** (String): The hexadecimal representation of the public key or private key. ## Return Value - (String): The corresponding flo-ID. ## Dependencies - **Bitcoin.ECKey**: A class for handling elliptic curve cryptography operations. ## Example Usage ```javascript const keyHex = "public_key_or_private_key_hex_here"; const floID = floCrypto.getFloID(keyHex); console.log("Flo-ID:", floID); ``` ## Notes - Ensure that the necessary dependency (`Bitcoin.ECKey`) is available and properly implemented before using this function. - If `keyHex` is not provided or invalid, the function will return `null`. # getAddress Function Documentation The `getAddress` function is used to obtain the cryptocurrency address (BTC or FLO) corresponding to a given private key. ## Parameters - **privateKeyHex** (String): The hexadecimal representation of the private key. - **strict** (Boolean, optional): A flag to enforce strict address generation. Default is `false`. ## Return Value - (String): The cryptocurrency address corresponding to the provided private key. ## Dependencies - **Bitcoin.ECKey**: A class for handling elliptic curve cryptography operations. - **bitjs.Base58.decode**: Function to decode Base58 encoded strings. - **coinjs.bech32Address**: Function to generate BTC bech32 address. - **bitjs.pubkey2address**: Function to generate FLO address from public key. ## Example Usage ```javascript const privateKeyHex = "private_key_hex_here"; const address = floCrypto.getAddress(privateKeyHex, true); console.log("Cryptocurrency Address:", address); ``` ## Notes - Ensure that the necessary dependencies (`Bitcoin.ECKey`, `bitjs.Base58.decode`, `coinjs.bech32Address`, `bitjs.pubkey2address`) are available and properly implemented before using this function. - If `privateKeyHex` is not provided or invalid, the function will return `null`. - The `strict` flag, if set to `true`, enforces strict address generation based on the provided private key version. If set to `false`, the function will default to generating a FLO address. # verifyPrivKey Function Documentation The `verifyPrivKey` function is used to verify whether a given private key corresponds to a provided public key or flo-ID. ## Parameters - **privateKeyHex** (String): The hexadecimal representation of the private key. - **pubKey_floID** (String): The public key or flo-ID to be verified. - **isfloID** (Boolean, optional): A flag indicating whether the provided key is a flo-ID. Default is `true`. ## Return Value - (Boolean): `true` if the private key corresponds to the provided public key or flo-ID, `false` otherwise. Returns `null` if an error occurs during verification. ## Dependencies - **Bitcoin.ECKey**: A class for handling elliptic curve cryptography operations. ## Example Usage ```javascript const privateKeyHex = "private_key_hex_here"; const pubKey_floID = "public_key_or_floID_here"; const isfloID = true; const isPrivateKeyValid = floCrypto.verifyPrivKey(privateKeyHex, pubKey_floID, isfloID); console.log("Is Private Key Valid?", isPrivateKeyValid); ``` ## Notes - Ensure that the necessary dependency (`Bitcoin.ECKey`) is available and properly implemented before using this function. - If `privateKeyHex` or `pubKey_floID` is not provided or invalid, the function will return `false`. - If `isfloID` is set to `true`, the function will verify against a flo-ID. If set to `false`, it will verify against a public key. # getMultisigAddress Function Documentation The `getMultisigAddress` function is used to generate a multisignature address based on a list of public keys and the number of required signatures. ## Parameters - **publicKeyList** (Array of Strings): An array containing hexadecimal representations of public keys. - **requiredSignatures** (Integer): The number of required signatures for the multisignature address. ## Return Value - (String): The generated multisignature address, or `null` if an error occurs during the generation. ## Dependencies - **bitjs.pubkeys2multisig**: Function to generate a multisignature address from an array of public keys. ## Example Usage ```javascript const publicKeyList = ["pubKey1_hex", "pubKey2_hex", "pubKey3_hex"]; const requiredSignatures = 2; const multisigAddress = floCrypto.getMultisigAddress(publicKeyList, requiredSignatures); console.log("Multisig Address:", multisigAddress); ``` ## Notes - Ensure that the necessary dependency (`bitjs.pubkeys2multisig`) is available and properly implemented before using this function. - `publicKeyList` should be an array of hexadecimal strings representing the public keys. - `requiredSignatures` should be an integer indicating the number of required signatures for the multisignature address. - If `publicKeyList` is empty, not an array, or contains invalid keys, or if `requiredSignatures` is not a valid integer, the function will return `null`. # decodeRedeemScript Function Documentation The `decodeRedeemScript` function is used to decode a multisignature redeem script. ## Parameters - **redeemScript** (String): The hexadecimal representation of the redeem script. ## Return Value - (Object): An object containing the decoded information of the multisignature redeem script, or `null` if an error occurs during decoding. ## Dependencies - **bitjs.transaction().decodeRedeemScript**: Function to decode a multisignature redeem script. ## Example Usage ```javascript const redeemScript = "redeem_script_hex_here"; const decodedRedeemScript = floCrypto.decodeRedeemScript(redeemScript); console.log("Decoded Redeem Script:", decodedRedeemScript); ``` ## Notes - Ensure that the necessary dependency (`bitjs.transaction().decodeRedeemScript`) is available and properly implemented before using this function. - If the `redeemScript` is not a valid hexadecimal string or if an error occurs during decoding, the function will return `null`. # validateFloID Function Documentation The `validateFloID` function is used to check whether a given flo-ID is valid or not. ## Parameters - **floID** (String): The flo-ID to be validated. - **regularOnly** (Boolean, optional): A flag indicating whether to allow only regular flo-IDs. Default is `false`. ## Return Value - (Boolean): `true` if the flo-ID is valid, `false` otherwise. ## Dependencies - **Bitcoin.Address**: A class for handling Bitcoin addresses. ## Example Usage ```javascript const floID = "flo_ID_here"; const isValidFloID = floCrypto.validateFloID(floID, true); console.log("Is Flo-ID Valid?", isValidFloID); ``` ## Notes - Ensure that the necessary dependency (`Bitcoin.Address`) is available and properly implemented before using this function. - If `floID` is not a valid flo-ID (not a valid Bitcoin address), the function will return `false`. - If `regularOnly` is set to `true`, the function will only consider standard flo-IDs as valid; otherwise, it will consider all valid flo-IDs as valid. # validateAddr Function Documentation The `validateAddr` function is used to check whether a given address (from any blockchain) is valid or not. ## Parameters - **address** (String): The address to be validated. - **std** (Boolean or Integer or Array, optional): A flag or array indicating whether to allow specific address versions (standard addresses). Default is `true`. - **bech** (Boolean or Integer or Array, optional): A flag or array indicating whether to allow specific bech32 address versions. Default is `true`. ## Return Value - (Boolean): `true` if the address is valid, `false` otherwise. ## Dependencies - **decodeAddress**: A function to decode the provided address. ## Example Usage ```javascript const address = "address_here"; const isValidAddress = floCrypto.validateAddr(address, true, true); console.log("Is Address Valid?", isValidAddress); ``` ## Notes - Ensure that the necessary dependency (`decodeAddress`) is available and properly implemented before using this function. - If `address` is not a valid address, the function will return `false`. - The `std` parameter allows specifying the allowed standard address versions. If set to `true`, all standard versions are allowed. If set to an integer or an array of integers, only the specified version(s) are allowed. - The `bech` parameter allows specifying the allowed bech32 address versions. If set to `true`, all bech32 versions are allowed. If set to an integer or an array of integers, only the specified version(s) are allowed. # verifyPubKey Function Documentation The `verifyPubKey` function is used to verify whether a given public key or redeem script corresponds to the provided address (from any blockchain). ## Parameters - **pubKeyHex** (String): The hexadecimal representation of the public key or redeem script. - **address** (String): The address to be verified. ## Return Value - (Boolean): `true` if the public key or redeem script corresponds to the provided address, `false` otherwise. ## Dependencies - **decodeAddress**: A function to decode the provided address. - **Crypto.util.bytesToHex**: Utility function to convert bytes to hexadecimal string. - **Crypto.SHA256**: SHA-256 hash function. - **ripemd160**: RIPEMD-160 hash function. ## Example Usage ```javascript const pubKeyHex = "public_key_or_redeem_script_hex_here"; const address = "address_here"; const isPubKeyValid = floCrypto.verifyPubKey(pubKeyHex, address); console.log("Is Public Key Valid?", isPubKeyValid); ``` ## Notes - Ensure that the necessary dependencies (`decodeAddress`, `Crypto.util.bytesToHex`, `Crypto.SHA256`, `Crypto.util.hexToBytes`, `ripemd160`) are available and properly implemented before using this function. - If the public key or redeem script does not correspond to the provided address, the function will return `false`. # toFloID Function Documentation The `toFloID` function is used to convert a given address (from any blockchain) to its equivalent floID. ## Parameters - **address** (String): The address to be converted. - **options** (Object, optional): An object containing options for version checks. Default is `null`. - **std** (Array of Integers, optional): An array of allowed standard address versions. - **bech** (Array of Integers, optional): An array of allowed bech32 address versions. ## Return Value - (String): The equivalent floID corresponding to the provided address. Returns `undefined` if the address is not valid or does not match the specified options. ## Dependencies - **decodeAddress**: A function to decode the provided address. - **Crypto.SHA256**: SHA-256 hash function. - **bitjs.pub**: The version byte for FLO addresses. - **bitjs.Base58.encode**: Base58 encoding function. ## Example Usage ```javascript const address = "address_here"; const options = { std: [version1, version2], bech: [version3, version4] }; const floID = floCrypto.toFloID(address, options); console.log("Equivalent FloID:", floID); ``` ## Notes - Ensure that the necessary dependencies (`decodeAddress`, `Crypto.SHA256`, `bitjs.pub`, `bitjs.Base58.encode`) are available and properly implemented before using this function. - If the `address` is not valid or does not match the specified options, the function will return `undefined`. # toMultisigFloID Function Documentation The `toMultisigFloID` function is used to convert a given multisig address (from any blockchain) to its equivalent multisig floID. ## Parameters - **address** (String): The multisig address to be converted. - **options** (Object, optional): An object containing options for version checks. Default is `null`. - **std** (Array of Integers, optional): An array of allowed standard address versions. - **bech** (Array of Integers, optional): An array of allowed bech32 address versions. ## Return Value - (String): The equivalent multisig floID corresponding to the provided multisig address. Returns `undefined` if the address is not valid or does not match the specified options. ## Dependencies - **decodeAddress**: A function to decode the provided multisig address. - **Crypto.SHA256**: SHA-256 hash function. - **ripemd160**: A cryptographic hash function. - **bitjs.multisig**: The version byte for multisig FLO addresses. - **bitjs.Base58.encode**: Base58 encoding function. ## Example Usage ```javascript const multisigAddress = "multisig_address_here"; const options = { std: [version1, version2], bech: [version3, version4] }; const multisigFloID = floCrypto.toMultisigFloID(multisigAddress, options); console.log("Equivalent Multisig FloID:", multisigFloID); ``` ## Notes - Ensure that the necessary dependencies (`decodeAddress`, `Crypto.SHA256`, `ripemd160`, `bitjs.multisig`, `bitjs.Base58.encode`) are available and properly implemented before using this function. - If the `address` is not valid or does not match the specified options, the function will return `undefined`. # isSameAddr Function Documentation The `isSameAddr` function is used to check whether two given addresses (from any blockchain) correspond to the same keys. ## Parameters - **addr1** (String): The first address to be compared. - **addr2** (String): The second address to be compared. ## Return Value - (Boolean): `true` if the addresses correspond to the same keys, `false` otherwise. Returns `undefined` if either `addr1` or `addr2` is not provided or invalid. ## Dependencies - **decodeAddress**: A function to decode the provided addresses. - **Crypto.util.bytesToHex**: Utility function to convert bytes to hexadecimal string. - **ripemd160**: A cryptographic hash function. ## Example Usage ```javascript const addr1 = "address1_here"; const addr2 = "address2_here"; const sameKeys = floCrypto.isSameAddr(addr1, addr2); console.log("Do Addresses Correspond to Same Keys?", sameKeys); ``` ## Notes - Ensure that the necessary dependencies (`decodeAddress`, `Crypto.util.bytesToHex`, `ripemd160`) are available and properly implemented before using this function. - If either `addr1` or `addr2` is not provided or invalid, the function will return `undefined`. # decodeAddr Function Documentation The `decodeAddr` function is used to decode the provided address and determine its version, hexadecimal representation, and raw bytes. ## Parameters - **address** (String): The address to be decoded. ## Return Value - (Object or null): An object containing decoded information, including version, hexadecimal representation, and raw bytes. Returns `null` if the provided address is not valid. ## Dependencies - **bitjs.Base58.decode**: Base58 decoding function for legacy addresses. - **Crypto.SHA256**: SHA-256 hash function. - **Crypto.util.bytesToHex**: Utility function to convert bytes to hexadecimal string. - **coinjs.bech32_decode**: Bech32 decoding function for bech32 addresses. - **coinjs.bech32_convert**: Bech32 conversion function. ## Example Usage ```javascript const address = "address_here"; const decodedInfo = floCrypto.decodeAddr(address); console.log("Decoded Address Information:", decodedInfo); ``` ## Notes - Ensure that the necessary dependencies (`bitjs.Base58.decode`, `Crypto.SHA256`, `Crypto.util.bytesToHex`, `coinjs.bech32_decode`, `coinjs.bech32_convert`) are available and properly implemented before using this function. - The function will return `null` if the provided address is not valid. # createShamirsSecretShares Function Documentation The `createShamirsSecretShares` function uses Shamir's Secret Sharing algorithm to split a given string into shares based on the specified total shares and threshold limit. ## Parameters - **str** (String): The input string to be split. - **total_shares** (Integer): The total number of shares to be generated. - **threshold_limit** (Integer): The minimum number of shares required to reconstruct the original string. ## Return Value - (Array or Boolean): An array containing the shares generated using Shamir's Secret Sharing algorithm. Returns `false` if the input string is empty or if there is an error during the splitting process. ## Dependencies - **shamirSecretShare.str2hex**: Function to convert a string to hexadecimal representation. - **shamirSecretShare.share**: Function to generate shares using Shamir's Secret Sharing algorithm. ## Example Usage ```javascript const inputString = "input_string_here"; const totalShares = 5; const thresholdLimit = 3; const shares = floCrypto.createShamirsSecretShares(inputString, totalShares, thresholdLimit); console.log("Generated Shares:", shares); ``` ## Notes - Ensure that the necessary dependencies (`shamirSecretShare.str2hex`, `shamirSecretShare.share`) are available and properly implemented before using this function. - The function will return `false` if the input string is empty or if there is an error during the splitting process. # retrieveShamirSecret Function Documentation The `retrieveShamirSecret` function is used to retrieve the original secret by combining the provided Shamir's Secret Sharing shares. ## Parameters - **sharesArray** (Array): An array containing Shamir's Secret Sharing shares to be combined. ## Return Value - (String or Boolean): The retrieved original secret. Returns `false` if the input shares array is empty or if there is an error during the retrieval process. ## Dependencies - **shamirSecretShare.combine**: Function to combine shares using Shamir's Secret Sharing algorithm. - **shamirSecretShare.hex2str**: Function to convert hexadecimal representation to a string. ## Example Usage ```javascript const sharesArray = ["share1", "share2", "share3"]; const retrievedSecret = floCrypto.retrieveShamirSecret(sharesArray); console.log("Retrieved Secret:", retrievedSecret); ``` ## Notes - Ensure that the necessary dependencies (`shamirSecretShare.combine`, `shamirSecretShare.hex2str`) are available and properly implemented before using this function. - The function will return `false` if the input shares array is empty or if there is an error during the retrieval process. # verifyShamirsSecret Function Documentation The `verifyShamirsSecret` function is used to verify the provided Shamir's Secret Sharing shares against a given string. ## Parameters - **sharesArray** (Array): An array containing Shamir's Secret Sharing shares to be verified. - **str** (String): The original string to be verified against the retrieved secret. ## Return Value - (Boolean or null): `true` if the shares verify the provided string, `false` otherwise. Returns `null` if the input string is not provided. ## Dependencies - **retrieveShamirSecret**: Function to retrieve the original secret by combining shares using Shamir's Secret Sharing algorithm. ## Example Usage ```javascript const sharesArray = ["share1", "share2", "share3"]; const originalString = "original_string_here"; const verificationResult = floCrypto.verifyShamirsSecret(sharesArray, originalString); console.log("Shares Verification Result:", verificationResult); ``` ## Notes - Ensure that the necessary dependency (`retrieveShamirSecret`) is available and properly implemented before using this function. - The function will return `null` if the input string is not provided. # validateASCII Function Documentation The `validateASCII` function is used to validate a string to ensure it contains only ASCII characters within the printable range (32 to 127) by default. ## Parameters - **string** (String): The input string to be validated. - **bool** (Boolean, optional): If `true`, the function returns `true` if the entire string contains only printable ASCII characters; if `false`, it returns an object containing information about invalid characters and their positions. Default is `true`. ## Return Value - (Boolean or Object or null): Returns `true` if the input string contains only printable ASCII characters. Returns an object containing information about invalid characters and their positions if `bool` is set to `false`. Returns `null` if the input is not a string. ## Example Usage ```javascript const inputString = "ASCII_string_here"; // Validate ASCII characters const isValid = floCrypto.validateASCII(inputString); console.log("Is Valid ASCII?", isValid); // Validate ASCII characters and get invalid characters with their positions const invalidChars = floCrypto.validateASCII(inputString, false); console.log("Invalid Characters:", invalidChars); ``` ## Notes - If `bool` is set to `true`, the function will return `true` if the input string contains only printable ASCII characters; otherwise, it will return `false`. - If `bool` is set to `false`, the function will return an object containing information about invalid characters and their positions. If there are no invalid characters, it will return an empty object. - The function will return `null` if the input is not a string. # convertToASCII Function Documentation The `convertToASCII` function is used to convert a string to ASCII characters using specified conversion modes. ## Parameters - **string** (String): The input string to be converted. - **mode** (String, optional): The conversion mode. Available options are 'hard-unicode', 'soft-unicode', 'hard-remove', and 'soft-remove'. Default is 'soft-remove'. ## Return Value - (String or null): The converted string. Returns `null` if the input is not a string. ## Example Usage ```javascript const inputString = "input_string_here"; // Convert to ASCII characters using soft-remove mode const convertedString = floCrypto.convertToASCII(inputString); console.log("Converted String:", convertedString); ``` ## Notes - Available conversion modes: - 'hard-unicode': Converts characters to Unicode escape sequences (e.g., `\uXXXX`). - 'soft-unicode': Converts characters to Unicode escape sequences if available in `ascii_alternatives` list; otherwise, uses regular Unicode escape sequences. - 'hard-remove': Removes non-ASCII characters from the string. - 'soft-remove': Replaces non-ASCII characters with their alternatives from `ascii_alternatives` list if available; otherwise, removes them. - Ensure that the necessary dependencies (`validateASCII`) and the `ascii_alternatives` list are available and properly implemented before using this function. - The function will return `null` if the input is not a string. # revertUnicode Function Documentation The `revertUnicode` function is used to revert Unicode escape sequences (e.g., `\uXXXX`) back to their corresponding characters in a given string. ## Parameters - **string** (String): The input string containing Unicode escape sequences to be reverted. ## Return Value - (String): The string with reverted Unicode escape sequences. ## Example Usage ```javascript const unicodeString = "\\u0048\\u0065\\u006c\\u006c\\u006f"; const revertedString = floCrypto.revertUnicode(unicodeString); console.log("Reverted String:", revertedString); ```