pixel-react 1.15.21 → 1.15.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/_virtual/aesCipherSuites.js +4 -0
- package/lib/_virtual/aesCipherSuites.js.map +1 -0
- package/lib/_virtual/asn1-validator.js +4 -0
- package/lib/_virtual/asn1-validator.js.map +1 -0
- package/lib/_virtual/asn1.js +4 -0
- package/lib/_virtual/asn1.js.map +1 -0
- package/lib/_virtual/cipherModes.js +4 -0
- package/lib/_virtual/cipherModes.js.map +1 -0
- package/lib/_virtual/hmac.js +4 -0
- package/lib/_virtual/hmac.js.map +1 -0
- package/lib/_virtual/index11.js +2 -2
- package/lib/_virtual/index12.js +2 -2
- package/lib/_virtual/index13.js +2 -2
- package/lib/_virtual/index14.js +4 -0
- package/lib/_virtual/index14.js.map +1 -0
- package/lib/_virtual/index2.js +5 -3
- package/lib/_virtual/index2.js.map +1 -1
- package/lib/_virtual/index3.js +4 -2
- package/lib/_virtual/index3.js.map +1 -1
- package/lib/_virtual/index4.js +2 -4
- package/lib/_virtual/index4.js.map +1 -1
- package/lib/_virtual/index5.js +4 -2
- package/lib/_virtual/index5.js.map +1 -1
- package/lib/_virtual/index6.js +2 -2
- package/lib/_virtual/index7.js +2 -6
- package/lib/_virtual/index7.js.map +1 -1
- package/lib/_virtual/index8.js +6 -2
- package/lib/_virtual/index8.js.map +1 -1
- package/lib/_virtual/index9.js +2 -2
- package/lib/_virtual/md5.js +4 -0
- package/lib/_virtual/md5.js.map +1 -0
- package/lib/_virtual/mgf1.js +4 -0
- package/lib/_virtual/mgf1.js.map +1 -0
- package/lib/_virtual/oids.js +4 -0
- package/lib/_virtual/oids.js.map +1 -0
- package/lib/_virtual/pem.js +4 -0
- package/lib/_virtual/pem.js.map +1 -0
- package/lib/_virtual/pkcs1.js +4 -0
- package/lib/_virtual/pkcs1.js.map +1 -0
- package/lib/_virtual/pkcs12.js +4 -0
- package/lib/_virtual/pkcs12.js.map +1 -0
- package/lib/_virtual/pkcs7.js +4 -0
- package/lib/_virtual/pkcs7.js.map +1 -0
- package/lib/_virtual/pkcs7asn1.js +4 -0
- package/lib/_virtual/pkcs7asn1.js.map +1 -0
- package/lib/_virtual/pki.js +4 -0
- package/lib/_virtual/pki.js.map +1 -0
- package/lib/_virtual/prime.js +4 -0
- package/lib/_virtual/prime.js.map +1 -0
- package/lib/_virtual/prng.js +4 -0
- package/lib/_virtual/prng.js.map +1 -0
- package/lib/_virtual/pss.js +4 -0
- package/lib/_virtual/pss.js.map +1 -0
- package/lib/_virtual/random.js +4 -0
- package/lib/_virtual/random.js.map +1 -0
- package/lib/_virtual/sha1.js +4 -0
- package/lib/_virtual/sha1.js.map +1 -0
- package/lib/_virtual/sha256.js +4 -0
- package/lib/_virtual/sha256.js.map +1 -0
- package/lib/_virtual/sha512.js +4 -0
- package/lib/_virtual/sha512.js.map +1 -0
- package/lib/_virtual/ssh.js +4 -0
- package/lib/_virtual/ssh.js.map +1 -0
- package/lib/_virtual/util.js +4 -0
- package/lib/_virtual/util.js.map +1 -0
- package/lib/_virtual/x509.js +4 -0
- package/lib/_virtual/x509.js.map +1 -0
- package/lib/assets/icons/testify_icon.svg.js +6 -0
- package/lib/assets/icons/testify_icon.svg.js.map +1 -0
- package/lib/assets/icons/testify_loader.svg.js +6 -0
- package/lib/assets/icons/testify_loader.svg.js.map +1 -0
- package/lib/assets/icons/testify_logo_name.svg.js +6 -0
- package/lib/assets/icons/testify_logo_name.svg.js.map +1 -0
- package/lib/components/AllProjectsDropdown/AllProjectsDropdown.js +3 -1
- package/lib/components/AllProjectsDropdown/AllProjectsDropdown.js.map +1 -1
- package/lib/components/Charts/DashboardDonutChart/DashboardDonutChart.js +2 -9
- package/lib/components/Charts/DashboardDonutChart/DashboardDonutChart.js.map +1 -1
- package/lib/components/Charts/DashboardDonutChart/types.d.ts +1 -1
- package/lib/components/ConditionalDropdown/ConditionalDropdown.js +2 -9
- package/lib/components/ConditionalDropdown/ConditionalDropdown.js.map +1 -1
- package/lib/components/Editor/Editor.js +37 -17
- package/lib/components/Editor/Editor.js.map +1 -1
- package/lib/components/Icon/iconList.js +6 -0
- package/lib/components/Icon/iconList.js.map +1 -1
- package/lib/components/MultiSelect/MultiSelect.js +9 -10
- package/lib/components/MultiSelect/MultiSelect.js.map +1 -1
- package/lib/components/PhoneInput/PhoneInput.js +1 -0
- package/lib/components/PhoneInput/PhoneInput.js.map +1 -1
- package/lib/components/SessionDropdown/SessionDropdown.js +4 -2
- package/lib/components/SessionDropdown/SessionDropdown.js.map +1 -1
- package/lib/index.cjs +27423 -379
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/node_modules/classnames/index.js +1 -1
- package/lib/node_modules/input-format/modules/react/Input.js +1 -1
- package/lib/node_modules/js-beautify/js/index.js +1 -1
- package/lib/node_modules/js-beautify/js/src/html/beautifier.js +1 -1
- package/lib/node_modules/js-beautify/js/src/html/index.js +1 -1
- package/lib/node_modules/js-beautify/js/src/html/options.js +1 -1
- package/lib/node_modules/js-beautify/js/src/html/tokenizer.js +1 -1
- package/lib/node_modules/js-beautify/js/src/index.js +1 -1
- package/lib/node_modules/js-beautify/js/src/javascript/beautifier.js +1 -1
- package/lib/node_modules/js-beautify/js/src/javascript/index.js +1 -1
- package/lib/node_modules/js-beautify/js/src/javascript/options.js +1 -1
- package/lib/node_modules/js-beautify/js/src/javascript/tokenizer.js +1 -1
- package/lib/node_modules/node-forge/lib/aes.js +1014 -0
- package/lib/node_modules/node-forge/lib/aes.js.map +1 -0
- package/lib/node_modules/node-forge/lib/aesCipherSuites.js +286 -0
- package/lib/node_modules/node-forge/lib/aesCipherSuites.js.map +1 -0
- package/lib/node_modules/node-forge/lib/asn1-validator.js +100 -0
- package/lib/node_modules/node-forge/lib/asn1-validator.js.map +1 -0
- package/lib/node_modules/node-forge/lib/asn1.js +1379 -0
- package/lib/node_modules/node-forge/lib/asn1.js.map +1 -0
- package/lib/node_modules/node-forge/lib/baseN.js +181 -0
- package/lib/node_modules/node-forge/lib/baseN.js.map +1 -0
- package/lib/node_modules/node-forge/lib/cipher.js +236 -0
- package/lib/node_modules/node-forge/lib/cipher.js.map +1 -0
- package/lib/node_modules/node-forge/lib/cipherModes.js +936 -0
- package/lib/node_modules/node-forge/lib/cipherModes.js.map +1 -0
- package/lib/node_modules/node-forge/lib/des.js +467 -0
- package/lib/node_modules/node-forge/lib/des.js.map +1 -0
- package/lib/node_modules/node-forge/lib/ed25519.js +1108 -0
- package/lib/node_modules/node-forge/lib/ed25519.js.map +1 -0
- package/lib/node_modules/node-forge/lib/forge.js +23 -0
- package/lib/node_modules/node-forge/lib/forge.js.map +1 -0
- package/lib/node_modules/node-forge/lib/hmac.js +158 -0
- package/lib/node_modules/node-forge/lib/hmac.js.map +1 -0
- package/lib/node_modules/node-forge/lib/index.js +70 -0
- package/lib/node_modules/node-forge/lib/index.js.map +1 -0
- package/lib/node_modules/node-forge/lib/jsbn.js +1481 -0
- package/lib/node_modules/node-forge/lib/jsbn.js.map +1 -0
- package/lib/node_modules/node-forge/lib/kem.js +178 -0
- package/lib/node_modules/node-forge/lib/kem.js.map +1 -0
- package/lib/node_modules/node-forge/lib/log.js +325 -0
- package/lib/node_modules/node-forge/lib/log.js.map +1 -0
- package/lib/node_modules/node-forge/lib/md.all.js +28 -0
- package/lib/node_modules/node-forge/lib/md.all.js.map +1 -0
- package/lib/node_modules/node-forge/lib/md.js +22 -0
- package/lib/node_modules/node-forge/lib/md.js.map +1 -0
- package/lib/node_modules/node-forge/lib/md5.js +288 -0
- package/lib/node_modules/node-forge/lib/md5.js.map +1 -0
- package/lib/node_modules/node-forge/lib/mgf.js +24 -0
- package/lib/node_modules/node-forge/lib/mgf.js.map +1 -0
- package/lib/node_modules/node-forge/lib/mgf1.js +68 -0
- package/lib/node_modules/node-forge/lib/mgf1.js.map +1 -0
- package/lib/node_modules/node-forge/lib/oids.js +185 -0
- package/lib/node_modules/node-forge/lib/oids.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pbe.js +966 -0
- package/lib/node_modules/node-forge/lib/pbe.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pbkdf2.js +209 -0
- package/lib/node_modules/node-forge/lib/pbkdf2.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pem.js +250 -0
- package/lib/node_modules/node-forge/lib/pem.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pkcs1.js +273 -0
- package/lib/node_modules/node-forge/lib/pkcs1.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pkcs12.js +980 -0
- package/lib/node_modules/node-forge/lib/pkcs12.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pkcs7.js +1073 -0
- package/lib/node_modules/node-forge/lib/pkcs7.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pkcs7asn1.js +415 -0
- package/lib/node_modules/node-forge/lib/pkcs7asn1.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pki.js +125 -0
- package/lib/node_modules/node-forge/lib/pki.js.map +1 -0
- package/lib/node_modules/node-forge/lib/prime.js +297 -0
- package/lib/node_modules/node-forge/lib/prime.js.map +1 -0
- package/lib/node_modules/node-forge/lib/prng.js +433 -0
- package/lib/node_modules/node-forge/lib/prng.js.map +1 -0
- package/lib/node_modules/node-forge/lib/pss.js +246 -0
- package/lib/node_modules/node-forge/lib/pss.js.map +1 -0
- package/lib/node_modules/node-forge/lib/random.js +191 -0
- package/lib/node_modules/node-forge/lib/random.js.map +1 -0
- package/lib/node_modules/node-forge/lib/rc2.js +382 -0
- package/lib/node_modules/node-forge/lib/rc2.js.map +1 -0
- package/lib/node_modules/node-forge/lib/rsa.js +1815 -0
- package/lib/node_modules/node-forge/lib/rsa.js.map +1 -0
- package/lib/node_modules/node-forge/lib/sha1.js +325 -0
- package/lib/node_modules/node-forge/lib/sha1.js.map +1 -0
- package/lib/node_modules/node-forge/lib/sha256.js +306 -0
- package/lib/node_modules/node-forge/lib/sha256.js.map +1 -0
- package/lib/node_modules/node-forge/lib/sha512.js +479 -0
- package/lib/node_modules/node-forge/lib/sha512.js.map +1 -0
- package/lib/node_modules/node-forge/lib/ssh.js +244 -0
- package/lib/node_modules/node-forge/lib/ssh.js.map +1 -0
- package/lib/node_modules/node-forge/lib/tls.js +4207 -0
- package/lib/node_modules/node-forge/lib/tls.js.map +1 -0
- package/lib/node_modules/node-forge/lib/util.js +2565 -0
- package/lib/node_modules/node-forge/lib/util.js.map +1 -0
- package/lib/node_modules/node-forge/lib/x509.js +2986 -0
- package/lib/node_modules/node-forge/lib/x509.js.map +1 -0
- package/lib/node_modules/prop-types/index.js +1 -1
- package/lib/node_modules/react-async-script/lib/esm/async-script-loader.js +1 -1
- package/lib/node_modules/react-google-recaptcha/lib/esm/recaptcha.js +1 -1
- package/lib/node_modules/react-is/index.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/CountryIcon.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/CountrySelect.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/Flag.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/InputBasic.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/InputSmart.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/InternationalIcon.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/PhoneInputWithCountry.js +1 -1
- package/lib/node_modules/react-phone-number-input/modules/PropTypes.js +1 -1
- package/lib/node_modules/scheduler/index.js +1 -1
- package/lib/node_modules/use-context-selector/dist/index.js +1 -1
- package/lib/styles.css +1 -1
- package/lib/styles.css.map +1 -1
- package/lib/utils/getEncryptedData/getEncryptedData.js +10 -13
- package/lib/utils/getEncryptedData/getEncryptedData.js.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { __module as pki } from '../../../_virtual/pki.js';
|
|
2
|
+
import { __require as requireForge } from './forge.js';
|
|
3
|
+
import { __require as requireAsn1 } from './asn1.js';
|
|
4
|
+
import { __require as requireOids } from './oids.js';
|
|
5
|
+
import { __require as requirePbe } from './pbe.js';
|
|
6
|
+
import { __require as requirePem } from './pem.js';
|
|
7
|
+
import { __require as requirePbkdf2 } from './pbkdf2.js';
|
|
8
|
+
import { __require as requirePkcs12 } from './pkcs12.js';
|
|
9
|
+
import { __require as requirePss } from './pss.js';
|
|
10
|
+
import { __require as requireRsa } from './rsa.js';
|
|
11
|
+
import { __require as requireUtil } from './util.js';
|
|
12
|
+
import { __require as requireX509 } from './x509.js';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Javascript implementation of a basic Public Key Infrastructure, including
|
|
16
|
+
* support for RSA public and private keys.
|
|
17
|
+
*
|
|
18
|
+
* @author Dave Longley
|
|
19
|
+
*
|
|
20
|
+
* Copyright (c) 2010-2013 Digital Bazaar, Inc.
|
|
21
|
+
*/
|
|
22
|
+
var hasRequiredPki;
|
|
23
|
+
function requirePki() {
|
|
24
|
+
if (hasRequiredPki) return pki.exports;
|
|
25
|
+
hasRequiredPki = 1;
|
|
26
|
+
var forge = requireForge();
|
|
27
|
+
requireAsn1();
|
|
28
|
+
requireOids();
|
|
29
|
+
requirePbe();
|
|
30
|
+
requirePem();
|
|
31
|
+
requirePbkdf2();
|
|
32
|
+
requirePkcs12();
|
|
33
|
+
requirePss();
|
|
34
|
+
requireRsa();
|
|
35
|
+
requireUtil();
|
|
36
|
+
requireX509();
|
|
37
|
+
|
|
38
|
+
// shortcut for asn.1 API
|
|
39
|
+
var asn1 = forge.asn1;
|
|
40
|
+
|
|
41
|
+
/* Public Key Infrastructure (PKI) implementation. */
|
|
42
|
+
var pki$1 = pki.exports = forge.pki = forge.pki || {};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* NOTE: THIS METHOD IS DEPRECATED. Use pem.decode() instead.
|
|
46
|
+
*
|
|
47
|
+
* Converts PEM-formatted data to DER.
|
|
48
|
+
*
|
|
49
|
+
* @param pem the PEM-formatted data.
|
|
50
|
+
*
|
|
51
|
+
* @return the DER-formatted data.
|
|
52
|
+
*/
|
|
53
|
+
pki$1.pemToDer = function (pem) {
|
|
54
|
+
var msg = forge.pem.decode(pem)[0];
|
|
55
|
+
if (msg.procType && msg.procType.type === 'ENCRYPTED') {
|
|
56
|
+
throw new Error('Could not convert PEM to DER; PEM is encrypted.');
|
|
57
|
+
}
|
|
58
|
+
return forge.util.createBuffer(msg.body);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Converts an RSA private key from PEM format.
|
|
63
|
+
*
|
|
64
|
+
* @param pem the PEM-formatted private key.
|
|
65
|
+
*
|
|
66
|
+
* @return the private key.
|
|
67
|
+
*/
|
|
68
|
+
pki$1.privateKeyFromPem = function (pem) {
|
|
69
|
+
var msg = forge.pem.decode(pem)[0];
|
|
70
|
+
if (msg.type !== 'PRIVATE KEY' && msg.type !== 'RSA PRIVATE KEY') {
|
|
71
|
+
var error = new Error('Could not convert private key from PEM; PEM ' + 'header type is not "PRIVATE KEY" or "RSA PRIVATE KEY".');
|
|
72
|
+
error.headerType = msg.type;
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
if (msg.procType && msg.procType.type === 'ENCRYPTED') {
|
|
76
|
+
throw new Error('Could not convert private key from PEM; PEM is encrypted.');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// convert DER to ASN.1 object
|
|
80
|
+
var obj = asn1.fromDer(msg.body);
|
|
81
|
+
return pki$1.privateKeyFromAsn1(obj);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Converts an RSA private key to PEM format.
|
|
86
|
+
*
|
|
87
|
+
* @param key the private key.
|
|
88
|
+
* @param maxline the maximum characters per line, defaults to 64.
|
|
89
|
+
*
|
|
90
|
+
* @return the PEM-formatted private key.
|
|
91
|
+
*/
|
|
92
|
+
pki$1.privateKeyToPem = function (key, maxline) {
|
|
93
|
+
// convert to ASN.1, then DER, then PEM-encode
|
|
94
|
+
var msg = {
|
|
95
|
+
type: 'RSA PRIVATE KEY',
|
|
96
|
+
body: asn1.toDer(pki$1.privateKeyToAsn1(key)).getBytes()
|
|
97
|
+
};
|
|
98
|
+
return forge.pem.encode(msg, {
|
|
99
|
+
maxline: maxline
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Converts a PrivateKeyInfo to PEM format.
|
|
105
|
+
*
|
|
106
|
+
* @param pki the PrivateKeyInfo.
|
|
107
|
+
* @param maxline the maximum characters per line, defaults to 64.
|
|
108
|
+
*
|
|
109
|
+
* @return the PEM-formatted private key.
|
|
110
|
+
*/
|
|
111
|
+
pki$1.privateKeyInfoToPem = function (pki, maxline) {
|
|
112
|
+
// convert to DER, then PEM-encode
|
|
113
|
+
var msg = {
|
|
114
|
+
type: 'PRIVATE KEY',
|
|
115
|
+
body: asn1.toDer(pki).getBytes()
|
|
116
|
+
};
|
|
117
|
+
return forge.pem.encode(msg, {
|
|
118
|
+
maxline: maxline
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
return pki.exports;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export { requirePki as __require };
|
|
125
|
+
//# sourceMappingURL=pki.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pki.js","sources":["../../../../node_modules/node-forge/lib/pki.js"],"sourcesContent":["/**\n * Javascript implementation of a basic Public Key Infrastructure, including\n * support for RSA public and private keys.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./oids');\nrequire('./pbe');\nrequire('./pem');\nrequire('./pbkdf2');\nrequire('./pkcs12');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED. Use pem.decode() instead.\n *\n * Converts PEM-formatted data to DER.\n *\n * @param pem the PEM-formatted data.\n *\n * @return the DER-formatted data.\n */\npki.pemToDer = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert PEM to DER; PEM is encrypted.');\n }\n return forge.util.createBuffer(msg.body);\n};\n\n/**\n * Converts an RSA private key from PEM format.\n *\n * @param pem the PEM-formatted private key.\n *\n * @return the private key.\n */\npki.privateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PRIVATE KEY' && msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM ' +\n 'header type is not \"PRIVATE KEY\" or \"RSA PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert private key from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return pki.privateKeyFromAsn1(obj);\n};\n\n/**\n * Converts an RSA private key to PEM format.\n *\n * @param key the private key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyToPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'RSA PRIVATE KEY',\n body: asn1.toDer(pki.privateKeyToAsn1(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PrivateKeyInfo to PEM format.\n *\n * @param pki the PrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyInfoToPem = function(pki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'PRIVATE KEY',\n body: asn1.toDer(pki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n"],"names":["forge","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","asn1","pki","pkiModule","exports","pemToDer","pem","msg","decode","procType","type","Error","util","createBuffer","body","privateKeyFromPem","error","headerType","obj","fromDer","privateKeyFromAsn1","privateKeyToPem","key","maxline","toDer","privateKeyToAsn1","getBytes","encode","privateKeyInfoToPem"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { __module as prime } from '../../../_virtual/prime.js';
|
|
2
|
+
import { __require as requireForge } from './forge.js';
|
|
3
|
+
import { __require as requireUtil } from './util.js';
|
|
4
|
+
import { __require as requireJsbn } from './jsbn.js';
|
|
5
|
+
import { __require as requireRandom } from './random.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Prime number generation API.
|
|
9
|
+
*
|
|
10
|
+
* @author Dave Longley
|
|
11
|
+
*
|
|
12
|
+
* Copyright (c) 2014 Digital Bazaar, Inc.
|
|
13
|
+
*/
|
|
14
|
+
var hasRequiredPrime;
|
|
15
|
+
function requirePrime() {
|
|
16
|
+
if (hasRequiredPrime) return prime.exports;
|
|
17
|
+
hasRequiredPrime = 1;
|
|
18
|
+
var forge = requireForge();
|
|
19
|
+
requireUtil();
|
|
20
|
+
requireJsbn();
|
|
21
|
+
requireRandom();
|
|
22
|
+
(function () {
|
|
23
|
+
// forge.prime already defined
|
|
24
|
+
if (forge.prime) {
|
|
25
|
+
prime.exports = forge.prime;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/* PRIME API */
|
|
30
|
+
var prime$1 = prime.exports = forge.prime = forge.prime || {};
|
|
31
|
+
var BigInteger = forge.jsbn.BigInteger;
|
|
32
|
+
|
|
33
|
+
// primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29
|
|
34
|
+
var GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];
|
|
35
|
+
var THIRTY = new BigInteger(null);
|
|
36
|
+
THIRTY.fromInt(30);
|
|
37
|
+
var op_or = function (x, y) {
|
|
38
|
+
return x | y;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Generates a random probable prime with the given number of bits.
|
|
43
|
+
*
|
|
44
|
+
* Alternative algorithms can be specified by name as a string or as an
|
|
45
|
+
* object with custom options like so:
|
|
46
|
+
*
|
|
47
|
+
* {
|
|
48
|
+
* name: 'PRIMEINC',
|
|
49
|
+
* options: {
|
|
50
|
+
* maxBlockTime: <the maximum amount of time to block the main
|
|
51
|
+
* thread before allowing I/O other JS to run>,
|
|
52
|
+
* millerRabinTests: <the number of miller-rabin tests to run>,
|
|
53
|
+
* workerScript: <the worker script URL>,
|
|
54
|
+
* workers: <the number of web workers (if supported) to use,
|
|
55
|
+
* -1 to use estimated cores minus one>.
|
|
56
|
+
* workLoad: the size of the work load, ie: number of possible prime
|
|
57
|
+
* numbers for each web worker to check per work assignment,
|
|
58
|
+
* (default: 100).
|
|
59
|
+
* }
|
|
60
|
+
* }
|
|
61
|
+
*
|
|
62
|
+
* @param bits the number of bits for the prime number.
|
|
63
|
+
* @param options the options to use.
|
|
64
|
+
* [algorithm] the algorithm to use (default: 'PRIMEINC').
|
|
65
|
+
* [prng] a custom crypto-secure pseudo-random number generator to use,
|
|
66
|
+
* that must define "getBytesSync".
|
|
67
|
+
*
|
|
68
|
+
* @return callback(err, num) called once the operation completes.
|
|
69
|
+
*/
|
|
70
|
+
prime$1.generateProbablePrime = function (bits, options, callback) {
|
|
71
|
+
if (typeof options === 'function') {
|
|
72
|
+
callback = options;
|
|
73
|
+
options = {};
|
|
74
|
+
}
|
|
75
|
+
options = options || {};
|
|
76
|
+
|
|
77
|
+
// default to PRIMEINC algorithm
|
|
78
|
+
var algorithm = options.algorithm || 'PRIMEINC';
|
|
79
|
+
if (typeof algorithm === 'string') {
|
|
80
|
+
algorithm = {
|
|
81
|
+
name: algorithm
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
algorithm.options = algorithm.options || {};
|
|
85
|
+
|
|
86
|
+
// create prng with api that matches BigInteger secure random
|
|
87
|
+
var prng = options.prng || forge.random;
|
|
88
|
+
var rng = {
|
|
89
|
+
// x is an array to fill with bytes
|
|
90
|
+
nextBytes: function (x) {
|
|
91
|
+
var b = prng.getBytesSync(x.length);
|
|
92
|
+
for (var i = 0; i < x.length; ++i) {
|
|
93
|
+
x[i] = b.charCodeAt(i);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
if (algorithm.name === 'PRIMEINC') {
|
|
98
|
+
return primeincFindPrime(bits, rng, algorithm.options, callback);
|
|
99
|
+
}
|
|
100
|
+
throw new Error('Invalid prime generation algorithm: ' + algorithm.name);
|
|
101
|
+
};
|
|
102
|
+
function primeincFindPrime(bits, rng, options, callback) {
|
|
103
|
+
if ('workers' in options) {
|
|
104
|
+
return primeincFindPrimeWithWorkers(bits, rng, options, callback);
|
|
105
|
+
}
|
|
106
|
+
return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);
|
|
107
|
+
}
|
|
108
|
+
function primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {
|
|
109
|
+
// initialize random number
|
|
110
|
+
var num = generateRandom(bits, rng);
|
|
111
|
+
|
|
112
|
+
/* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The
|
|
113
|
+
number we are given is always aligned at 30k + 1. Each time the number is
|
|
114
|
+
determined not to be prime we add to get to the next 'i', eg: if the number
|
|
115
|
+
was at 30k + 1 we add 6. */
|
|
116
|
+
var deltaIdx = 0;
|
|
117
|
+
|
|
118
|
+
// get required number of MR tests
|
|
119
|
+
var mrTests = getMillerRabinTests(num.bitLength());
|
|
120
|
+
if ('millerRabinTests' in options) {
|
|
121
|
+
mrTests = options.millerRabinTests;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// find prime nearest to 'num' for maxBlockTime ms
|
|
125
|
+
// 10 ms gives 5ms of leeway for other calculations before dropping
|
|
126
|
+
// below 60fps (1000/60 == 16.67), but in reality, the number will
|
|
127
|
+
// likely be higher due to an 'atomic' big int modPow
|
|
128
|
+
var maxBlockTime = 10;
|
|
129
|
+
if ('maxBlockTime' in options) {
|
|
130
|
+
maxBlockTime = options.maxBlockTime;
|
|
131
|
+
}
|
|
132
|
+
_primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);
|
|
133
|
+
}
|
|
134
|
+
function _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {
|
|
135
|
+
var start = +new Date();
|
|
136
|
+
do {
|
|
137
|
+
// overflow, regenerate random number
|
|
138
|
+
if (num.bitLength() > bits) {
|
|
139
|
+
num = generateRandom(bits, rng);
|
|
140
|
+
}
|
|
141
|
+
// do primality test
|
|
142
|
+
if (num.isProbablePrime(mrTests)) {
|
|
143
|
+
return callback(null, num);
|
|
144
|
+
}
|
|
145
|
+
// get next potential prime
|
|
146
|
+
num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);
|
|
147
|
+
} while (maxBlockTime < 0 || +new Date() - start < maxBlockTime);
|
|
148
|
+
|
|
149
|
+
// keep trying later
|
|
150
|
+
forge.util.setImmediate(function () {
|
|
151
|
+
_primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// NOTE: This algorithm is indeterminate in nature because workers
|
|
156
|
+
// run in parallel looking at different segments of numbers. Even if this
|
|
157
|
+
// algorithm is run twice with the same input from a predictable RNG, it
|
|
158
|
+
// may produce different outputs.
|
|
159
|
+
function primeincFindPrimeWithWorkers(bits, rng, options, callback) {
|
|
160
|
+
// web workers unavailable
|
|
161
|
+
if (typeof Worker === 'undefined') {
|
|
162
|
+
return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// initialize random number
|
|
166
|
+
var num = generateRandom(bits, rng);
|
|
167
|
+
|
|
168
|
+
// use web workers to generate keys
|
|
169
|
+
var numWorkers = options.workers;
|
|
170
|
+
var workLoad = options.workLoad || 100;
|
|
171
|
+
var range = workLoad * 30 / 8;
|
|
172
|
+
var workerScript = options.workerScript || 'forge/prime.worker.js';
|
|
173
|
+
if (numWorkers === -1) {
|
|
174
|
+
return forge.util.estimateCores(function (err, cores) {
|
|
175
|
+
if (err) {
|
|
176
|
+
// default to 2
|
|
177
|
+
cores = 2;
|
|
178
|
+
}
|
|
179
|
+
numWorkers = cores - 1;
|
|
180
|
+
generate();
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
generate();
|
|
184
|
+
function generate() {
|
|
185
|
+
// require at least 1 worker
|
|
186
|
+
numWorkers = Math.max(1, numWorkers);
|
|
187
|
+
|
|
188
|
+
// TODO: consider optimizing by starting workers outside getPrime() ...
|
|
189
|
+
// note that in order to clean up they will have to be made internally
|
|
190
|
+
// asynchronous which may actually be slower
|
|
191
|
+
|
|
192
|
+
// start workers immediately
|
|
193
|
+
var workers = [];
|
|
194
|
+
for (var i = 0; i < numWorkers; ++i) {
|
|
195
|
+
// FIXME: fix path or use blob URLs
|
|
196
|
+
workers[i] = new Worker(workerScript);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// listen for requests from workers and assign ranges to find prime
|
|
200
|
+
for (var i = 0; i < numWorkers; ++i) {
|
|
201
|
+
workers[i].addEventListener('message', workerMessage);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/* Note: The distribution of random numbers is unknown. Therefore, each
|
|
205
|
+
web worker is continuously allocated a range of numbers to check for a
|
|
206
|
+
random number until one is found.
|
|
207
|
+
Every 30 numbers will be checked just 8 times, because prime numbers
|
|
208
|
+
have the form:
|
|
209
|
+
30k+i, for i < 30 and gcd(30, i)=1 (there are 8 values of i for this)
|
|
210
|
+
Therefore, if we want a web worker to run N checks before asking for
|
|
211
|
+
a new range of numbers, each range must contain N*30/8 numbers.
|
|
212
|
+
For 100 checks (workLoad), this is a range of 375. */
|
|
213
|
+
|
|
214
|
+
var found = false;
|
|
215
|
+
function workerMessage(e) {
|
|
216
|
+
// ignore message, prime already found
|
|
217
|
+
if (found) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
var data = e.data;
|
|
221
|
+
if (data.found) {
|
|
222
|
+
// terminate all workers
|
|
223
|
+
for (var i = 0; i < workers.length; ++i) {
|
|
224
|
+
workers[i].terminate();
|
|
225
|
+
}
|
|
226
|
+
found = true;
|
|
227
|
+
return callback(null, new BigInteger(data.prime, 16));
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// overflow, regenerate random number
|
|
231
|
+
if (num.bitLength() > bits) {
|
|
232
|
+
num = generateRandom(bits, rng);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// assign new range to check
|
|
236
|
+
var hex = num.toString(16);
|
|
237
|
+
|
|
238
|
+
// start prime search
|
|
239
|
+
e.target.postMessage({
|
|
240
|
+
hex: hex,
|
|
241
|
+
workLoad: workLoad
|
|
242
|
+
});
|
|
243
|
+
num.dAddOffset(range, 0);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Generates a random number using the given number of bits and RNG.
|
|
250
|
+
*
|
|
251
|
+
* @param bits the number of bits for the number.
|
|
252
|
+
* @param rng the random number generator to use.
|
|
253
|
+
*
|
|
254
|
+
* @return the random number.
|
|
255
|
+
*/
|
|
256
|
+
function generateRandom(bits, rng) {
|
|
257
|
+
var num = new BigInteger(bits, rng);
|
|
258
|
+
// force MSB set
|
|
259
|
+
var bits1 = bits - 1;
|
|
260
|
+
if (!num.testBit(bits1)) {
|
|
261
|
+
num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num);
|
|
262
|
+
}
|
|
263
|
+
// align number on 30k+1 boundary
|
|
264
|
+
num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0);
|
|
265
|
+
return num;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Returns the required number of Miller-Rabin tests to generate a
|
|
270
|
+
* prime with an error probability of (1/2)^80.
|
|
271
|
+
*
|
|
272
|
+
* See Handbook of Applied Cryptography Chapter 4, Table 4.4.
|
|
273
|
+
*
|
|
274
|
+
* @param bits the bit size.
|
|
275
|
+
*
|
|
276
|
+
* @return the required number of iterations.
|
|
277
|
+
*/
|
|
278
|
+
function getMillerRabinTests(bits) {
|
|
279
|
+
if (bits <= 100) return 27;
|
|
280
|
+
if (bits <= 150) return 18;
|
|
281
|
+
if (bits <= 200) return 15;
|
|
282
|
+
if (bits <= 250) return 12;
|
|
283
|
+
if (bits <= 300) return 9;
|
|
284
|
+
if (bits <= 350) return 8;
|
|
285
|
+
if (bits <= 400) return 7;
|
|
286
|
+
if (bits <= 500) return 6;
|
|
287
|
+
if (bits <= 600) return 5;
|
|
288
|
+
if (bits <= 800) return 4;
|
|
289
|
+
if (bits <= 1250) return 3;
|
|
290
|
+
return 2;
|
|
291
|
+
}
|
|
292
|
+
})();
|
|
293
|
+
return prime.exports;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export { requirePrime as __require };
|
|
297
|
+
//# sourceMappingURL=prime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prime.js","sources":["../../../../node_modules/node-forge/lib/prime.js"],"sourcesContent":["/**\n * Prime number generation API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./jsbn');\nrequire('./random');\n\n(function() {\n\n// forge.prime already defined\nif(forge.prime) {\n module.exports = forge.prime;\n return;\n}\n\n/* PRIME API */\nvar prime = module.exports = forge.prime = forge.prime || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n// primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\nvar THIRTY = new BigInteger(null);\nTHIRTY.fromInt(30);\nvar op_or = function(x, y) {return x|y;};\n\n/**\n * Generates a random probable prime with the given number of bits.\n *\n * Alternative algorithms can be specified by name as a string or as an\n * object with custom options like so:\n *\n * {\n * name: 'PRIMEINC',\n * options: {\n * maxBlockTime: <the maximum amount of time to block the main\n * thread before allowing I/O other JS to run>,\n * millerRabinTests: <the number of miller-rabin tests to run>,\n * workerScript: <the worker script URL>,\n * workers: <the number of web workers (if supported) to use,\n * -1 to use estimated cores minus one>.\n * workLoad: the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * }\n * }\n *\n * @param bits the number of bits for the prime number.\n * @param options the options to use.\n * [algorithm] the algorithm to use (default: 'PRIMEINC').\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n *\n * @return callback(err, num) called once the operation completes.\n */\nprime.generateProbablePrime = function(bits, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // default to PRIMEINC algorithm\n var algorithm = options.algorithm || 'PRIMEINC';\n if(typeof algorithm === 'string') {\n algorithm = {name: algorithm};\n }\n algorithm.options = algorithm.options || {};\n\n // create prng with api that matches BigInteger secure random\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n if(algorithm.name === 'PRIMEINC') {\n return primeincFindPrime(bits, rng, algorithm.options, callback);\n }\n\n throw new Error('Invalid prime generation algorithm: ' + algorithm.name);\n};\n\nfunction primeincFindPrime(bits, rng, options, callback) {\n if('workers' in options) {\n return primeincFindPrimeWithWorkers(bits, rng, options, callback);\n }\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n}\n\nfunction primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {\n // initialize random number\n var num = generateRandom(bits, rng);\n\n /* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The\n number we are given is always aligned at 30k + 1. Each time the number is\n determined not to be prime we add to get to the next 'i', eg: if the number\n was at 30k + 1 we add 6. */\n var deltaIdx = 0;\n\n // get required number of MR tests\n var mrTests = getMillerRabinTests(num.bitLength());\n if('millerRabinTests' in options) {\n mrTests = options.millerRabinTests;\n }\n\n // find prime nearest to 'num' for maxBlockTime ms\n // 10 ms gives 5ms of leeway for other calculations before dropping\n // below 60fps (1000/60 == 16.67), but in reality, the number will\n // likely be higher due to an 'atomic' big int modPow\n var maxBlockTime = 10;\n if('maxBlockTime' in options) {\n maxBlockTime = options.maxBlockTime;\n }\n\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n}\n\nfunction _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {\n var start = +new Date();\n do {\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n // do primality test\n if(num.isProbablePrime(mrTests)) {\n return callback(null, num);\n }\n // get next potential prime\n num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n } while(maxBlockTime < 0 || (+new Date() - start < maxBlockTime));\n\n // keep trying later\n forge.util.setImmediate(function() {\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n });\n}\n\n// NOTE: This algorithm is indeterminate in nature because workers\n// run in parallel looking at different segments of numbers. Even if this\n// algorithm is run twice with the same input from a predictable RNG, it\n// may produce different outputs.\nfunction primeincFindPrimeWithWorkers(bits, rng, options, callback) {\n // web workers unavailable\n if(typeof Worker === 'undefined') {\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n }\n\n // initialize random number\n var num = generateRandom(bits, rng);\n\n // use web workers to generate keys\n var numWorkers = options.workers;\n var workLoad = options.workLoad || 100;\n var range = workLoad * 30 / 8;\n var workerScript = options.workerScript || 'forge/prime.worker.js';\n if(numWorkers === -1) {\n return forge.util.estimateCores(function(err, cores) {\n if(err) {\n // default to 2\n cores = 2;\n }\n numWorkers = cores - 1;\n generate();\n });\n }\n generate();\n\n function generate() {\n // require at least 1 worker\n numWorkers = Math.max(1, numWorkers);\n\n // TODO: consider optimizing by starting workers outside getPrime() ...\n // note that in order to clean up they will have to be made internally\n // asynchronous which may actually be slower\n\n // start workers immediately\n var workers = [];\n for(var i = 0; i < numWorkers; ++i) {\n // FIXME: fix path or use blob URLs\n workers[i] = new Worker(workerScript);\n }\n var running = numWorkers;\n\n // listen for requests from workers and assign ranges to find prime\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].addEventListener('message', workerMessage);\n }\n\n /* Note: The distribution of random numbers is unknown. Therefore, each\n web worker is continuously allocated a range of numbers to check for a\n random number until one is found.\n\n Every 30 numbers will be checked just 8 times, because prime numbers\n have the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1 (there are 8 values of i for this)\n\n Therefore, if we want a web worker to run N checks before asking for\n a new range of numbers, each range must contain N*30/8 numbers.\n\n For 100 checks (workLoad), this is a range of 375. */\n\n var found = false;\n function workerMessage(e) {\n // ignore message, prime already found\n if(found) {\n return;\n }\n\n --running;\n var data = e.data;\n if(data.found) {\n // terminate all workers\n for(var i = 0; i < workers.length; ++i) {\n workers[i].terminate();\n }\n found = true;\n return callback(null, new BigInteger(data.prime, 16));\n }\n\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n\n // assign new range to check\n var hex = num.toString(16);\n\n // start prime search\n e.target.postMessage({\n hex: hex,\n workLoad: workLoad\n });\n\n num.dAddOffset(range, 0);\n }\n }\n}\n\n/**\n * Generates a random number using the given number of bits and RNG.\n *\n * @param bits the number of bits for the number.\n * @param rng the random number generator to use.\n *\n * @return the random number.\n */\nfunction generateRandom(bits, rng) {\n var num = new BigInteger(bits, rng);\n // force MSB set\n var bits1 = bits - 1;\n if(!num.testBit(bits1)) {\n num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num);\n }\n // align number on 30k+1 boundary\n num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0);\n return num;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n})();\n"],"names":["forge","require$$0","require$$1","require$$2","require$$3","prime","primeModule","exports","BigInteger","jsbn","GCD_30_DELTA","THIRTY","fromInt","op_or","x","y","generateProbablePrime","bits","options","callback","algorithm","name","prng","random","rng","nextBytes","b","getBytesSync","length","i","charCodeAt","primeincFindPrime","Error","primeincFindPrimeWithWorkers","primeincFindPrimeWithoutWorkers","num","generateRandom","deltaIdx","mrTests","getMillerRabinTests","bitLength","millerRabinTests","maxBlockTime","_primeinc","start","Date","isProbablePrime","dAddOffset","util","setImmediate","Worker","numWorkers","workers","workLoad","range","workerScript","estimateCores","err","cores","generate","Math","max","addEventListener","workerMessage","found","e","data","terminate","hex","toString","target","postMessage","bits1","testBit","bitwiseTo","ONE","shiftLeft","mod","byteValue"],"mappings":"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","x_google_ignoreList":[0]}
|