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.
Files changed (208) hide show
  1. package/lib/_virtual/aesCipherSuites.js +4 -0
  2. package/lib/_virtual/aesCipherSuites.js.map +1 -0
  3. package/lib/_virtual/asn1-validator.js +4 -0
  4. package/lib/_virtual/asn1-validator.js.map +1 -0
  5. package/lib/_virtual/asn1.js +4 -0
  6. package/lib/_virtual/asn1.js.map +1 -0
  7. package/lib/_virtual/cipherModes.js +4 -0
  8. package/lib/_virtual/cipherModes.js.map +1 -0
  9. package/lib/_virtual/hmac.js +4 -0
  10. package/lib/_virtual/hmac.js.map +1 -0
  11. package/lib/_virtual/index11.js +2 -2
  12. package/lib/_virtual/index12.js +2 -2
  13. package/lib/_virtual/index13.js +2 -2
  14. package/lib/_virtual/index14.js +4 -0
  15. package/lib/_virtual/index14.js.map +1 -0
  16. package/lib/_virtual/index2.js +5 -3
  17. package/lib/_virtual/index2.js.map +1 -1
  18. package/lib/_virtual/index3.js +4 -2
  19. package/lib/_virtual/index3.js.map +1 -1
  20. package/lib/_virtual/index4.js +2 -4
  21. package/lib/_virtual/index4.js.map +1 -1
  22. package/lib/_virtual/index5.js +4 -2
  23. package/lib/_virtual/index5.js.map +1 -1
  24. package/lib/_virtual/index6.js +2 -2
  25. package/lib/_virtual/index7.js +2 -6
  26. package/lib/_virtual/index7.js.map +1 -1
  27. package/lib/_virtual/index8.js +6 -2
  28. package/lib/_virtual/index8.js.map +1 -1
  29. package/lib/_virtual/index9.js +2 -2
  30. package/lib/_virtual/md5.js +4 -0
  31. package/lib/_virtual/md5.js.map +1 -0
  32. package/lib/_virtual/mgf1.js +4 -0
  33. package/lib/_virtual/mgf1.js.map +1 -0
  34. package/lib/_virtual/oids.js +4 -0
  35. package/lib/_virtual/oids.js.map +1 -0
  36. package/lib/_virtual/pem.js +4 -0
  37. package/lib/_virtual/pem.js.map +1 -0
  38. package/lib/_virtual/pkcs1.js +4 -0
  39. package/lib/_virtual/pkcs1.js.map +1 -0
  40. package/lib/_virtual/pkcs12.js +4 -0
  41. package/lib/_virtual/pkcs12.js.map +1 -0
  42. package/lib/_virtual/pkcs7.js +4 -0
  43. package/lib/_virtual/pkcs7.js.map +1 -0
  44. package/lib/_virtual/pkcs7asn1.js +4 -0
  45. package/lib/_virtual/pkcs7asn1.js.map +1 -0
  46. package/lib/_virtual/pki.js +4 -0
  47. package/lib/_virtual/pki.js.map +1 -0
  48. package/lib/_virtual/prime.js +4 -0
  49. package/lib/_virtual/prime.js.map +1 -0
  50. package/lib/_virtual/prng.js +4 -0
  51. package/lib/_virtual/prng.js.map +1 -0
  52. package/lib/_virtual/pss.js +4 -0
  53. package/lib/_virtual/pss.js.map +1 -0
  54. package/lib/_virtual/random.js +4 -0
  55. package/lib/_virtual/random.js.map +1 -0
  56. package/lib/_virtual/sha1.js +4 -0
  57. package/lib/_virtual/sha1.js.map +1 -0
  58. package/lib/_virtual/sha256.js +4 -0
  59. package/lib/_virtual/sha256.js.map +1 -0
  60. package/lib/_virtual/sha512.js +4 -0
  61. package/lib/_virtual/sha512.js.map +1 -0
  62. package/lib/_virtual/ssh.js +4 -0
  63. package/lib/_virtual/ssh.js.map +1 -0
  64. package/lib/_virtual/util.js +4 -0
  65. package/lib/_virtual/util.js.map +1 -0
  66. package/lib/_virtual/x509.js +4 -0
  67. package/lib/_virtual/x509.js.map +1 -0
  68. package/lib/assets/icons/testify_icon.svg.js +6 -0
  69. package/lib/assets/icons/testify_icon.svg.js.map +1 -0
  70. package/lib/assets/icons/testify_loader.svg.js +6 -0
  71. package/lib/assets/icons/testify_loader.svg.js.map +1 -0
  72. package/lib/assets/icons/testify_logo_name.svg.js +6 -0
  73. package/lib/assets/icons/testify_logo_name.svg.js.map +1 -0
  74. package/lib/components/AllProjectsDropdown/AllProjectsDropdown.js +3 -1
  75. package/lib/components/AllProjectsDropdown/AllProjectsDropdown.js.map +1 -1
  76. package/lib/components/Charts/DashboardDonutChart/DashboardDonutChart.js +2 -9
  77. package/lib/components/Charts/DashboardDonutChart/DashboardDonutChart.js.map +1 -1
  78. package/lib/components/Charts/DashboardDonutChart/types.d.ts +1 -1
  79. package/lib/components/ConditionalDropdown/ConditionalDropdown.js +2 -9
  80. package/lib/components/ConditionalDropdown/ConditionalDropdown.js.map +1 -1
  81. package/lib/components/Editor/Editor.js +37 -17
  82. package/lib/components/Editor/Editor.js.map +1 -1
  83. package/lib/components/Icon/iconList.js +6 -0
  84. package/lib/components/Icon/iconList.js.map +1 -1
  85. package/lib/components/MultiSelect/MultiSelect.js +9 -10
  86. package/lib/components/MultiSelect/MultiSelect.js.map +1 -1
  87. package/lib/components/PhoneInput/PhoneInput.js +1 -0
  88. package/lib/components/PhoneInput/PhoneInput.js.map +1 -1
  89. package/lib/components/SessionDropdown/SessionDropdown.js +4 -2
  90. package/lib/components/SessionDropdown/SessionDropdown.js.map +1 -1
  91. package/lib/index.cjs +27423 -379
  92. package/lib/index.cjs.map +1 -1
  93. package/lib/index.d.ts +1 -1
  94. package/lib/node_modules/classnames/index.js +1 -1
  95. package/lib/node_modules/input-format/modules/react/Input.js +1 -1
  96. package/lib/node_modules/js-beautify/js/index.js +1 -1
  97. package/lib/node_modules/js-beautify/js/src/html/beautifier.js +1 -1
  98. package/lib/node_modules/js-beautify/js/src/html/index.js +1 -1
  99. package/lib/node_modules/js-beautify/js/src/html/options.js +1 -1
  100. package/lib/node_modules/js-beautify/js/src/html/tokenizer.js +1 -1
  101. package/lib/node_modules/js-beautify/js/src/index.js +1 -1
  102. package/lib/node_modules/js-beautify/js/src/javascript/beautifier.js +1 -1
  103. package/lib/node_modules/js-beautify/js/src/javascript/index.js +1 -1
  104. package/lib/node_modules/js-beautify/js/src/javascript/options.js +1 -1
  105. package/lib/node_modules/js-beautify/js/src/javascript/tokenizer.js +1 -1
  106. package/lib/node_modules/node-forge/lib/aes.js +1014 -0
  107. package/lib/node_modules/node-forge/lib/aes.js.map +1 -0
  108. package/lib/node_modules/node-forge/lib/aesCipherSuites.js +286 -0
  109. package/lib/node_modules/node-forge/lib/aesCipherSuites.js.map +1 -0
  110. package/lib/node_modules/node-forge/lib/asn1-validator.js +100 -0
  111. package/lib/node_modules/node-forge/lib/asn1-validator.js.map +1 -0
  112. package/lib/node_modules/node-forge/lib/asn1.js +1379 -0
  113. package/lib/node_modules/node-forge/lib/asn1.js.map +1 -0
  114. package/lib/node_modules/node-forge/lib/baseN.js +181 -0
  115. package/lib/node_modules/node-forge/lib/baseN.js.map +1 -0
  116. package/lib/node_modules/node-forge/lib/cipher.js +236 -0
  117. package/lib/node_modules/node-forge/lib/cipher.js.map +1 -0
  118. package/lib/node_modules/node-forge/lib/cipherModes.js +936 -0
  119. package/lib/node_modules/node-forge/lib/cipherModes.js.map +1 -0
  120. package/lib/node_modules/node-forge/lib/des.js +467 -0
  121. package/lib/node_modules/node-forge/lib/des.js.map +1 -0
  122. package/lib/node_modules/node-forge/lib/ed25519.js +1108 -0
  123. package/lib/node_modules/node-forge/lib/ed25519.js.map +1 -0
  124. package/lib/node_modules/node-forge/lib/forge.js +23 -0
  125. package/lib/node_modules/node-forge/lib/forge.js.map +1 -0
  126. package/lib/node_modules/node-forge/lib/hmac.js +158 -0
  127. package/lib/node_modules/node-forge/lib/hmac.js.map +1 -0
  128. package/lib/node_modules/node-forge/lib/index.js +70 -0
  129. package/lib/node_modules/node-forge/lib/index.js.map +1 -0
  130. package/lib/node_modules/node-forge/lib/jsbn.js +1481 -0
  131. package/lib/node_modules/node-forge/lib/jsbn.js.map +1 -0
  132. package/lib/node_modules/node-forge/lib/kem.js +178 -0
  133. package/lib/node_modules/node-forge/lib/kem.js.map +1 -0
  134. package/lib/node_modules/node-forge/lib/log.js +325 -0
  135. package/lib/node_modules/node-forge/lib/log.js.map +1 -0
  136. package/lib/node_modules/node-forge/lib/md.all.js +28 -0
  137. package/lib/node_modules/node-forge/lib/md.all.js.map +1 -0
  138. package/lib/node_modules/node-forge/lib/md.js +22 -0
  139. package/lib/node_modules/node-forge/lib/md.js.map +1 -0
  140. package/lib/node_modules/node-forge/lib/md5.js +288 -0
  141. package/lib/node_modules/node-forge/lib/md5.js.map +1 -0
  142. package/lib/node_modules/node-forge/lib/mgf.js +24 -0
  143. package/lib/node_modules/node-forge/lib/mgf.js.map +1 -0
  144. package/lib/node_modules/node-forge/lib/mgf1.js +68 -0
  145. package/lib/node_modules/node-forge/lib/mgf1.js.map +1 -0
  146. package/lib/node_modules/node-forge/lib/oids.js +185 -0
  147. package/lib/node_modules/node-forge/lib/oids.js.map +1 -0
  148. package/lib/node_modules/node-forge/lib/pbe.js +966 -0
  149. package/lib/node_modules/node-forge/lib/pbe.js.map +1 -0
  150. package/lib/node_modules/node-forge/lib/pbkdf2.js +209 -0
  151. package/lib/node_modules/node-forge/lib/pbkdf2.js.map +1 -0
  152. package/lib/node_modules/node-forge/lib/pem.js +250 -0
  153. package/lib/node_modules/node-forge/lib/pem.js.map +1 -0
  154. package/lib/node_modules/node-forge/lib/pkcs1.js +273 -0
  155. package/lib/node_modules/node-forge/lib/pkcs1.js.map +1 -0
  156. package/lib/node_modules/node-forge/lib/pkcs12.js +980 -0
  157. package/lib/node_modules/node-forge/lib/pkcs12.js.map +1 -0
  158. package/lib/node_modules/node-forge/lib/pkcs7.js +1073 -0
  159. package/lib/node_modules/node-forge/lib/pkcs7.js.map +1 -0
  160. package/lib/node_modules/node-forge/lib/pkcs7asn1.js +415 -0
  161. package/lib/node_modules/node-forge/lib/pkcs7asn1.js.map +1 -0
  162. package/lib/node_modules/node-forge/lib/pki.js +125 -0
  163. package/lib/node_modules/node-forge/lib/pki.js.map +1 -0
  164. package/lib/node_modules/node-forge/lib/prime.js +297 -0
  165. package/lib/node_modules/node-forge/lib/prime.js.map +1 -0
  166. package/lib/node_modules/node-forge/lib/prng.js +433 -0
  167. package/lib/node_modules/node-forge/lib/prng.js.map +1 -0
  168. package/lib/node_modules/node-forge/lib/pss.js +246 -0
  169. package/lib/node_modules/node-forge/lib/pss.js.map +1 -0
  170. package/lib/node_modules/node-forge/lib/random.js +191 -0
  171. package/lib/node_modules/node-forge/lib/random.js.map +1 -0
  172. package/lib/node_modules/node-forge/lib/rc2.js +382 -0
  173. package/lib/node_modules/node-forge/lib/rc2.js.map +1 -0
  174. package/lib/node_modules/node-forge/lib/rsa.js +1815 -0
  175. package/lib/node_modules/node-forge/lib/rsa.js.map +1 -0
  176. package/lib/node_modules/node-forge/lib/sha1.js +325 -0
  177. package/lib/node_modules/node-forge/lib/sha1.js.map +1 -0
  178. package/lib/node_modules/node-forge/lib/sha256.js +306 -0
  179. package/lib/node_modules/node-forge/lib/sha256.js.map +1 -0
  180. package/lib/node_modules/node-forge/lib/sha512.js +479 -0
  181. package/lib/node_modules/node-forge/lib/sha512.js.map +1 -0
  182. package/lib/node_modules/node-forge/lib/ssh.js +244 -0
  183. package/lib/node_modules/node-forge/lib/ssh.js.map +1 -0
  184. package/lib/node_modules/node-forge/lib/tls.js +4207 -0
  185. package/lib/node_modules/node-forge/lib/tls.js.map +1 -0
  186. package/lib/node_modules/node-forge/lib/util.js +2565 -0
  187. package/lib/node_modules/node-forge/lib/util.js.map +1 -0
  188. package/lib/node_modules/node-forge/lib/x509.js +2986 -0
  189. package/lib/node_modules/node-forge/lib/x509.js.map +1 -0
  190. package/lib/node_modules/prop-types/index.js +1 -1
  191. package/lib/node_modules/react-async-script/lib/esm/async-script-loader.js +1 -1
  192. package/lib/node_modules/react-google-recaptcha/lib/esm/recaptcha.js +1 -1
  193. package/lib/node_modules/react-is/index.js +1 -1
  194. package/lib/node_modules/react-phone-number-input/modules/CountryIcon.js +1 -1
  195. package/lib/node_modules/react-phone-number-input/modules/CountrySelect.js +1 -1
  196. package/lib/node_modules/react-phone-number-input/modules/Flag.js +1 -1
  197. package/lib/node_modules/react-phone-number-input/modules/InputBasic.js +1 -1
  198. package/lib/node_modules/react-phone-number-input/modules/InputSmart.js +1 -1
  199. package/lib/node_modules/react-phone-number-input/modules/InternationalIcon.js +1 -1
  200. package/lib/node_modules/react-phone-number-input/modules/PhoneInputWithCountry.js +1 -1
  201. package/lib/node_modules/react-phone-number-input/modules/PropTypes.js +1 -1
  202. package/lib/node_modules/scheduler/index.js +1 -1
  203. package/lib/node_modules/use-context-selector/dist/index.js +1 -1
  204. package/lib/styles.css +1 -1
  205. package/lib/styles.css.map +1 -1
  206. package/lib/utils/getEncryptedData/getEncryptedData.js +10 -13
  207. package/lib/utils/getEncryptedData/getEncryptedData.js.map +1 -1
  208. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbe.js","sources":["../../../../node_modules/node-forge/lib/pbe.js"],"sourcesContent":["/**\n * Password-based encryption functions.\n *\n * @author Dave Longley\n * @author Stefan Siegl <stesie@brokenpipe.de>\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl <stesie@brokenpipe.de>\n *\n * An EncryptedPrivateKeyInfo:\n *\n * EncryptedPrivateKeyInfo ::= SEQUENCE {\n * encryptionAlgorithm EncryptionAlgorithmIdentifier,\n * encryptedData EncryptedData }\n *\n * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedData ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./oids');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./random');\nrequire('./rc2');\nrequire('./rsa');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Password-based encryption implementation. */\nvar pki = forge.pki = forge.pki || {};\nmodule.exports = pki.pbe = forge.pbe = forge.pbe || {};\nvar oids = pki.oids;\n\n// validator for an EncryptedPrivateKeyInfo structure\n// Note: Currently only works w/algorithm params\nvar encryptedPrivateKeyValidator = {\n name: 'EncryptedPrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedPrivateKeyInfo.encryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encryptionOid'\n }, {\n name: 'AlgorithmIdentifier.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'encryptionParams'\n }]\n }, {\n // encryptedData\n name: 'EncryptedPrivateKeyInfo.encryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encryptedData'\n }]\n};\n\n// validator for a PBES2Algorithms structure\n// Note: Currently only works w/PBKDF2 + AES encryption schemes\nvar PBES2AlgorithmsValidator = {\n name: 'PBES2Algorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'kdfOid'\n }, {\n name: 'PBES2Algorithms.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.params.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'kdfSalt'\n }, {\n name: 'PBES2Algorithms.params.iterationCount',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'kdfIterationCount'\n }, {\n name: 'PBES2Algorithms.params.keyLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'keyLength'\n }, {\n // prf\n name: 'PBES2Algorithms.params.prf',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'PBES2Algorithms.params.prf.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'prfOid'\n }]\n }]\n }]\n }, {\n name: 'PBES2Algorithms.encryptionScheme',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.encryptionScheme.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encOid'\n }, {\n name: 'PBES2Algorithms.encryptionScheme.iv',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encIv'\n }]\n }]\n};\n\nvar pkcs12PbeParamsValidator = {\n name: 'pkcs-12PbeParams',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'pkcs-12PbeParams.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'salt'\n }, {\n name: 'pkcs-12PbeParams.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'iterations'\n }]\n};\n\n/**\n * Encrypts a ASN.1 PrivateKeyInfo object, producing an EncryptedPrivateKeyInfo.\n *\n * PBES2Algorithms ALGORITHM-IDENTIFIER ::=\n * { {PBES2-params IDENTIFIED BY id-PBES2}, ...}\n *\n * id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}\n *\n * PBES2-params ::= SEQUENCE {\n * keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},\n * encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}\n * }\n *\n * PBES2-KDFs ALGORITHM-IDENTIFIER ::=\n * { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }\n *\n * PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }\n *\n * PBKDF2-params ::= SEQUENCE {\n * salt CHOICE {\n * specified OCTET STRING,\n * otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}\n * },\n * iterationCount INTEGER (1..MAX),\n * keyLength INTEGER (1..MAX) OPTIONAL,\n * prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT algid-hmacWithSHA1\n * }\n *\n * @param obj the ASN.1 PrivateKeyInfo object.\n * @param password the password to encrypt with.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * prfAlgorithm the PRF message digest algorithm to use\n * ('sha1', 'sha224', 'sha256', 'sha384', 'sha512')\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptPrivateKeyInfo = function(obj, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || 'aes128';\n options.prfAlgorithm = options.prfAlgorithm || 'sha1';\n\n // generate PBE params\n var salt = forge.random.getBytesSync(options.saltSize);\n var count = options.count;\n var countBytes = asn1.integerToDer(count);\n var dkLen;\n var encryptionAlgorithm;\n var encryptedData;\n if(options.algorithm.indexOf('aes') === 0 || options.algorithm === 'des') {\n // do PBES2\n var ivLen, encOid, cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n dkLen = 16;\n ivLen = 16;\n encOid = oids['aes128-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n dkLen = 24;\n ivLen = 16;\n encOid = oids['aes192-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n dkLen = 32;\n ivLen = 16;\n encOid = oids['aes256-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'des':\n dkLen = 8;\n ivLen = 8;\n encOid = oids['desCBC'];\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // get PRF message digest\n var prfAlgorithm = 'hmacWith' + options.prfAlgorithm.toUpperCase();\n var md = prfAlgorithmToMessageDigest(prfAlgorithm);\n\n // encrypt private key using pbe SHA-1 and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = forge.random.getBytesSync(ivLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n // get PBKDF2-params\n var params = createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm);\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBES2']).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // keyDerivationFunc\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBKDF2']).getBytes()),\n // PBKDF2-params\n params\n ]),\n // encryptionScheme\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(encOid).getBytes()),\n // iv\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, iv)\n ])\n ])\n ]);\n } else if(options.algorithm === '3des') {\n // Do PKCS12 PBE\n dkLen = 24;\n\n var saltBytes = new forge.util.ByteBuffer(salt);\n var dk = pki.pbe.generatePkcs12Key(password, saltBytes, 1, count, dkLen);\n var iv = pki.pbe.generatePkcs12Key(password, saltBytes, 2, count, dkLen);\n var cipher = forge.des.createEncryptionCipher(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pbeWithSHAAnd3-KeyTripleDES-CBC']).getBytes()),\n // pkcs-12PbeParams\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ])\n ]);\n } else {\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // EncryptedPrivateKeyInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // encryptionAlgorithm\n encryptionAlgorithm,\n // encryptedData\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, encryptedData)\n ]);\n return rval;\n};\n\n/**\n * Decrypts a ASN.1 PrivateKeyInfo object.\n *\n * @param obj the ASN.1 EncryptedPrivateKeyInfo object.\n * @param password the password to decrypt with.\n *\n * @return the ASN.1 PrivateKeyInfo on success, null on failure.\n */\npki.decryptPrivateKeyInfo = function(obj, password) {\n var rval = null;\n\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, encryptedPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // get cipher\n var oid = asn1.derToOid(capture.encryptionOid);\n var cipher = pki.pbe.getCipher(oid, capture.encryptionParams, password);\n\n // get encrypted data\n var encrypted = forge.util.createBuffer(capture.encryptedData);\n\n cipher.update(encrypted);\n if(cipher.finish()) {\n rval = asn1.fromDer(cipher.output);\n }\n\n return rval;\n};\n\n/**\n * Converts a EncryptedPrivateKeyInfo to PEM format.\n *\n * @param epki the EncryptedPrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted encrypted private key.\n */\npki.encryptedPrivateKeyToPem = function(epki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'ENCRYPTED PRIVATE KEY',\n body: asn1.toDer(epki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PEM-encoded EncryptedPrivateKeyInfo to ASN.1 format. Decryption\n * is not performed.\n *\n * @param pem the EncryptedPrivateKeyInfo in PEM-format.\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptedPrivateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY') {\n var error = new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM header type is \"ENCRYPTED 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 encrypted private key from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n return asn1.fromDer(msg.body);\n};\n\n/**\n * Encrypts an RSA private key. By default, the key will be wrapped in\n * a PrivateKeyInfo and encrypted to produce a PKCS#8 EncryptedPrivateKeyInfo.\n * This is the standard, preferred way to encrypt a private key.\n *\n * To produce a non-standard PEM-encrypted private key that uses encapsulated\n * headers to indicate the encryption algorithm (old-style non-PKCS#8 OpenSSL\n * private key encryption), set the 'legacy' option to true. Note: Using this\n * option will cause the iteration count to be forced to 1.\n *\n * Note: The 'des' algorithm is supported, but it is not considered to be\n * secure because it only uses a single 56-bit key. If possible, it is highly\n * recommended that a different algorithm be used.\n *\n * @param rsaKey the RSA key to encrypt.\n * @param password the password to use.\n * @param options:\n * algorithm: the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des', 'des').\n * count: the iteration count to use.\n * saltSize: the salt size to use.\n * legacy: output an old non-PKCS#8 PEM-encrypted+encapsulated\n * headers (DEK-Info) private key.\n *\n * @return the PEM-encoded ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptRsaPrivateKey = function(rsaKey, password, options) {\n // standard PKCS#8\n options = options || {};\n if(!options.legacy) {\n // encrypt PrivateKeyInfo\n var rval = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(rsaKey));\n rval = pki.encryptPrivateKeyInfo(rval, password, options);\n return pki.encryptedPrivateKeyToPem(rval);\n }\n\n // legacy non-PKCS#8\n var algorithm;\n var iv;\n var dkLen;\n var cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n algorithm = 'AES-128-CBC';\n dkLen = 16;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n algorithm = 'AES-192-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n algorithm = 'AES-256-CBC';\n dkLen = 32;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case '3des':\n algorithm = 'DES-EDE3-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n case 'des':\n algorithm = 'DES-CBC';\n dkLen = 8;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Could not encrypt RSA private key; unsupported ' +\n 'encryption algorithm \"' + options.algorithm + '\".');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // encrypt private key using OpenSSL legacy key derivation\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(pki.privateKeyToAsn1(rsaKey)));\n cipher.finish();\n\n var msg = {\n type: 'RSA PRIVATE KEY',\n procType: {\n version: '4',\n type: 'ENCRYPTED'\n },\n dekInfo: {\n algorithm: algorithm,\n parameters: forge.util.bytesToHex(iv).toUpperCase()\n },\n body: cipher.output.getBytes()\n };\n return forge.pem.encode(msg);\n};\n\n/**\n * Decrypts an RSA private key.\n *\n * @param pem the PEM-formatted EncryptedPrivateKeyInfo to decrypt.\n * @param password the password to use.\n *\n * @return the RSA key on success, null on failure.\n */\npki.decryptRsaPrivateKey = function(pem, password) {\n var rval = null;\n\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY' &&\n msg.type !== 'PRIVATE KEY' &&\n msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM header type ' +\n 'is not \"ENCRYPTED PRIVATE KEY\", \"PRIVATE KEY\", or \"RSA PRIVATE KEY\".');\n error.headerType = error;\n throw error;\n }\n\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n var dkLen;\n var cipherFn;\n switch(msg.dekInfo.algorithm) {\n case 'DES-CBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'DES-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'AES-128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'RC2-40-CBC':\n dkLen = 5;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 40);\n };\n break;\n case 'RC2-64-CBC':\n dkLen = 8;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 64);\n };\n break;\n case 'RC2-128-CBC':\n dkLen = 16;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 128);\n };\n break;\n default:\n var error = new Error('Could not decrypt private key; unsupported ' +\n 'encryption algorithm \"' + msg.dekInfo.algorithm + '\".');\n error.algorithm = msg.dekInfo.algorithm;\n throw error;\n }\n\n // use OpenSSL legacy key derivation\n var iv = forge.util.hexToBytes(msg.dekInfo.parameters);\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(forge.util.createBuffer(msg.body));\n if(cipher.finish()) {\n rval = cipher.output.getBytes();\n } else {\n return rval;\n }\n } else {\n rval = msg.body;\n }\n\n if(msg.type === 'ENCRYPTED PRIVATE KEY') {\n rval = pki.decryptPrivateKeyInfo(asn1.fromDer(rval), password);\n } else {\n // decryption already performed above\n rval = asn1.fromDer(rval);\n }\n\n if(rval !== null) {\n rval = pki.privateKeyFromAsn1(rval);\n }\n\n return rval;\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\npki.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md) {\n var j, l;\n\n if(typeof md === 'undefined' || md === null) {\n if(!('sha1' in forge.md)) {\n throw new Error('\"sha1\" hash algorithm unavailable.');\n }\n md = forge.md.sha1.create();\n }\n\n var u = md.digestLength;\n var v = md.blockLength;\n var result = new forge.util.ByteBuffer();\n\n /* Convert password to Unicode byte buffer + trailing 0-byte. */\n var passBuf = new forge.util.ByteBuffer();\n if(password !== null && password !== undefined) {\n for(l = 0; l < password.length; l++) {\n passBuf.putInt16(password.charCodeAt(l));\n }\n passBuf.putInt16(0);\n }\n\n /* Length of salt and password in BYTES. */\n var p = passBuf.length();\n var s = salt.length();\n\n /* 1. Construct a string, D (the \"diversifier\"), by concatenating\n v copies of ID. */\n var D = new forge.util.ByteBuffer();\n D.fillWithByte(id, v);\n\n /* 2. Concatenate copies of the salt together to create a string S of length\n v * ceil(s / v) bytes (the final copy of the salt may be trunacted\n to create S).\n Note that if the salt is the empty string, then so is S. */\n var Slen = v * Math.ceil(s / v);\n var S = new forge.util.ByteBuffer();\n for(l = 0; l < Slen; l++) {\n S.putByte(salt.at(l % s));\n }\n\n /* 3. Concatenate copies of the password together to create a string P of\n length v * ceil(p / v) bytes (the final copy of the password may be\n truncated to create P).\n Note that if the password is the empty string, then so is P. */\n var Plen = v * Math.ceil(p / v);\n var P = new forge.util.ByteBuffer();\n for(l = 0; l < Plen; l++) {\n P.putByte(passBuf.at(l % p));\n }\n\n /* 4. Set I=S||P to be the concatenation of S and P. */\n var I = S;\n I.putBuffer(P);\n\n /* 5. Set c=ceil(n / u). */\n var c = Math.ceil(n / u);\n\n /* 6. For i=1, 2, ..., c, do the following: */\n for(var i = 1; i <= c; i++) {\n /* a) Set Ai=H^r(D||I). (l.e. the rth hash of D||I, H(H(H(...H(D||I)))) */\n var buf = new forge.util.ByteBuffer();\n buf.putBytes(D.bytes());\n buf.putBytes(I.bytes());\n for(var round = 0; round < iter; round++) {\n md.start();\n md.update(buf.getBytes());\n buf = md.digest();\n }\n\n /* b) Concatenate copies of Ai to create a string B of length v bytes (the\n final copy of Ai may be truncated to create B). */\n var B = new forge.util.ByteBuffer();\n for(l = 0; l < v; l++) {\n B.putByte(buf.at(l % u));\n }\n\n /* c) Treating I as a concatenation I0, I1, ..., Ik-1 of v-byte blocks,\n where k=ceil(s / v) + ceil(p / v), modify I by setting\n Ij=(Ij+B+1) mod 2v for each j. */\n var k = Math.ceil(s / v) + Math.ceil(p / v);\n var Inew = new forge.util.ByteBuffer();\n for(j = 0; j < k; j++) {\n var chunk = new forge.util.ByteBuffer(I.getBytes(v));\n var x = 0x1ff;\n for(l = B.length() - 1; l >= 0; l--) {\n x = x >> 8;\n x += B.at(l) + chunk.at(l);\n chunk.setAt(l, x & 0xff);\n }\n Inew.putBuffer(chunk);\n }\n I = Inew;\n\n /* Add Ai to A. */\n result.putBuffer(buf);\n }\n\n result.truncate(result.length() - n);\n return result;\n};\n\n/**\n * Get new Forge cipher object instance.\n *\n * @param oid the OID (in string notation).\n * @param params the ASN.1 params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipher = function(oid, params, password) {\n switch(oid) {\n case pki.oids['pkcs5PBES2']:\n return pki.pbe.getCipherForPBES2(oid, params, password);\n\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n return pki.pbe.getCipherForPKCS12PBE(oid, params, password);\n\n default:\n var error = new Error('Cannot read encrypted PBE data block. Unsupported OID.');\n error.oid = oid;\n error.supportedOids = [\n 'pkcs5PBES2',\n 'pbeWithSHAAnd3-KeyTripleDES-CBC',\n 'pbewithSHAAnd40BitRC2-CBC'\n ];\n throw error;\n }\n};\n\n/**\n * Get new Forge cipher object instance according to PBES2 params block.\n *\n * The returned cipher instance is already started using the IV\n * from PBES2 parameter block.\n *\n * @param oid the PKCS#5 PBKDF2 OID (in string notation).\n * @param params the ASN.1 PBES2-params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipherForPBES2 = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, PBES2AlgorithmsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // check oids\n oid = asn1.derToOid(capture.kdfOid);\n if(oid !== pki.oids['pkcs5PBKDF2']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported key derivation function OID.');\n error.oid = oid;\n error.supportedOids = ['pkcs5PBKDF2'];\n throw error;\n }\n oid = asn1.derToOid(capture.encOid);\n if(oid !== pki.oids['aes128-CBC'] &&\n oid !== pki.oids['aes192-CBC'] &&\n oid !== pki.oids['aes256-CBC'] &&\n oid !== pki.oids['des-EDE3-CBC'] &&\n oid !== pki.oids['desCBC']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported encryption scheme OID.');\n error.oid = oid;\n error.supportedOids = [\n 'aes128-CBC', 'aes192-CBC', 'aes256-CBC', 'des-EDE3-CBC', 'desCBC'];\n throw error;\n }\n\n // set PBE params\n var salt = capture.kdfSalt;\n var count = forge.util.createBuffer(capture.kdfIterationCount);\n count = count.getInt(count.length() << 3);\n var dkLen;\n var cipherFn;\n switch(pki.oids[oid]) {\n case 'aes128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'des-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'desCBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n\n // decrypt private key using pbe with chosen PRF and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = capture.encIv;\n var cipher = cipherFn(dk);\n cipher.start(iv);\n\n return cipher;\n};\n\n/**\n * Get new Forge cipher object instance for PKCS#12 PBE.\n *\n * The returned cipher instance is already started using the key & IV\n * derived from the provided password and PKCS#12 PBE salt.\n *\n * @param oid The PKCS#12 PBE OID (in string notation).\n * @param params The ASN.1 PKCS#12 PBE-params object.\n * @param password The password to decrypt with.\n *\n * @return the new cipher object instance.\n */\npki.pbe.getCipherForPKCS12PBE = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, pkcs12PbeParamsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n var salt = forge.util.createBuffer(capture.salt);\n var count = forge.util.createBuffer(capture.iterations);\n count = count.getInt(count.length() << 3);\n\n var dkLen, dIvLen, cipherFn;\n switch(oid) {\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n dkLen = 24;\n dIvLen = 8;\n cipherFn = forge.des.startDecrypting;\n break;\n\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n dkLen = 5;\n dIvLen = 8;\n cipherFn = function(key, iv) {\n var cipher = forge.rc2.createDecryptionCipher(key, 40);\n cipher.start(iv, null);\n return cipher;\n };\n break;\n\n default:\n var error = new Error('Cannot read PKCS #12 PBE data block. Unsupported OID.');\n error.oid = oid;\n throw error;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n var key = pki.pbe.generatePkcs12Key(password, salt, 1, count, dkLen, md);\n md.start();\n var iv = pki.pbe.generatePkcs12Key(password, salt, 2, count, dIvLen, md);\n\n return cipherFn(key, iv);\n};\n\n/**\n * OpenSSL's legacy key derivation function.\n *\n * See: http://www.openssl.org/docs/crypto/EVP_BytesToKey.html\n *\n * @param password the password to derive the key from.\n * @param salt the salt to use, null for none.\n * @param dkLen the number of bytes needed for the derived key.\n * @param [options] the options to use:\n * [md] an optional message digest object to use.\n */\npki.pbe.opensslDeriveBytes = function(password, salt, dkLen, md) {\n if(typeof md === 'undefined' || md === null) {\n if(!('md5' in forge.md)) {\n throw new Error('\"md5\" hash algorithm unavailable.');\n }\n md = forge.md.md5.create();\n }\n if(salt === null) {\n salt = '';\n }\n var digests = [hash(md, password + salt)];\n for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {\n digests.push(hash(md, digests[i - 1] + password + salt));\n }\n return digests.join('').substr(0, dkLen);\n};\n\nfunction hash(md, bytes) {\n return md.start().update(bytes).digest().getBytes();\n}\n\nfunction prfOidToMessageDigest(prfOid) {\n // get PRF algorithm, default to SHA-1\n var prfAlgorithm;\n if(!prfOid) {\n prfAlgorithm = 'hmacWithSHA1';\n } else {\n prfAlgorithm = pki.oids[asn1.derToOid(prfOid)];\n if(!prfAlgorithm) {\n var error = new Error('Unsupported PRF OID.');\n error.oid = prfOid;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n }\n return prfAlgorithmToMessageDigest(prfAlgorithm);\n}\n\nfunction prfAlgorithmToMessageDigest(prfAlgorithm) {\n var factory = forge.md;\n switch(prfAlgorithm) {\n case 'hmacWithSHA224':\n factory = forge.md.sha512;\n case 'hmacWithSHA1':\n case 'hmacWithSHA256':\n case 'hmacWithSHA384':\n case 'hmacWithSHA512':\n prfAlgorithm = prfAlgorithm.substr(8).toLowerCase();\n break;\n default:\n var error = new Error('Unsupported PRF algorithm.');\n error.algorithm = prfAlgorithm;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n if(!factory || !(prfAlgorithm in factory)) {\n throw new Error('Unknown hash algorithm: ' + prfAlgorithm);\n }\n return factory[prfAlgorithm].create();\n}\n\nfunction createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm) {\n var params = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ]);\n // when PRF algorithm is not SHA-1 default, add key length and PRF algorithm\n if(prfAlgorithm !== 'hmacWithSHA1') {\n params.value.push(\n // key length\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(dkLen.toString(16))),\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids[prfAlgorithm]).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n return params;\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","require$$11","BigInteger","jsbn","asn1","pki","pbe","oids","encryptedPrivateKeyValidator","name","tagClass","Class","UNIVERSAL","type","Type","SEQUENCE","constructed","value","OID","capture","captureAsn1","OCTETSTRING","PBES2AlgorithmsValidator","INTEGER","optional","pkcs12PbeParamsValidator","encryptPrivateKeyInfo","obj","password","options","saltSize","count","algorithm","prfAlgorithm","salt","random","getBytesSync","countBytes","integerToDer","dkLen","encryptionAlgorithm","encryptedData","indexOf","ivLen","encOid","cipherFn","aes","createEncryptionCipher","des","error","Error","toUpperCase","md","prfAlgorithmToMessageDigest","dk","pkcs5","pbkdf2","iv","cipher","start","update","toDer","finish","output","getBytes","params","createPbkdf2Params","create","oidToDer","saltBytes","util","ByteBuffer","generatePkcs12Key","rval","decryptPrivateKeyInfo","errors","validate","oid","derToOid","encryptionOid","getCipher","encryptionParams","encrypted","createBuffer","fromDer","encryptedPrivateKeyToPem","epki","maxline","msg","body","pem","encode","encryptedPrivateKeyFromPem","decode","headerType","procType","encryptRsaPrivateKey","rsaKey","legacy","wrapRsaPrivateKey","privateKeyToAsn1","opensslDeriveBytes","substr","version","dekInfo","parameters","bytesToHex","decryptRsaPrivateKey","createDecryptionCipher","key","rc2","hexToBytes","privateKeyFromAsn1","id","iter","n","j","l","sha1","u","digestLength","v","blockLength","result","passBuf","undefined","length","putInt16","charCodeAt","p","s","D","fillWithByte","Slen","Math","ceil","S","putByte","at","Plen","P","I","putBuffer","c","i","buf","putBytes","bytes","round","digest","B","k","Inew","chunk","x","setAt","truncate","getCipherForPBES2","getCipherForPKCS12PBE","supportedOids","kdfOid","kdfSalt","kdfIterationCount","getInt","prfOidToMessageDigest","prfOid","encIv","iterations","dIvLen","startDecrypting","md5","digests","hash","push","join","supported","factory","sha512","toLowerCase","toString","NULL"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,209 @@
