@unabandoned/parse-asn1 5.2.0

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 (57) hide show
  1. package/.githooks/commit-msg +2 -0
  2. package/.github/FUNDING.yml +12 -0
  3. package/.github/workflows/ci.yml +13 -0
  4. package/.github/workflows/codeql.yml +14 -0
  5. package/.github/workflows/commitlint.yml +8 -0
  6. package/.github/workflows/publish.yml +16 -0
  7. package/.github/workflows/release-cut.yml +12 -0
  8. package/.github/workflows/release-please.yml +11 -0
  9. package/.github/workflows/release-security.yml +11 -0
  10. package/.github/workflows/renovate-config.yml +10 -0
  11. package/.github/workflows/scorecard.yml +14 -0
  12. package/.release-please-manifest.json +3 -0
  13. package/.unabandoned.yml +30 -0
  14. package/CHANGELOG.md +216 -0
  15. package/LICENSE +13 -0
  16. package/README.md +15 -0
  17. package/aesid.json +13 -0
  18. package/asn1.js +123 -0
  19. package/certificate.js +89 -0
  20. package/commitlint.config.js +1 -0
  21. package/evp-bytes-to-key.js +56 -0
  22. package/fixProc.js +33 -0
  23. package/index.js +111 -0
  24. package/package.json +46 -0
  25. package/release-please-config.json +24 -0
  26. package/renovate.json +7 -0
  27. package/test/1024.priv +16 -0
  28. package/test/1024.pub +6 -0
  29. package/test/cert.priv +27 -0
  30. package/test/cert.pub +20 -0
  31. package/test/dsa.1024.priv +18 -0
  32. package/test/dsa.1024.pub +12 -0
  33. package/test/dsa.2048.priv +20 -0
  34. package/test/dsa.2048.pub +20 -0
  35. package/test/ec.pass.priv +7 -0
  36. package/test/ec.priv +5 -0
  37. package/test/ec.pub +4 -0
  38. package/test/index.js +108 -0
  39. package/test/node.cert +20 -0
  40. package/test/pass.1024.priv +18 -0
  41. package/test/pass.1024.pub +6 -0
  42. package/test/pass.dsa.1024.priv +11 -0
  43. package/test/pass.dsa.1024.pub +12 -0
  44. package/test/pass.rsa.1024.priv +18 -0
  45. package/test/pass.rsa.1024.pub +6 -0
  46. package/test/pass.rsa.2028.priv +30 -0
  47. package/test/pass.rsa.2028.pub +9 -0
  48. package/test/pass2.dsa.1024.priv +15 -0
  49. package/test/pass2.dsa.1024.pub +12 -0
  50. package/test/rsa.1024.priv +15 -0
  51. package/test/rsa.1024.pub +5 -0
  52. package/test/rsa.2028.priv +27 -0
  53. package/test/rsa.2028.pub +8 -0
  54. package/test/tape.js +134 -0
  55. package/test/vector.js +11 -0
  56. package/test/vector.priv +12 -0
  57. package/test/vector2.priv +19 -0
