diff options
Diffstat (limited to 'ext/node/polyfills/_crypto/crypto_browserify/public_encrypt/mgf.js')
-rw-r--r-- | ext/node/polyfills/_crypto/crypto_browserify/public_encrypt/mgf.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ext/node/polyfills/_crypto/crypto_browserify/public_encrypt/mgf.js b/ext/node/polyfills/_crypto/crypto_browserify/public_encrypt/mgf.js new file mode 100644 index 000000000..5bb41f896 --- /dev/null +++ b/ext/node/polyfills/_crypto/crypto_browserify/public_encrypt/mgf.js @@ -0,0 +1,22 @@ +// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. +// Copyright 2017 Calvin Metcalf. All rights reserved. MIT license. + +import { createHash } from "internal:deno_node/polyfills/internal/crypto/hash.ts"; +import { Buffer } from "internal:deno_node/polyfills/buffer.ts"; + +export default function (seed, len) { + let t = Buffer.alloc(0); + let i = 0; + let c; + while (t.length < len) { + c = i2ops(i++); + t = Buffer.concat([t, createHash("sha1").update(seed).update(c).digest()]); + } + return t.slice(0, len); +} + +function i2ops(c) { + const out = Buffer.allocUnsafe(4); + out.writeUInt32BE(c, 0); + return out; +} |