1
+ import { __require as requireForge } from './forge.js';
2
+ import { __require as requireHmac } from './hmac.js';
3
+ import { __require as requireMd } from './md.js';
4
+ import { __require as requireUtil } from './util.js';
5
+ import require$$4 from 'crypto';
6
+
7
+ /**
8
+ * Password-Based Key-Derivation Function #2 implementation.
9
+ *
10
+ * See RFC 2898 for details.
11
+ *
12
+ * @author Dave Longley
13
+ *
14
+ * Copyright (c) 2010-2013 Digital Bazaar, Inc.
15
+ */
16
+ var pbkdf2;
17
+ var hasRequiredPbkdf2;
18
+ function requirePbkdf2() {
19
+ if (hasRequiredPbkdf2) return pbkdf2;
20
+ hasRequiredPbkdf2 = 1;
21
+ var forge = requireForge();
22
+ requireHmac();
23
+ requireMd();
24
+ requireUtil();
25
+ var pkcs5 = forge.pkcs5 = forge.pkcs5 || {};
26
+ var crypto;
27
+ if (forge.util.isNodejs && !forge.options.usePureJavaScript) {
28
+ crypto = require$$4;
29
+ }
30
+
31
+ /**
32
+ * Derives a key from a password.
33
+ *
34
+ * @param p the password as a binary-encoded string of bytes.
35
+ * @param s the salt as a binary-encoded string of bytes.
36
+ * @param c the iteration count, a positive integer.
37
+ * @param dkLen the intended length, in bytes, of the derived key,
38
+ * (max: 2^32 - 1) * hash length of the PRF.
39
+ * @param [md] the message digest (or algorithm identifier as a string) to use
40
+ * in the PRF, defaults to SHA-1.
41
+ * @param [callback(err, key)] presence triggers asynchronous version, called
42
+ * once the operation completes.
43
+ *
44
+ * @return the derived key, as a binary-encoded string of bytes, for the
45
+ * synchronous version (if no callback is specified).
46
+ */
47
+ pbkdf2 = forge.pbkdf2 = pkcs5.pbkdf2 = function (p, s, c, dkLen, md, callback) {
48
+ if (typeof md === 'function') {
49
+ callback = md;
50
+ md = null;
51
+ }
52
+
53
+ // use native implementation if possible and not disabled, note that
54
+ // some node versions only support SHA-1, others allow digest to be changed
55
+ if (forge.util.isNodejs && !forge.options.usePureJavaScript && crypto.pbkdf2 && (md === null || typeof md !== 'object') && (crypto.pbkdf2Sync.length > 4 || !md || md === 'sha1')) {
56
+ if (typeof md !== 'string') {
57
+ // default prf to SHA-1
58
+ md = 'sha1';
59
+ }
60
+ p = Buffer.from(p, 'binary');
61
+ s = Buffer.from(s, 'binary');
62
+ if (!callback) {
63
+ if (crypto.pbkdf2Sync.length === 4) {
64
+ return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');
65
+ }
66
+ return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');
67
+ }
68
+ if (crypto.pbkdf2Sync.length === 4) {
69
+ return crypto.pbkdf2(p, s, c, dkLen, function (err, key) {
70
+ if (err) {
71
+ return callback(err);
72
+ }
73
+ callback(null, key.toString('binary'));
74
+ });
75
+ }
76
+ return crypto.pbkdf2(p, s, c, dkLen, md, function (err, key) {
77
+ if (err) {
78
+ return callback(err);
79
+ }
80
+ callback(null, key.toString('binary'));
81
+ });
82
+ }
83
+ if (typeof md === 'undefined' || md === null) {
84
+ // default prf to SHA-1
85
+ md = 'sha1';
86
+ }
87
+ if (typeof md === 'string') {
88
+ if (!(md in forge.md.algorithms)) {
89
+ throw new Error('Unknown hash algorithm: ' + md);
90
+ }
91
+ md = forge.md[md].create();
92
+ }
93
+ var hLen = md.digestLength;
94
+
95
+ /* 1. If dkLen > (2^32 - 1) * hLen, output "derived key too long" and
96
+ stop. */
97
+ if (dkLen > 0xFFFFFFFF * hLen) {
98
+ var err = new Error('Derived key is too long.');
99
+ if (callback) {
100
+ return callback(err);
101
+ }
102
+ throw err;
103
+ }
104
+
105
+ /* 2. Let len be the number of hLen-octet blocks in the derived key,
106
+ rounding up, and let r be the number of octets in the last
107
+ block:
108
+ len = CEIL(dkLen / hLen),
109
+ r = dkLen - (len - 1) * hLen. */
110
+ var len = Math.ceil(dkLen / hLen);
111
+ var r = dkLen - (len - 1) * hLen;
112
+
113
+ /* 3. For each block of the derived key apply the function F defined
114
+ below to the password P, the salt S, the iteration count c, and
115
+ the block index to compute the block:
116
+ T_1 = F(P, S, c, 1),
117
+ T_2 = F(P, S, c, 2),
118
+ ...
119
+ T_len = F(P, S, c, len),
120
+ where the function F is defined as the exclusive-or sum of the
121
+ first c iterates of the underlying pseudorandom function PRF
122
+ applied to the password P and the concatenation of the salt S
123
+ and the block index i:
124
+ F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c
125
+ where
126
+ u_1 = PRF(P, S || INT(i)),
127
+ u_2 = PRF(P, u_1),
128
+ ...
129
+ u_c = PRF(P, u_{c-1}).
130
+ Here, INT(i) is a four-octet encoding of the integer i, most
131
+ significant octet first. */
132
+ var prf = forge.hmac.create();
133
+ prf.start(md, p);
134
+ var dk = '';
135
+ var xor, u_c, u_c1;
136
+
137
+ // sync version
138
+ if (!callback) {
139
+ for (var i = 1; i <= len; ++i) {
140
+ // PRF(P, S || INT(i)) (first iteration)
141
+ prf.start(null, null);
142
+ prf.update(s);
143
+ prf.update(forge.util.int32ToBytes(i));
144
+ xor = u_c1 = prf.digest().getBytes();
145
+
146
+ // PRF(P, u_{c-1}) (other iterations)
147
+ for (var j = 2; j <= c; ++j) {
148
+ prf.start(null, null);
149
+ prf.update(u_c1);
150
+ u_c = prf.digest().getBytes();
151
+ // F(p, s, c, i)
152
+ xor = forge.util.xorBytes(xor, u_c, hLen);
153
+ u_c1 = u_c;
154
+ }
155
+
156
+ /* 4. Concatenate the blocks and extract the first dkLen octets to
157
+ produce a derived key DK:
158
+ DK = T_1 || T_2 || ... || T_len<0..r-1> */
159
+ dk += i < len ? xor : xor.substr(0, r);
160
+ }
161
+ /* 5. Output the derived key DK. */
162
+ return dk;
163
+ }
164
+
165
+ // async version
166
+ var i = 1,
167
+ j;
168
+ function outer() {
169
+ if (i > len) {
170
+ // done
171
+ return callback(null, dk);
172
+ }
173
+
174
+ // PRF(P, S || INT(i)) (first iteration)
175
+ prf.start(null, null);
176
+ prf.update(s);
177
+ prf.update(forge.util.int32ToBytes(i));
178
+ xor = u_c1 = prf.digest().getBytes();
179
+
180
+ // PRF(P, u_{c-1}) (other iterations)
181
+ j = 2;
182
+ inner();
183
+ }
184
+ function inner() {
185
+ if (j <= c) {
186
+ prf.start(null, null);
187
+ prf.update(u_c1);
188
+ u_c = prf.digest().getBytes();
189
+ // F(p, s, c, i)
190
+ xor = forge.util.xorBytes(xor, u_c, hLen);
191
+ u_c1 = u_c;
192
+ ++j;
193
+ return forge.util.setImmediate(inner);
194
+ }
195
+
196
+ /* 4. Concatenate the blocks and extract the first dkLen octets to
197
+ produce a derived key DK:
198
+ DK = T_1 || T_2 || ... || T_len<0..r-1> */
199
+ dk += i < len ? xor : xor.substr(0, r);
200
+ ++i;
201
+ outer();
202
+ }
203
+ outer();
204
+ };
205
+ return pbkdf2;
206
+ }
207
+
208
+ export { requirePbkdf2 as __require };
209
+ //# sourceMappingURL=pbkdf2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pbkdf2.js","sources":["../../../../node_modules/node-forge/lib/pbkdf2.js"],"sourcesContent":["/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = Buffer.from(p, 'binary');\n s = Buffer.from(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n }\n /* 5. Output the derived key DK. */\n return dk;\n }\n\n // async version\n var i = 1, j;\n function outer() {\n if(i > len) {\n // done\n return callback(null, dk);\n }\n\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n j = 2;\n inner();\n }\n\n function inner() {\n if(j <= c) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n ++j;\n return forge.util.setImmediate(inner);\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n\n ++i;\n outer();\n }\n\n outer();\n};\n"],"names":["forge","require$$0","require$$1","require$$2","require$$3","pkcs5","crypto","util","isNodejs","options","usePureJavaScript","require$$4","pbkdf2","p","s","c","dkLen","md","callback","pbkdf2Sync","length","Buffer","from","toString","err","key","algorithms","Error","create","hLen","digestLength","len","Math","ceil","r","prf","hmac","start","dk","xor","u_c","u_c1","i","update","int32ToBytes","digest","getBytes","j","xorBytes","substr","outer","inner","setImmediate"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,250 @@
1
+ import { __module as pem } from '../../../_virtual/pem.js';
2
+ import { __require as requireForge } from './forge.js';
3
+ import { __require as requireUtil } from './util.js';
4
+
5
+ /**
6
+ * Javascript implementation of basic PEM (Privacy Enhanced Mail) algorithms.
7
+ *
8
+ * See: RFC 1421.
9
+ *
10
+ * @author Dave Longley
11
+ *
12
+ * Copyright (c) 2013-2014 Digital Bazaar, Inc.
13
+ *
14
+ * A Forge PEM object has the following fields:
15
+ *
16
+ * type: identifies the type of message (eg: "RSA PRIVATE KEY").
17
+ *
18
+ * procType: identifies the type of processing performed on the message,
19
+ * it has two subfields: version and type, eg: 4,ENCRYPTED.
20
+ *
21
+ * contentDomain: identifies the type of content in the message, typically
22
+ * only uses the value: "RFC822".
23
+ *
24
+ * dekInfo: identifies the message encryption algorithm and mode and includes
25
+ * any parameters for the algorithm, it has two subfields: algorithm and
26
+ * parameters, eg: DES-CBC,F8143EDE5960C597.
27
+ *
28
+ * headers: contains all other PEM encapsulated headers -- where order is
29
+ * significant (for pairing data like recipient ID + key info).
30
+ *
31
+ * body: the binary-encoded body.
32
+ */
33
+ var hasRequiredPem;
34
+ function requirePem() {
35
+ if (hasRequiredPem) return pem.exports;
36
+ hasRequiredPem = 1;
37
+ var forge = requireForge();
38
+ requireUtil();
39
+
40
+ // shortcut for pem API
41
+ var pem$1 = pem.exports = forge.pem = forge.pem || {};
42
+
43
+ /**
44
+ * Encodes (serializes) the given PEM object.
45
+ *
46
+ * @param msg the PEM message object to encode.
47
+ * @param options the options to use:
48
+ * maxline the maximum characters per line for the body, (default: 64).
49
+ *
50
+ * @return the PEM-formatted string.
51
+ */
52
+ pem$1.encode = function (msg, options) {
53
+ options = options || {};
54
+ var rval = '-----BEGIN ' + msg.type + '-----\r\n';
55
+
56
+ // encode special headers
57
+ var header;
58
+ if (msg.procType) {
59
+ header = {
60
+ name: 'Proc-Type',
61
+ values: [String(msg.procType.version), msg.procType.type]
62
+ };
63
+ rval += foldHeader(header);
64
+ }
65
+ if (msg.contentDomain) {
66
+ header = {
67
+ name: 'Content-Domain',
68
+ values: [msg.contentDomain]
69
+ };
70
+ rval += foldHeader(header);
71
+ }
72
+ if (msg.dekInfo) {
73
+ header = {
74
+ name: 'DEK-Info',
75
+ values: [msg.dekInfo.algorithm]
76
+ };
77
+ if (msg.dekInfo.parameters) {
78
+ header.values.push(msg.dekInfo.parameters);
79
+ }
80
+ rval += foldHeader(header);
81
+ }
82
+ if (msg.headers) {
83
+ // encode all other headers
84
+ for (var i = 0; i < msg.headers.length; ++i) {
85
+ rval += foldHeader(msg.headers[i]);
86
+ }
87
+ }
88
+
89
+ // terminate header
90
+ if (msg.procType) {
91
+ rval += '\r\n';
92
+ }
93
+
94
+ // add body
95
+ rval += forge.util.encode64(msg.body, options.maxline || 64) + '\r\n';
96
+ rval += '-----END ' + msg.type + '-----\r\n';
97
+ return rval;
98
+ };
99
+
100
+ /**
101
+ * Decodes (deserializes) all PEM messages found in the given string.
102
+ *
103
+ * @param str the PEM-formatted string to decode.
104
+ *
105
+ * @return the PEM message objects in an array.
106
+ */
107
+ pem$1.decode = function (str) {
108
+ var rval = [];
109
+
110
+ // split string into PEM messages (be lenient w/EOF on BEGIN line)
111
+ var rMessage = /\s*-----BEGIN ([A-Z0-9- ]+)-----\r?\n?([\x21-\x7e\s]+?(?:\r?\n\r?\n))?([:A-Za-z0-9+\/=\s]+?)-----END \1-----/g;
112
+ var rHeader = /([\x21-\x7e]+):\s*([\x21-\x7e\s^:]+)/;
113
+ var rCRLF = /\r?\n/;
114
+ var match;
115
+ while (true) {
116
+ match = rMessage.exec(str);
117
+ if (!match) {
118
+ break;
119
+ }
120
+
121
+ // accept "NEW CERTIFICATE REQUEST" as "CERTIFICATE REQUEST"
122
+ // https://datatracker.ietf.org/doc/html/rfc7468#section-7
123
+ var type = match[1];
124
+ if (type === 'NEW CERTIFICATE REQUEST') {
125
+ type = 'CERTIFICATE REQUEST';
126
+ }
127
+ var msg = {
128
+ type: type,
129
+ procType: null,
130
+ contentDomain: null,
131
+ dekInfo: null,
132
+ headers: [],
133
+ body: forge.util.decode64(match[3])
134
+ };
135
+ rval.push(msg);
136
+
137
+ // no headers
138
+ if (!match[2]) {
139
+ continue;
140
+ }
141
+
142
+ // parse headers
143
+ var lines = match[2].split(rCRLF);
144
+ var li = 0;
145
+ while (match && li < lines.length) {
146
+ // get line, trim any rhs whitespace
147
+ var line = lines[li].replace(/\s+$/, '');
148
+
149
+ // RFC2822 unfold any following folded lines
150
+ for (var nl = li + 1; nl < lines.length; ++nl) {
151
+ var next = lines[nl];
152
+ if (!/\s/.test(next[0])) {
153
+ break;
154
+ }
155
+ line += next;
156
+ li = nl;
157
+ }
158
+
159
+ // parse header
160
+ match = line.match(rHeader);
161
+ if (match) {
162
+ var header = {
163
+ name: match[1],
164
+ values: []
165
+ };
166
+ var values = match[2].split(',');
167
+ for (var vi = 0; vi < values.length; ++vi) {
168
+ header.values.push(ltrim(values[vi]));
169
+ }
170
+
171
+ // Proc-Type must be the first header
172
+ if (!msg.procType) {
173
+ if (header.name !== 'Proc-Type') {
174
+ throw new Error('Invalid PEM formatted message. The first ' + 'encapsulated header must be "Proc-Type".');
175
+ } else if (header.values.length !== 2) {
176
+ throw new Error('Invalid PEM formatted message. The "Proc-Type" ' + 'header must have two subfields.');
177
+ }
178
+ msg.procType = {
179
+ version: values[0],
180
+ type: values[1]
181
+ };
182
+ } else if (!msg.contentDomain && header.name === 'Content-Domain') {
183
+ // special-case Content-Domain
184
+ msg.contentDomain = values[0] || '';
185
+ } else if (!msg.dekInfo && header.name === 'DEK-Info') {
186
+ // special-case DEK-Info
187
+ if (header.values.length === 0) {
188
+ throw new Error('Invalid PEM formatted message. The "DEK-Info" ' + 'header must have at least one subfield.');
189
+ }
190
+ msg.dekInfo = {
191
+ algorithm: values[0],
192
+ parameters: values[1] || null
193
+ };
194
+ } else {
195
+ msg.headers.push(header);
196
+ }
197
+ }
198
+ ++li;
199
+ }
200
+ if (msg.procType === 'ENCRYPTED' && !msg.dekInfo) {
201
+ throw new Error('Invalid PEM formatted message. The "DEK-Info" ' + 'header must be present if "Proc-Type" is "ENCRYPTED".');
202
+ }
203
+ }
204
+ if (rval.length === 0) {
205
+ throw new Error('Invalid PEM formatted message.');
206
+ }
207
+ return rval;
208
+ };
209
+ function foldHeader(header) {
210
+ var rval = header.name + ': ';
211
+
212
+ // ensure values with CRLF are folded
213
+ var values = [];
214
+ var insertSpace = function (match, $1) {
215
+ return ' ' + $1;
216
+ };
217
+ for (var i = 0; i < header.values.length; ++i) {
218
+ values.push(header.values[i].replace(/^(\S+\r\n)/, insertSpace));
219
+ }
220
+ rval += values.join(',') + '\r\n';
221
+
222
+ // do folding
223
+ var length = 0;
224
+ var candidate = -1;
225
+ for (var i = 0; i < rval.length; ++i, ++length) {
226
+ if (length > 65 && candidate !== -1) {
227
+ var insert = rval[candidate];
228
+ if (insert === ',') {
229
+ ++candidate;
230
+ rval = rval.substr(0, candidate) + '\r\n ' + rval.substr(candidate);
231
+ } else {
232
+ rval = rval.substr(0, candidate) + '\r\n' + insert + rval.substr(candidate + 1);
233
+ }
234
+ length = i - candidate - 1;
235
+ candidate = -1;
236
+ ++i;
237
+ } else if (rval[i] === ' ' || rval[i] === '\t' || rval[i] === ',') {
238
+ candidate = i;
239
+ }
240
+ }
241
+ return rval;
242
+ }
243
+ function ltrim(str) {
244
+ return str.replace(/^\s+/, '');
245
+ }
246
+ return pem.exports;
247
+ }
248
+
249
+ export { requirePem as __require };
250
+ //# sourceMappingURL=pem.js.map