@@ -0,0 +1,6 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIGcMA0GCSqGSIb3DQEBAQUAA4GKADCBhgJ/OwswbFo/uyC8ltGf/yA1A+gV5IGd
3
+ nAgPbUSI3GzbHCA+x+TLG/tLvbRw3r1smppY/jkkpiVW1ErSMuN0uixp5gb78Z9r
4
+ H1XpWb5WWgp3WaY/9EHMjMdOkQ/9LVZvRvl/M/Fi6owP+q+amJI1BEjECYfbhGL3
5
+ rmlVdq4qXc40QwIDAQAB
6
+ -----END PUBLIC KEY-----
@@ -0,0 +1,30 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: AES-256-CBC,7A6A055AD675947A657041422F06D439
4
+
5
+ HQdjzAKUuqqKhZHmpzzY/monfqFhiHnZ5c24jtR9fM4aQJXf/e1fz6MEhyIz6XON
6
+ sb4CnXZstnxUuVWDkHEu6KWQ/dKALgiDUuT+UdMawVoVPGdgyWZp35pQPWi3fT2V
7
+ XZn58YkG8bO3Y403eZPyhadOefD1VtuFuK6/f90jjzx6ZDnwveXpYgFV7Jy1/pFd
8
+ cLLMf07C+hbk416nX6UVipWe4GH+ADFom5ZCfAaUotM7n8i149dULNF4YYi2wP31
9
+ 1YaDH5vf1CqiaieDY7xLzpEixwJz6ZEg3gLXaUvz2MpF8owiGI3eP0g7voWp3xt4
10
+ TQx/qDURlaXiaRriWdWtpKyW1MFuJ5+KdNtR1/kXr2BLPB/ZLwyqtynUy8ZYpb4+
11
+ WIRYpUGeb//ZHGhlCH7CRMdABsal4wTwnzi9fW4Ax96ecJ2SlwCuKxwS7iEq2y1/
12
+ FAfGwsE+XufHhme5p6XjKfiHx+zJMIB2NMkrm+wm4PbMTrGVnw5/41/r6XxOB8fe
13
+ iKi12Jth4dusc1vYGYfzKop9uEM6CZ6+Chqzb+Zyh/xUiZVlCX/BYnxr7yXUm9aR
14
+ PHQgxkn2Act8FgQB3Kgs3jCiCRIJrlsnybeWzQ3YO9TjC4MxygmmwODDBpsOKnEi
15
+ kXXS54+cZFjcsva4uJVwhAywRPVUkLzmTkH0tGiwCHjeQNECm+TLahkkEIXrVTb9
16
+ c9creNXMgE6jVVz+R43HXsGvTcgMcBLyFRQJe2nVaj/dQ5JbF4uqNnQzRjAbD34K
17
+ uTpFaJ/kmlgcmeScRLnwaoYwFlmhSC+bK0dfY1Jr6AQRA6IDP7nIjqWNDCHNBB8r
18
+ Qj1v2KWoVQe3xNHaXhkbJPbA2DKlUIqffkBVtMKtt9KuG3Rccf3bVYAW6oid73/D
19
+ z7DMAF5G/OpVR8VbGh1WxXuR7zEVDUwpwsp9ek5dqN8BnBz1ppdZNIKqzszneckU
20
+ s2l/6mZBmgV1Nfy/cQU6U5s3S1Xc75UDQVLms3CIOpFTRIpecNTdfa31fYy/svy0
21
+ M2lWTbCva0dOyuvMUhTgBL4I7Qa2dUMPXHMZatV5ooHYq/BZJA1r84C5cM5r+umE
22
+ 2LLv/BlUr7RaQHhaKGn4Qhpzo5yRDE9mEqDpLVkbg8SxMsdf/pEF5/VyUwA9t8RT
23
+ fKVsInRd386tDqJSDbSFqKTvLztr/5YCyzZzvC2YB1voko/caOGd2d/G51Ij+bXU
24
+ xEN8U4fHDBsHwPUGb31uZUhTXpL37KiOqZmXFoH2usmuvx882XvyGcV0F4tstMaR
25
+ KLKzl2PwqzAYGFexLkYKMz0TYIeN6h3b86ETazPPU49nkaEU23Dx21J2Rb3UlH+I
26
+ lDQF3wuH1QlYiTnlcVa/Zu4QQg0/iP8ALkZ06mvn9e9mOtnA8gsh4B2oLqc19VLU
27
+ bcpv40dV1H3W9Lcx9B8JYUp0c/Oyno1D7Yj3tjGcwMKECmUpHi4kksehVo0/P933
28
+ xmFmC6eyWYVdO9upvY/vKSB7b1dMt85iWr3gnMsSfRYc6jsbSxdjOPST46UsIzjx
29
+ wa1DS6+Bv5tiaC4uC6X+0tCAZo+UOQMYUbTGRR/7g/c=
30
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,9 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIIBHjANBgkqhkiG9w0BAQEFAAOCAQsAMIIBBgKB/gy7mjaWgPeFdVYDZWRCA9BN
3
+ iv3pPb0es27+FKY0hszLaOw47ExCtAWpDsH48TXAfyHBYwBLguayfk4LGIupxb+C
4
+ GMbRo3xEp0CbfY1Jby26T9vGjRC1foHDDUJG84uaRbyHqaf4i6zt4gVR+xlAEIjk
5
+ aFAAK8cOoXAT1CVqGLLljUCchL8PjaHj/yriZ/S7rdwlI3LnABxwwmLrmR/v71Wt
6
+ pmO/aNG8N+1po+QwaghTkyQ59E/ZvAuOkFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQ
7
+ aEDRbBFBmBqTv5fFGfk2WsAfKf/RG0/VFd+ZeM5251TeTvXH695nlSGauVl9AgMB
8
+ AAE=
9
+ -----END PUBLIC KEY-----
@@ -0,0 +1,15 @@
1
+ -----BEGIN DSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: AES-128-CBC,DC173C6DFD455EBE462A35D6AB9A603A
4
+
5
+ FoC3sxbdUFJTaNtRpooMxaX2lcQRLUz8qcRhzDBn5a1kaMHp2JM3KlHK5aauybT4
6
+ ilmlKJ9sSm8pFLAWPKbkczSgZ+X6p/51v4zaEJSebZ98p32kQk87XJQE7aYroxYV
7
+ UfM5PSOoKWilj+LZQQEXV10qDoYGrnbSdoNSxYW5V1a1aP+ua0EO7m9MUYkoLxi3
8
+ SJ/s2h/5KM3TOz7d7DOZuSoNm+0n6YC4aqQnR3lmEtAXEYLQqLhH2Q3FTKTHwBQw
9
+ HgMBAzcXOS1YSw6Ekwh1eZamizrOEC4I6oZEHoUBqRfbsQ8tu77kDq2ovQSyn8Fp
10
+ SeE64m3GgZOYdfcDuNZ0ccmm3shBBfTfD9AwR+1thklKO3oaaLEHb6TmnkD79rEz
11
+ 9WsiVxoN7vqqWdgoeyl7REOB6WLQp8kYS4FoRG0QB/ZS8Hs/Tf17QPnrQNiMkvP7
12
+ sJSHmlaMKXjWXK0VoN94kfZKUXwkzLD1VXuXFCnUkznWU0tahYi06b8/SVXc6EG+
13
+ 0mzylckH7UnjOQfxSFAlZ+e/PiX80tcPakxYbk+f1Nv7L0NOyhrDv18KUbv9mEpV
14
+ Ysild1m7/QSF0u1qmjmGNQ==
15
+ -----END DSA PRIVATE KEY-----
@@ -0,0 +1,12 @@
1
+ -----BEGIN PUBLIC KEY-----
2
+ MIIBtzCCASwGByqGSM44BAEwggEfAoGBAOY0KsTt5EpJ4LtlD3xRS5mDiGE1CMNp
3
+ 0S9X0sK8kP8Aps8iYwMLbZYglk18GCNnCk4SjbAnZHSB3kaIv6AKQc2J8W2YV5se
4
+ 3VhpKOFst7bqRtkGsl8uJtGlKTiXNclkv2jsKOrsBokSD1USGCECTNeMt3OgziRc
5
+ Z1dS+djSOZ2nAhUAzB96SpxlAak+K/QLVJ+lDe5DcY0CgYEAtxX1/HckvhlhHQyK
6
+ ZWLQsDfZBILbhc+OLDpOyT6cJS/sJzfFIYZgK5M3rOS4OmzdYfJccQAuGq+TVJQ3
7
+ VcYOdbrIANJV8CDrn4jkkejTzJI6fCwAkPWOyxw8kbV1Hsoy6WLfSCHKpBUcrogA
8
+ qRGESqBVTawjyF/ECX667y/P49MDgYQAAoGAXYmxO4+52C1gBzh7GgTwNLJl7bLn
9
+ gOhKTFlKhT36VjMjeFfdXmBVBVbfUottKZby/gVX1IXT38PStB/dswbF45bGDdoS
10
+ zMFjYmHTtLtrU/4hReVtvb5MYmrPDFX58SwcSRRO/cH6WJPvfu4Aq0cJZA9Kb0B9
11
+ 5Wo18JxAqvPtTB8=
12
+ -----END PUBLIC KEY-----
@@ -0,0 +1,15 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIICVAIBAAJ/OwswbFo/uyC8ltGf/yA1A+gV5IGdnAgPbUSI3GzbHCA+x+TLG/tL
3
+ vbRw3r1smppY/jkkpiVW1ErSMuN0uixp5gb78Z9rH1XpWb5WWgp3WaY/9EHMjMdO
4
+ kQ/9LVZvRvl/M/Fi6owP+q+amJI1BEjECYfbhGL3rmlVdq4qXc40QwIDAQABAn8I
5
+ VZ0BPoAOhyF33KFMHxy8r28fsVgxJUYgM3NqQgdv4fFawCYXjhJz9duU5YJGFJGJ
6
+ WUGeHlkyYFlpi4f3m7tY7JawmQUWB0MNSoKHI3cgDX4/tfBN8ni+cO0eSoR5czBY
7
+ EsAHBU47p1awNFAHwd+ZEuv9H4RmMn7p279rQTtpAkAH3Nqs2/vrRF2cZUN4fIXf
8
+ 4xHsQBByUayGq8a3J0UGaSFWv68zTUKFherr9uZotNp7NJ4jBXiARw0q8docXUG1
9
+ AkAHgmOKHoORtAmikqpmFEJZOtsXMaLCIm4EszPo5ciYoLMBcVit09AdiQlt7ZJL
10
+ DY02svU1b0agCZ97kDkmHDkXAkACa8M9JELuDs/P/vIGYDkMVatIFfW6bWF02eFG
11
+ taWwMqCcSEsWvbw0xqYt34jURpNbCjmCyQVwYfAw/+TLhP9dAkAFwRjdwjw37qpj
12
+ ddg1mNiu37b7swFxmkiMOXZRxaNNsfb56A14RpN3zob3QdGUybGodMIKTFbmU/lu
13
+ CjqAxafJAkAG2yf6RWbwFIWfMyt7WYCh0VaGBCcgy574AinVieEo3ZZyFfC63+xm
14
+ 3uoaNy4iLoJv4GCjqUBz3ZfcVaO/DDWG
15
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,5 @@
1
+ -----BEGIN RSA PUBLIC KEY-----
2
+ MIGGAn87CzBsWj+7ILyW0Z//IDUD6BXkgZ2cCA9tRIjcbNscID7H5Msb+0u9tHDe
3
+ vWyamlj+OSSmJVbUStIy43S6LGnmBvvxn2sfVelZvlZaCndZpj/0QcyMx06RD/0t
4
+ Vm9G+X8z8WLqjA/6r5qYkjUESMQJh9uEYveuaVV2ripdzjRDAgMBAAE=
5
+ -----END RSA PUBLIC KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEjwIBAAKB/gy7mjaWgPeFdVYDZWRCA9BNiv3pPb0es27+FKY0hszLaOw47ExC
3
+ tAWpDsH48TXAfyHBYwBLguayfk4LGIupxb+CGMbRo3xEp0CbfY1Jby26T9vGjRC1
4
+ foHDDUJG84uaRbyHqaf4i6zt4gVR+xlAEIjkaFAAK8cOoXAT1CVqGLLljUCchL8P
5
+ jaHj/yriZ/S7rdwlI3LnABxwwmLrmR/v71WtpmO/aNG8N+1po+QwaghTkyQ59E/Z
6
+ vAuOkFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQaEDRbBFBmBqTv5fFGfk2WsAfKf/R
7
+ G0/VFd+ZeM5251TeTvXH695nlSGauVl9AgMBAAECgf4LrWHY/l54ouThZWvvbrug
8
+ pfz6sJX2g9l7yXmWlEWsPECVo/7SUbpYFpt6OZy99zSg+IKbGqWKfdhoKrTwIVtC
9
+ L0YZ0NlmdnANSIz0roxQG7ZxkL5+vHSw/PmD9x4Uwf+Cz8hATCmNBv1qc60dkyuW
10
+ 4CLqe72qaTiVWRoO1iagQghNcLoo6vSy65ExLaCDTPha7yu2vw4hFZpWiEjW4dxf
11
+ rFdLiix52BC86YlAlxME/rLg8IJVvilbyo9aWdXmxOaUTLRv6PkFD1/gVdw8V9Qr
12
+ SLN9FlK2kkjiX0dzoibvZw3tMnt3yydAx0X87+sMRVahC1bp3kVPz4Hy0EWX4QJ/
13
+ PM31vGiuITk2NCd51DXt1Ltn2OP5FaJSmCaEjh0XkU4qouYyjXWt8Bu6BTCl2vua
14
+ Fg0Uji9C+IkPLmaUMbMIOwaTk8cWqLthSxsLe70J5OkGrgfKUM/w+BHH1Pt/Pjzj
15
+ C++l0kiFaOVDVaAV9GpLPLCBoK/PC9Rb/rxMMoCCNwJ/NZuedIny2w3LMii77h/T
16
+ zSvergNGhjY6Rnva8lLXJ6dlrkcPAyps3gWwxqj4NR0T+GM0bDUPVLb7M07XV7SX
17
+ v7VJGm52JbRGwM1ss+r8XTTNemeGk+WRxG7TgtsMqYGXLfB8Qxk/f5/Mcc00Tl8u
18
+ wXFNsfxJxmt6AbsTr3g36wJ/IhOnibz9Ad+nchlBnN3QeW3CKHqzaR18voqvtVm2
19
+ kJfHK15prH/sSGmxmiEGgrCJTZxtDbaNCO7/VBjnKudUUIhCAwsLtuq0/zub9vAd
20
+ 8G1scfIpv5qaSNzmKoX8bOwArvrS6wP7yKrcTsuWIlHD8rJVI7IEDnQoTp5G8fK1
21
+ hwJ/MIh8M5v0r5dUYEv6oIJWGcle6AH1JmsP5WIafgq72Z2288pHcCFHwNY8Dg9J
22
+ 76QswVLnUhPTlmm3EOOPGEtam2iAD5r0Afytlb4lbNoQsj2szeXONDXB+6oueajh
23
+ VNELUr8HcSP5lgzRZjJW6aFIzj9LDRmQnUAOjGSXVOQtEwJ/MCQZ7N/v4dIKeDRA
24
+ 8d8UExZ3+gGHumziztGRJ0tQryZH2PakP5I7V+1l7qEUnJ2c3mF+e1v41Ep9LCvh
25
+ bzrPKw9dxh18g4b+7bMpsWPnsraKh6ipxc7aaOaZV0Dxgez4zcZu0P1olO0cN3KM
26
+ nxJ0Pds3R8bAhNCDdS2JZaRp5Q==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,8 @@
1
+ -----BEGIN RSA PUBLIC KEY-----
2
+ MIIBBgKB/gy7mjaWgPeFdVYDZWRCA9BNiv3pPb0es27+FKY0hszLaOw47ExCtAWp
3
+ DsH48TXAfyHBYwBLguayfk4LGIupxb+CGMbRo3xEp0CbfY1Jby26T9vGjRC1foHD
4
+ DUJG84uaRbyHqaf4i6zt4gVR+xlAEIjkaFAAK8cOoXAT1CVqGLLljUCchL8PjaHj
5
+ /yriZ/S7rdwlI3LnABxwwmLrmR/v71WtpmO/aNG8N+1po+QwaghTkyQ59E/ZvAuO
6
+ kFWHok2q/R6PYAa2jdZ9zim0FqOP+nkQaEDRbBFBmBqTv5fFGfk2WsAfKf/RG0/V
7
+ Fd+ZeM5251TeTvXH695nlSGauVl9AgMBAAE=
8
+ -----END RSA PUBLIC KEY-----
package/test/tape.js ADDED
@@ -0,0 +1,134 @@
1
+ 'use strict';
2
+
3
+ // Zero-dependency drop-in for the slice of the `tape` API this suite uses,
4
+ // implemented on Node's built-in test runner. Keeping the test bodies
5
+ // byte-for-byte identical (only their `require('tape')` line changes) avoids
6
+ // hand-rewriting security-critical crypto assertions, while removing tape's
7
+ // ~25-dependency tree from the CI dev environment that holds publish creds.
8
+ //
9
+ // Supported surface (all that the crypto-browserify suite calls):
10
+ // test(name[, opts], cb) / t.test(name[, opts], cb) - tests and subtests
11
+ // t.plan(n) / t.end() - completion
12
+ // t.ok / t.notOk / t.equal(s) / t.notEqual(s) / t.deepEqual / t.notDeepEqual
13
+ // t.match / t.doesNotMatch / t.throws / t.doesNotThrow / t.error / t.ifError
14
+ // t.pass / t.fail / t.comment - assertions and output
15
+ // opts.skip (boolean or reason string)
16
+
17
+ var nodeTest = require('node:test');
18
+ var assert = require('node:assert');
19
+
20
+ function normalize(name, opts, cb) {
21
+ if (typeof opts === 'function') {
22
+ cb = opts;
23
+ opts = {};
24
+ }
25
+ return { name: name, opts: opts || {}, cb: cb };
26
+ }
27
+
28
+ function nodeOpts(o) {
29
+ var out = {};
30
+ if (o && typeof o.skip !== 'undefined') out.skip = o.skip;
31
+ if (o && typeof o.todo !== 'undefined') out.todo = o.todo;
32
+ return out;
33
+ }
34
+
35
+ // Runs one tape-style body against a node:test context, resolving when the
36
+ // body signals completion the way tape does: an exhausted plan(), an explicit
37
+ // end(), a returned promise, or (for a parent) once its subtests settle.
38
+ function runBody(t, cb) {
39
+ return new Promise(function (resolve, reject) {
40
+ var planned = null;
41
+ var count = 0;
42
+ var done = false;
43
+ var subtests = [];
44
+
45
+ function settle() {
46
+ if (done) return;
47
+ done = true;
48
+ Promise.all(subtests).then(function () { resolve(); }, reject);
49
+ }
50
+ function bump() {
51
+ count += 1;
52
+ test.assertions += 1;
53
+ if (planned !== null && count >= planned) settle();
54
+ }
55
+
56
+ var ctx = {
57
+ plan: function (n) { planned = n; if (count >= n) settle(); },
58
+ end: function () { settle(); },
59
+ ok: function (v, m) { assert.ok(v, m); bump(); },
60
+ equal: function (a, b, m) { assert.strictEqual(a, b, m); bump(); },
61
+ equals: function (a, b, m) { assert.strictEqual(a, b, m); bump(); },
62
+ notEqual: function (a, b, m) { assert.notStrictEqual(a, b, m); bump(); },
63
+ notEquals: function (a, b, m) { assert.notStrictEqual(a, b, m); bump(); },
64
+ error: function (e, m) { assert.ifError(e); bump(); },
65
+ ifError: function (e, m) { assert.ifError(e); bump(); },
66
+ notOk: function (v, m) { assert.ok(!v, m); bump(); },
67
+ deepEqual: function (a, b, m) { assert.deepStrictEqual(a, b, m); bump(); },
68
+ notDeepEqual: function (a, b, m) { assert.notDeepStrictEqual(a, b, m); bump(); },
69
+ doesNotMatch: function (v, re, m) { assert.doesNotMatch(v, re, m); bump(); },
70
+ match: function (v, re, m) { assert.match(v, re, m); bump(); },
71
+ // tape treats a string second argument as the assertion message;
72
+ // assert.throws treats it as the expected error and rejects it.
73
+ throws: function (fn, expected, m) {
74
+ if (typeof expected === 'string') { m = expected; expected = undefined; }
75
+ assert.throws(fn, expected, m);
76
+ bump();
77
+ },
78
+ doesNotThrow: function (fn, expected, m) {
79
+ if (typeof expected === 'string') { m = expected; expected = undefined; }
80
+ assert.doesNotThrow(fn, expected, m);
81
+ bump();
82
+ },
83
+ fail: function (m) { assert.fail(m || 'fail'); },
84
+ pass: function (m) { assert.ok(true, m); bump(); },
85
+ comment: function (m) { if (typeof t.diagnostic === 'function') t.diagnostic(String(m)); },
86
+ test: function (sn, so, sc) {
87
+ var n = normalize(sn, so, sc);
88
+ subtests.push(t.test(n.name, nodeOpts(n.opts), function (st) {
89
+ return runBody(st, n.cb);
90
+ }));
91
+ }
92
+ };
93
+
94
+ var ret;
95
+ try {
96
+ ret = cb(ctx);
97
+ } catch (err) {
98
+ reject(err);
99
+ return;
100
+ }
101
+
102
+ if (!done && planned === null) {
103
+ if (subtests.length > 0) {
104
+ Promise.all(subtests).then(function () { settle(); }, reject);
105
+ } else if (ret && typeof ret.then === 'function') {
106
+ ret.then(function () { settle(); }, reject);
107
+ }
108
+ // otherwise: an async leaf that will call end() later
109
+ }
110
+ });
111
+ }
112
+
113
+ function test(name, opts, cb) {
114
+ var n = normalize(name, opts, cb);
115
+ return nodeTest(n.name, nodeOpts(n.opts), function (t) {
116
+ return runBody(t, n.cb);
117
+ });
118
+ }
119
+
120
+ test.test = test;
121
+ // Total assertions executed, so a tape-to-node:test conversion can be checked
122
+ // against the count tape reported rather than assumed equivalent.
123
+ test.assertions = 0;
124
+
125
+ // `node --test` reports tests, not assertions, so a conversion from tape can
126
+ // look green while quietly running fewer checks. Set TAPE_SHIM_COUNT=1 to print
127
+ // the total and compare it against the count tape reported.
128
+ if (process.env.TAPE_SHIM_COUNT) {
129
+ process.on('exit', function () {
130
+ process.stdout.write('# assertions ' + test.assertions + '\n');
131
+ });
132
+ }
133
+
134
+ module.exports = test;
package/test/vector.js ADDED
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var bFrom = Buffer.from && Buffer.from.length > 1 ? Buffer.from : function (a, b) { return new Buffer(a, b); };
4
+
5
+ module.exports = {
6
+ p: bFrom('86F5CA03DCFEB225063FF830A0C769B9DD9D6153AD91D7CE27F787C43278B447E6533B86B18BED6E8A48B784A14C252C5BE0DBF60B86D6385BD2F12FB763ED8873ABFD3F5BA2E0A8C0A59082EAC056935E529DAF7C610467899C77ADEDFC846C881870B7B19B2B58F9BE0521A17002E3BDD6B86685EE90B3D9A1B02B782B1779', 'hex'),
7
+ q: bFrom('996F967F6C8E388D9E28D01E205FBA957A5698B1', 'hex'),
8
+ g: bFrom('07B0F92546150B62514BB771E2A0C0CE387F03BDA6C56B505209FF25FD3C133D89BBCD97E904E09114D9A7DEFDEADFC9078EA544D2E401AEECC40BB9FBBF78FD87995A10A1C27CB7789B594BA7EFB5C4326A9FE59A070E136DB77175464ADCA417BE5DCE2F40D10A46A3A3943F26AB7FD9C0398FF8C76EE0A56826A8A88F1DBD', 'hex'),
9
+ x: bFrom('411602CB19A6CCC34494D79D98EF1E7ED5AF25F7', 'hex'),
10
+ y: bFrom('5DF5E01DED31D0297E274E1691C192FE5868FEF9E19A84776454B100CF16F65392195A38B90523E2542EE61871C0440CB87C322FC4B4D2EC5E1E7EC766E1BE8D4CE935437DC11C3C8FD426338933EBFE739CB3465F4D3668C5E473508253B1E682F65CBDC4FAE93C2EA212390E54905A86E2223170B44EAA7DA5DD9FFCFB7F3B', 'hex')
11
+ };
@@ -0,0 +1,12 @@
1
+ -----BEGIN DSA PRIVATE KEY-----
2
+ MIIBugIBAAKBgQCG9coD3P6yJQY/+DCgx2m53Z1hU62R184n94fEMni0R+ZTO4ax
3
+ i+1uiki3hKFMJSxb4Nv2C4bWOFvS8S+3Y+2Ic6v9P1ui4KjApZCC6sBWk15Sna98
4
+ YQRniZx3re38hGyIGHC3sZsrWPm+BSGhcALjvda4ZoXukLPZobAreCsXeQIVAJlv
5
+ ln9sjjiNnijQHiBfupV6VpixAoGAB7D5JUYVC2JRS7dx4qDAzjh/A72mxWtQUgn/
6
+ Jf08Ez2Ju82X6QTgkRTZp9796t/JB46lRNLkAa7sxAu5+794/YeZWhChwny3eJtZ
7
+ S6fvtcQyap/lmgcOE223cXVGStykF75dzi9A0QpGo6OUPyarf9nAOY/4x27gpWgm
8
+ qKiPHb0CgYBd9eAd7THQKX4nThaRwZL+WGj++eGahHdkVLEAzxb2U5IZWji5BSPi
9
+ VC7mGHHARAy4fDIvxLTS7F4efsdm4b6NTOk1Q33BHDyP1CYziTPr/nOcs0ZfTTZo
10
+ xeRzUIJTseaC9ly9xPrpPC6iEjkOVJBahuIiMXC0Tqp9pd2f/Pt/OwIUQRYCyxmm
11
+ zMNElNedmO8eftWvJfc=
12
+ -----END DSA PRIVATE KEY-----
@@ -0,0 +1,19 @@
1
+ -----BEGIN DSA PRIVATE KEY-----
2
+ MIIDVQIBAAKCAQEAnbb7WVG2a7b+HhQPHSzlUCN0Fh/WU43xZIIYZC8LXEjI96Qa
3
+ rfoYcyS4dnT6GCKwDx7PgTaUPXxVdXJk5aGkT/4BLpk24AwdPpMQsBx9F5gF0wWL
4
+ Kp9Ltvlxa/5hF8a1s8xNm+NBEErUqArWyU4AX0uZPhTwketRdDvzMFDDjeI1Vn4b
5
+ NMPWpcDOqhoPNoITw9GYQ9C0sJ3Ln8ctOcjeQfG/FNS7RWPKKDcWIcrTMktqLTkh
6
+ Rb6/rHSIBSNvXKL+krhxzY+cNtMpK1UJyoyqd6Kt/Hv9d92m9xElp0Vv6hU+QzJW
7
+ oiYcagbtNpN5fnmV+tWqu8++PtonQeN1QEriWwIhAPLDEZN0znbJNWmQtGU3Shfy
8
+ P57TUIm9lp9hxt3pmYwfAoIBAFx/9rBvjxQ/6CiEM0k+R2nE2Yis5b4loOJICWcH
9
+ FsYT17DO5pMvj6p8RNLLJFI9pT++T27DWViS0apYxDKKBsRqFWYufqpwOh3s+Luy
10
+ 0F2+LrlWwUKjOGYdEEYcDRNUcghQV/NJQwn/pzxhH3izKtu1dAw2HJ81vpCZfbIB
11
+ Ti71qmF4L1Kr64vWQyxN0Je8VCOyhdr7YNw2ToFh9KKjWso6ELHE0gPMdqRwozr9
12
+ y92SlZhZq9i1bhclJS146sZucbqa4/HdJIcZmHQ5PNTYMhhoAGVHYOHjTAnk0VUX
13
+ n57A3ERz+Za9zm7tHKvti28Rb3rZz1Bd8PmY40qydRSw/+cCggEAZnCYxlRCbHjX
14
+ +CAerGwgPvAw1DYFAywvH6k35SN9vZSfNKCiVk/hJtyLcVxRQYAs4JecgkZGPEDm
15
+ tr2qJRP6YRcocWwuT9U7yVuJ5plJ2WUS6HO5yPjf1JnMMSiCVhreyzH2WOk0wMGX
16
+ 8sTZawXLrWc4Hnt2iJHk2jhD0k2UzftRJum4vyHoNY7g4KMO8T/WpmTA3ONzH3+0
17
+ mkhFpP2CVGh5cqLTglmcm6xODteZgZMHiRMDJVgTSXZBC4nSwXHRI6w1/ZdyGVl6p9FcGppCjlkZT3XHIevLz65EaWpJmvp04EKZ8TICZgFjjLh6t5GQ1KCYY
18
+ xXajuxlYck4mWvq3wIgacdUjCHQ3+prmlHJ6tTifDPTs/GAMW5byrkskz8OTbw=
19
+ -----END DSA PRIVATE KEY-----