Skip to main content


Deno standard library
Go to Latest
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.// Copyright Joyent, Inc. and Node.js contributors. All rights reserved. MIT license.
import { getCiphers } from "../../_crypto/crypto_browserify/browserify_aes/mod.js";import { notImplemented } from "../../_utils.ts";import { Buffer } from "../../buffer.ts";import { ERR_INVALID_ARG_TYPE, hideStackFrames } from "../errors.ts";import { isAnyArrayBuffer, isArrayBufferView } from "../util/types.ts";import { crypto as constants } from "../../internal_binding/constants.ts";import { kHandle, kKeyObject } from "./constants.ts";
// TODO(kt3k): Generate this list from `digestAlgorithms`// of std/crypto/_wasm/mod.tsconst digestAlgorithms = [ "blake2b256", "blake2b384", "blake2b", "blake2s", "blake3", "keccak-224", "keccak-256", "keccak-384", "keccak-512", "sha384", "sha3-224", "sha3-256", "sha3-384", "sha3-512", "shake128", "shake256", "tiger", "rmd160", "sha224", "sha256", "sha512", "md4", "md5", "sha1",];
let defaultEncoding = "buffer";
export function setDefaultEncoding(val: string) { defaultEncoding = val;}
export function getDefaultEncoding(): string { return defaultEncoding;}
// This is here because many functions accepted binary strings without// any explicit encoding in older versions of node, and we don't want// to break them unnecessarily.export function toBuf(val: string | Buffer, encoding?: string): Buffer { if (typeof val === "string") { if (encoding === "buffer") { encoding = "utf8"; }
return Buffer.from(val, encoding); }
return val;}
export const validateByteSource = hideStackFrames((val, name) => { val = toBuf(val);
if (isAnyArrayBuffer(val) || isArrayBufferView(val)) { return; }
throw new ERR_INVALID_ARG_TYPE( name, ["string", "ArrayBuffer", "TypedArray", "DataView", "Buffer"], val, );});
/** * Returns an array of the names of the supported hash algorithms, such as 'sha1'. */export function getHashes(): readonly string[] { return digestAlgorithms;}
export function getCurves(): readonly string[] { notImplemented("crypto.getCurves");}
export interface SecureHeapUsage { total: number; min: number; used: number; utilization: number;}
export function secureHeapUsed(): SecureHeapUsage { notImplemented("crypto.secureHeapUsed");}
export function setEngine(_engine: string, _flags: typeof constants) { notImplemented("crypto.setEngine");}
export { getCiphers, kHandle, kKeyObject };
export default { getDefaultEncoding, getHashes, setDefaultEncoding, getCiphers, getCurves, secureHeapUsed, setEngine, validateByteSource, toBuf, kHandle, kKeyObject,};