summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/_crypto/crypto_browserify/public_encrypt/mgf.js
diff options
context:
space:
mode:
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.js22
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;
+}