From efb6aa8ed9873774930a4fc0b720879053ed069f Mon Sep 17 00:00:00 2001 From: Joshua Blum Date: Wed, 3 Sep 2025 14:14:34 -0400 Subject: [PATCH 1/4] use Error.isError instead of deprecated util.isError --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++++++ .travis.yml | 5 ----- src/log.iced | 4 +--- test/all.iced | 3 +-- 4 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..42bda0c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,27 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '22' + cache: 'npm' + + - name: Install dependencies + run: npm install + + - name: Run tests + run: npx icake test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 64a85e7..0000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - "node" -script: - - icake test diff --git a/src/log.iced b/src/log.iced index a428673..01b0076 100644 --- a/src/log.iced +++ b/src/log.iced @@ -1,6 +1,4 @@ -util = require 'util' - # # The standard logger for saying that things went wrong, or state changed, # inside the RPC system. You can of course change this to be whatever you'd @@ -23,7 +21,7 @@ default_level = L.INFO stringify = (o) -> if not o? then "" else if Buffer.isBuffer(o) then o.toString('utf8') - else if util.isError(o) then o.toString() + else if Error.isError(o) then o.toString() else ("" + o) ##======================================================================= diff --git a/test/all.iced b/test/all.iced index 493c95a..eb6f082 100644 --- a/test/all.iced +++ b/test/all.iced @@ -6,7 +6,6 @@ colors = require 'colors' deep_equal = require 'deep-equal' {debug,log,Logger,RobustTransport,Transport,Client} = require '../src/main' iced = require('../src/iced').runtime -util = require 'util' ##----------------------------------------------------------------------- @@ -71,7 +70,7 @@ class TestCase logger : () -> @_global.logger() search : (s, re, msg) -> - if util.isError(s) + if Error.isError(s) s = s.toString() @assert (s? and s.search(re) >= 0), msg From 697f4968b7dfb84c997cfd40ee534545aa865ca6 Mon Sep 17 00:00:00 2001 From: Joshua Blum Date: Thu, 4 Sep 2025 11:54:11 -0400 Subject: [PATCH 2/4] regen certs, keep node <24 compatibility --- .github/workflows/ci.yml | 6 +- lib/client.js | 4 +- lib/dispatch.js | 2 +- lib/listener.js | 8 +-- lib/log.js | 16 +++++- lib/transport.js | 22 ++++---- lib/version.js | 6 +- package-lock.json | 103 +++++++++++++++++++++++---------- src/log.iced | 22 +++++++- test/all.iced | 2 +- test/ca/bad/ca-crt.pem | 66 ++++++++++++---------- test/ca/bad/ca-crt.srl | 2 +- test/ca/bad/ca-key.pem | 104 +++++++++++++++++----------------- test/ca/bad/server-crt.pem | 58 ++++++++++--------- test/ca/bad/server-csr.pem | 48 ++++++++-------- test/ca/bad/server-key.pem | 103 ++++++++++++++++----------------- test/ca/ca.cnf | 9 ++- test/ca/generate_tls.sh | 4 +- test/ca/good/ca-crt.pem | 66 ++++++++++++---------- test/ca/good/ca-crt.srl | 2 +- test/ca/good/ca-key.pem | 104 +++++++++++++++++----------------- test/ca/good/server-crt.pem | 58 ++++++++++--------- test/ca/good/server-csr.pem | 48 ++++++++-------- test/ca/good/server-key.pem | 103 ++++++++++++++++----------------- test/ca/server.cnf | 9 +++ test/test12.iced | 2 +- test/test_isError.iced | 110 ++++++++++++++++++++++++++++++++++++ 27 files changed, 662 insertions(+), 425 deletions(-) create mode 100644 test/test_isError.iced diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 42bda0c..9aaa594 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,10 @@ jobs: test: runs-on: ubuntu-latest + strategy: + matrix: + node-version: [22, 24] + steps: - name: Checkout code uses: actions/checkout@v4 @@ -17,7 +21,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - node-version: '22' + node-version: ${{ matrix.node-version }} cache: 'npm' - name: Install dependencies diff --git a/lib/client.js b/lib/client.js index f66f473..d6d5021 100644 --- a/lib/client.js +++ b/lib/client.js @@ -27,7 +27,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/client.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/client.iced", funcname: "Client.invoke" }); _this.transport.invoke(arg, __iced_deferrals.defer({ @@ -63,7 +63,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/client.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/client.iced", funcname: "Client.invoke_compressed" }); _this.transport.invoke(arg, __iced_deferrals.defer({ diff --git a/lib/dispatch.js b/lib/dispatch.js index af8b392..166556b 100644 --- a/lib/dispatch.js +++ b/lib/dispatch.js @@ -259,7 +259,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/dispatch.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/dispatch.iced", funcname: "Dispatch.invoke" }); _this._invocations[seqid] = __iced_deferrals.defer({ diff --git a/lib/listener.js b/lib/listener.js index 26a6b67..475140d 100644 --- a/lib/listener.js +++ b/lib/listener.js @@ -141,7 +141,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", funcname: "Listener.close" }); _this._net_server.close(__iced_deferrals.defer({ @@ -215,7 +215,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", funcname: "Listener.listen" }); rv.wait(__iced_deferrals.defer({ @@ -266,7 +266,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", funcname: "Listener.listen_retry" }); _this.listen(__iced_deferrals.defer({ @@ -285,7 +285,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/listener.iced", funcname: "Listener.listen_retry" }); setTimeout(__iced_deferrals.defer({ diff --git a/lib/log.js b/lib/log.js index 319bbc2..320a093 100644 --- a/lib/log.js +++ b/lib/log.js @@ -1,9 +1,21 @@ // Generated by IcedCoffeeScript 108.0.11 (function() { - var L, Logger, default_level, default_logger_class, stringify, util; + var L, Logger, default_level, default_logger_class, isError, stringify, util; util = require('util'); + isError = function(o) { + if (typeof Error.isError === 'function' && Error.isError(o)) { + return true; + } else if (typeof util.isError === 'function' && util.isError(o)) { + return true; + } else { + return o instanceof Error; + } + }; + + exports.isError = isError; + exports.levels = L = { NONE: 0, DEBUG: 1, @@ -21,7 +33,7 @@ return ""; } else if (Buffer.isBuffer(o)) { return o.toString('utf8'); - } else if (util.isError(o)) { + } else if (isError(o)) { return o.toString(); } else { return "" + o; diff --git a/lib/transport.js b/lib/transport.js index 4287b5b..dc49d3b 100644 --- a/lib/transport.js +++ b/lib/transport.js @@ -184,7 +184,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "Transport.connect" }); _this._lock.acquire(__iced_deferrals.defer({ @@ -199,7 +199,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "Transport.connect" }); _this._connect_critical_section(__iced_deferrals.defer({ @@ -396,7 +396,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "Transport._connect_critical_section" }); rv.wait(__iced_deferrals.defer({ @@ -443,7 +443,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "Transport._connect_critical_section" }); _this.hooks.after_connect(__iced_deferrals.defer({ @@ -526,7 +526,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "RobustTransport._connect_critical_section" }); RobustTransport.__super__._connect_critical_section.call(_this, __iced_deferrals.defer({ @@ -562,7 +562,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "RobustTransport._connect_loop" }); _this._lock.acquire(__iced_deferrals.defer({ @@ -599,7 +599,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "RobustTransport._connect_loop" }); setTimeout(__iced_deferrals.defer({ @@ -613,7 +613,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "RobustTransport._connect_loop" }); _this._connect_critical_section(__iced_deferrals.defer({ @@ -631,7 +631,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "RobustTransport._connect_loop" }); setTimeout(__iced_deferrals.defer({ @@ -698,7 +698,7 @@ return (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "RobustTransport._timed_invoke" }); rv.wait(__iced_deferrals.defer({ @@ -734,7 +734,7 @@ (function(__iced_k) { __iced_deferrals = new iced.Deferrals(__iced_k, { parent: ___iced_passed_deferral, - filename: "/Users/marcel/Documents/go/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", + filename: "/Users/joshblum/SourceCode/src/github.com/keybase/node-framed-msgpack-rpc/src/transport.iced", funcname: "RobustTransport._timed_invoke" }); rv.wait(__iced_deferrals.defer({ diff --git a/lib/version.js b/lib/version.js index bd9d8a6..49d0716 100644 --- a/lib/version.js +++ b/lib/version.js @@ -1 +1,5 @@ -exports.version = "1.1.23"; \ No newline at end of file +// Generated by IcedCoffeeScript 108.0.11 +(function() { + exports.version = "1.1.19"; + +}).call(this); diff --git a/package-lock.json b/package-lock.json index b00c92b..e08d1ad 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,119 +1,164 @@ { "name": "framed-msgpack-rpc", - "version": "1.1.21", - "lockfileVersion": 1, + "version": "1.1.23", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@msgpack/msgpack": { + "packages": { + "": { + "name": "framed-msgpack-rpc", + "version": "1.1.23", + "dependencies": { + "iced-error": "0.0.9", + "iced-lock": "^1.0.2", + "iced-runtime": "^1.0.1", + "pako": "^1.0.11", + "path-parse": "^1.0.6", + "typedarray-to-buffer": "^3.1.5" + }, + "devDependencies": { + "colors": "~0.6.2", + "deep-equal": "*", + "iced-coffee-script": "*", + "optimist": "*", + "random-json": "*" + }, + "optionalDependencies": { + "@msgpack/msgpack": "1.9.3", + "purepack": ">=1" + } + }, + "node_modules/@msgpack/msgpack": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/@msgpack/msgpack/-/msgpack-1.9.3.tgz", "integrity": "sha512-ciyjF3R0E+39yXO1B4lsRwWe0LvvvohFglhlmmrUZN696BdqGqnMmyPY9xFOwJnDjIt4gnozARok7xdpQvyFeg==", "optional": true, - "requires": { + "dependencies": { "base64-js": "^1.3.0" + }, + "engines": { + "node": ">= 10" } }, - "base64-js": { + "node_modules/base64-js": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", "optional": true }, - "colors": { + "node_modules/colors": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.1.90" + } }, - "deep-equal": { + "node_modules/deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", "dev": true }, - "iced-coffee-script": { + "node_modules/iced-coffee-script": { "version": "108.0.11", "resolved": "https://registry.npmjs.org/iced-coffee-script/-/iced-coffee-script-108.0.11.tgz", "integrity": "sha1-HXH/k8kElyimRoOFqpvIkf10xY8=", "dev": true, - "requires": { + "dependencies": { "iced-runtime": ">=0.0.1" + }, + "bin": { + "icake": "bin/cake", + "iced": "bin/coffee" + }, + "engines": { + "node": ">=0.8.0" } }, - "iced-error": { + "node_modules/iced-error": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/iced-error/-/iced-error-0.0.9.tgz", "integrity": "sha1-x8MFdhTAoYfZaz0YxtUg5rhy7Tc=" }, - "iced-lock": { + "node_modules/iced-lock": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/iced-lock/-/iced-lock-1.1.0.tgz", "integrity": "sha1-YRbvHKs6zW5rEIk7snumIv0/3nI=", - "requires": { + "dependencies": { "iced-runtime": "^1.0.0" } }, - "iced-runtime": { + "node_modules/iced-runtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/iced-runtime/-/iced-runtime-1.0.3.tgz", "integrity": "sha1-LU9PuZmreqVDCxk8d6f85BGDGc4=" }, - "is-typedarray": { + "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "minimist": { + "node_modules/minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true }, - "optimist": { + "node_modules/optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, - "requires": { + "dependencies": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" } }, - "pako": { + "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, - "purepack": { + "node_modules/purepack": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/purepack/-/purepack-1.0.6.tgz", "integrity": "sha512-L/e3qq/3m/TrYtINo2aBB98oz6w8VHGyFy+arSKwPMZDUNNw2OaQxYnZO6UIZZw2OnRl2qkxGmuSOEfsuHXJdA==", - "optional": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, - "random-json": { + "node_modules/random-json": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/random-json/-/random-json-0.0.2.tgz", "integrity": "sha1-ZDM8Fek/QtkGtCpOyytuxjDOd7Q=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.4.1" + } }, - "typedarray-to-buffer": { + "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "requires": { + "dependencies": { "is-typedarray": "^1.0.0" } }, - "wordwrap": { + "node_modules/wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } } } } diff --git a/src/log.iced b/src/log.iced index 01b0076..3c58e8c 100644 --- a/src/log.iced +++ b/src/log.iced @@ -5,6 +5,26 @@ # like via the @log_obj member of the Transport class. # +util = require 'util' + +##======================================================================= + +isError = (o) -> + # Check using multiple methods for maximum compatibility + # Error.isError() is strict and may not recognize IcedCoffeeScript Error subclasses + # util.isError() is more liberal but doesn't exist in newer Node.js + # instanceof Error is the most basic check + if typeof Error.isError is 'function' and Error.isError(o) + true + else if typeof util.isError is 'function' and util.isError(o) + true + else + o instanceof Error + +exports.isError = isError + +##======================================================================= + exports.levels = L = NONE : 0 DEBUG : 1 @@ -21,7 +41,7 @@ default_level = L.INFO stringify = (o) -> if not o? then "" else if Buffer.isBuffer(o) then o.toString('utf8') - else if Error.isError(o) then o.toString() + else if isError(o) then o.toString() else ("" + o) ##======================================================================= diff --git a/test/all.iced b/test/all.iced index eb6f082..8bc0d9f 100644 --- a/test/all.iced +++ b/test/all.iced @@ -70,7 +70,7 @@ class TestCase logger : () -> @_global.logger() search : (s, re, msg) -> - if Error.isError(s) + if log.isError(s) s = s.toString() @assert (s? and s.search(re) >= 0), msg diff --git a/test/ca/bad/ca-crt.pem b/test/ca/bad/ca-crt.pem index a795691..b7fa81b 100644 --- a/test/ca/bad/ca-crt.pem +++ b/test/ca/bad/ca-crt.pem @@ -1,32 +1,38 @@ -----BEGIN CERTIFICATE----- -MIIFgDCCA2gCCQDZlrrClPOUbTANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMC -VVMxCzAJBgNVBAgMAk1BMQ8wDQYDVQQHDAZCb3N0b24xEzARBgNVBAoMCkV4YW1w -bGUgQ28xEDAOBgNVBAsMB3RlY2hvcHMxCzAJBgNVBAMMAmNhMSAwHgYJKoZIhvcN -AQkBFhFjZXJ0c0BleGFtcGxlLmNvbTAeFw0yMDAzMDkxODAwMzhaFw00NzA3MjUx -ODAwMzhaMIGBMQswCQYDVQQGEwJVUzELMAkGA1UECAwCTUExDzANBgNVBAcMBkJv -c3RvbjETMBEGA1UECgwKRXhhbXBsZSBDbzEQMA4GA1UECwwHdGVjaG9wczELMAkG -A1UEAwwCY2ExIDAeBgkqhkiG9w0BCQEWEWNlcnRzQGV4YW1wbGUuY29tMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA61EiF0psPbEern9R2dwK138VsjGY -jF7PIAzDbmZLxn+yVxm34t1PBKbpMOwyn23XCa559CPoBdb9/2TKh390taSi72CB -3/VWkBEnO9wMoUjWZ//NICQiBnrpT2qqIoj1aFAYfQiOumBgSsASgiO+NwLkLRSz -txiYH2qNKgy5jwMFzIfG7hpfUu1UK0uKAMo6mBQv0X+93onpXTX+rD5A9WvnFum+ -mBQteylY8KORjaBbFX5j9yvYPdA+1l230mu7XkblLnVQ6Wi7kFeU8pSzYKLwZhy9 -MQOKCDAvAzi9AKLPD1C5dKvUNo+rTvvr9ac6iHycB12j+x8HzKVmKx6HKiKYZd0H -8IKWNDp0UFcHJufo80aFxgF0eMHxalCxb/CJWfN9QhlzDT9GdB6GuAAVCJBmU77s -CFf9ZYmQFAH03TTLi3LyWBduv/2eGkgR2MiR+8QSimx+qSH5TggfOEZ/7xJqHpS6 -PEePPAvg/Bsv/7vea721cZ2B6sp6SoGvvOu6BU8R3zS/pRS6gqqjtd/sWenQWk8A -OekBR+TcgOMc5c81DK4+8H0CsStZk8RDzlxqABhu4S4BilWTb6YBTV/eUeREFjgt -ZKfpd+u8U+Vf++72JCnwmqBV12LSTz0JW6zUjpTtjIkXYG8lC1HVlboxpqGax9TS -a1gmzqN1w/ZScP0CAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAk28O8F/JGs7/I22a -3HpnM+bsdSHbJ4XFEHnfkTCw81sHyHVugv1vYGA5R5XJCNGupcNLFtj27aOabAwI -u/kVzoaYUdqwXlMd1nohsoNCCrvdFADWYkQ4XZaMXSDlCeS5aOEP+UER9kK4Si4n -/z8XbQPr6qR9ocv5oNv4qmzPVuzr2Aw7LFy7QL/8USI4fhTVZMj4ya5Gfa1rU5VM -mSHAzfi2eeWYJi1IqkTDgTLJYMoz3wHDmpcYtCwrJrlX2GQGrwUXc/Njo43TTr8A -lZmJV/4IZVZGWoRaZWihqc3x63HJWdO8SxvTyUpDYY+y2MahpfbZabsPuELfnIWW -ievnzsYv9TQQl/g+Rfe4a3+wkF2niuVbHVP2WPfWp+xzYPKEJTaAg5p4RCdIuJsb -j7pmtNXAFmcRHzCYSI8BhQ5zKZU6/8zapAMw9laaYHwauAuFw+4ePYfYfuLyMGWu -Ot0zjrXKpFXsQhmj7r71P8Asw3rmtiKx3j7wtyUxV3tFTqyyQ3fisIOPURhla9tC -pRPHtr3IyukP0wRbp41llQQ1eZn7shypmMyeG3NpP60HVhOd8IT7XodOpOGzKEzX -pq442dpX+/oEjIX17BvsnPTFV2k01ZeQo9BhUJekD+1rtSpeM7d6xv29StY1NyaQ -nqluw6RuD3VKACXzAEr2w81jLXo= +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 +Sg6rJUSTftmWXgL/B33DIjdY -----END CERTIFICATE----- diff --git a/test/ca/bad/ca-crt.srl b/test/ca/bad/ca-crt.srl index 3e175fc..d2621d9 100644 --- a/test/ca/bad/ca-crt.srl +++ b/test/ca/bad/ca-crt.srl @@ -1 +1 @@ -8BF00FD70DE7E13E +8BF00FD70DE7E144 diff --git a/test/ca/bad/ca-key.pem b/test/ca/bad/ca-key.pem index 467c9f2..625bcfe 100644 --- a/test/ca/bad/ca-key.pem +++ b/test/ca/bad/ca-key.pem @@ -1,54 +1,54 @@ -----BEGIN ENCRYPTED PRIVATE KEY----- -MIIJnzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIJ9TSaSGfn4wCAggA -MB0GCWCGSAFlAwQBKgQQTyslAp3XIaxJVvmS7C6HBwSCCVBLhKTrcyl1ympjH62h -libnOAXZ/JkmCHBk44GmDNwFYCj+22ExgsYwdb+jIbbVTxgsYpCwsaMJeOqxCTsj -xhfhwx7Pk1K+gG707cKMhoaFZSids3a1ubEzJxZfJVCVj9uTRgnkPx8ml/GvrkbL -uVCPZLix3weGW7D2aoF5yR8qLBd7a9HlqzjkqqwZtAMA7SwcV4Exr0HXZidMtE1R -ZMp0aS756ADeTH9H891Lqf6jXTzs7fh3Gjvuk+AnDT+b6OG6lDYLuxyP51CUtbgc -58/e1jROPmiPK8VsmBoTaiVjIhOQYOPnp4z7f2qX0LiCFlov9bff8WvRjN//8g1q -kRFmHItIsP2UPKxMzXSQ9FiiBY9phEXHkVb3tcJLLKHBKZQHYIveTgYBQ1xMyukD -sCMxBmPSTf3xeapCsjlObrDrKIZTCrDevPJXAPXm/eg4GeGGrebCgWMoaH0TYB7a -dKsLvGEW6r1SAJq6TMA8ZwFb+vkxFux9Yo2pGUtk3HkK58+EyxMeklNw0tTQ9eCk -exmJ2Sb9d0jibxIZmKOdZWGEA3X0HoyJUOpDLVMNBvjloTjKQnuSz+ZBPTS5pjwj -2TozzKffKNq4KhZtqAuKWCWU5Bldv/Axa488MY6X8/JexsR7SIqmVQb3L+Tr9jCt -X2QwBA8TFe+JrzXlwCCJpotnXT5GRsj1C6Qe09xckmG7BUnSsNNnDy6jrDFcY6yG -y5OTo2A6Ngsd75vsgt+smIZUzT2U0M3Z+taAPT/KjP4Prhpe3bo1k3Apqbh57rTl -qXDMbHUrPv8ZOFzWAXgUgGtRiXNpMS1o7QK80qlWkVshtQIHJvbqk3UYh2t4oTng -61IAtBLFKxlafraanDyqZvw3eJ78qwzkPCJShLV/AJAeaVV6rkaaQTrfm2Uk5gJl -32UfMuUfg9ckMbSS/FgcbXXW7sjy0cU9gGbskzI8codVC9V/J1QwsISPgF0r1+KV -AN7FLF6qZLehXAbM/eRXIccmmIf0dZ9HfDQ+aK0vyII5t/b1gPnAi5NBGB+B9ZYT -N60z3BSWR5HjHsdMfTGWmy3dPs2AeiYfLdny3+0H3vjMrAKdV6+4hADnEsG+0dQy -Px2TfNt7BbtlM8B+sgRVIhwQzpgwyiKlF4uVZKT+RSPHOo1g5dQDg6UxjxcQ5vC/ -Y8/0s1t/zErOEnyXySMYXvDeTTjJMHSeK1qTuplhx4m415zQn+Z7XiqZgBlcEs8E -X29FZRLfS54UX6CNjHvHCy9uG8R3fdY+81IPVN+W25He2ErcHZxE9+gSCuMI2d79 -u5Vrx1aA+oA+fqfa4C6Ab+TzH89S/+zUaXVUSfxIoJmPtFDxzum9FYeFkRk8MkcR -BkpRgFXkUfrdPw/5mqn88N23DNEzaDr3naw881LRZnE07l/+mGe2trhPmiw1kmNb -fDtTCYi0Y6CNaRa33vM0CZgk8n6sESE98xBBZ9pxf99XHVJkQDsYvK8Kb1u5yqfB -xMT3RGvQKqNpyx7/gBm5UCROvVwXwfeRkxST46c5FTkbQvsyh7splN/YUGUy9AeP -l8snqRWc09MrJD6QLjlWibC9ekJ1EjwEVFYvwMDj5qC1cm/GzUmGk2/pMQXbOXMd -Glt3UzVF4zn63OLrVhUd6ko1iy0PnZ6FuP2XHaOgdbuERshueHEwAXzUlz86APs7 -n/3Fu0fLXx5WZxNiCQ8MkLvVHuMI9+87fYsZv7Cze801gYyh19XDyd801w+YWz8D -IUVpYd1xA3PZGVu9JzAzORguVKAL/HVSFW2LEbG0KhFfjCmo/rlcDvvaTAK00203 -n5sX1dJf0tUh42tGqtOWwir8Cjd6YPr0xvoMib5CChxvUOsaypp9/D5Zj21lN8qJ -CXt9WaTYIjfxV5EJh72/S4sW7O5Y2ZMsZJPkdjqipubgWe6rvr7uMUhIT78A3vaR -3c3QB25kR/yMiKZNHbDCDLvoYk9F1b2iw0Wv7RqN19nCh+UxiGw5g52RJVYqzcS7 -5QG7mmy05v8ID7KAoncw7B69zu11UaJJxxB/OHTgd7/cfmsn/k19vFVjU5Sbse5a -I4ckZQe/CfDW10Wm2g5idcQvenrm3CBnVHDsxuuGdZO7fzvHasHx3YePrt+v2Ao+ -8A5Hl+h/B0qePLsqs94PWgW4T5G581g618ZfPLDLm5XRwthCBScWmsB58eJhA6iE -I644W/j0m6WytkS5ukmRmh5nxEb6BJajvn4jeXrda5aHLdCyfQEdTQuXovX550AA -0Vp4toBduKBS+TO+rgMsA9Jyxx4oxBwzjAA3uR25+Yhkv22Hj9izTeyVT0Pnoi/9 -JapQItR3R/NF9zqvikO6sQvd9nSTVcUbjByf7sdnexuFtdh9UNctoXLlkhNV033D -vMl02+HswUZ+gvVhXz21vwvAukmlsAjItlX/xI8iCYONcW1zR2/DuqVLdfE1MutV -oRwqT5pYKadb42moGiLCneLAlct7/os0ZGfcnBoKDmBf0J88Nym8oTc83vbx7GaZ -kNULSn9BErm59NDKr8sJB65Gol6+u7mYKdNKPWBzg8Q98x5Qw+QZrrbPsm15wJ0K -eUF5tBqTiznCXeR+fUEMEXB6/YDluj0lFDCjT1RWxNt1rWCEljTpLF6s5KfLmV7e -q5H20jPQ6Kvhmc4L7Afvieikmg6St9z7KBM4WKtd1RpQw0eUlufedyaj4wCxxE/j -53wuK62OzUu1n7BqiZOG0gq3lctiM1gK442+XKQ4KgORqVYHP/xoIDOj9yeqMqbo -zCujk0VMQ6qR4ruGzXqa5YaDYWGdvr7kIRpP2N6W2JJpmrftZhBxgLKBWuYiE1bl -pDRYsAd07Q2Sxm1blHDcfoNuZX8bPclnCgr4eOsT0cm4ZrpWOnz+/hPcV5LOLXfk -0EbSxT8QWxaAKVlcaJcKZNmR/sdFSd2QPih7AJLwQLEZjkiJUpnZHHu70cI2ALK6 -Onj+YWNJkiYhROVVlw9q6m0qfbLKnSgY2xKQi3f+t3L4gBP4TWQclp3OsuOKXljj -nsoHK3DStiqwXHCeUHzx1Cc+d6KO773HBmO2mwrZC0Uft26gxKeYvyX1aa2MNhyr -aLe9p95VXf1m7Gef3glO3KqhjI8Rj78ySC3vB8EBEHaoeBXhG62JendwhNtDADPl -n84X2+13uZp73HTKHAdef5IMjw== +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 -----END ENCRYPTED PRIVATE KEY----- diff --git a/test/ca/bad/server-crt.pem b/test/ca/bad/server-crt.pem index 4df9724..74cdf0f 100644 --- a/test/ca/bad/server-crt.pem +++ b/test/ca/bad/server-crt.pem @@ -1,32 +1,38 @@ -----BEGIN CERTIFICATE----- -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 +vNUPFzozjwuQK5k= -----END CERTIFICATE----- diff --git a/test/ca/bad/server-csr.pem b/test/ca/bad/server-csr.pem index ad52a37..b959af0 100644 --- a/test/ca/bad/server-csr.pem +++ b/test/ca/bad/server-csr.pem @@ -2,28 +2,28 @@ MIIE5zCCAs8CAQAwgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNQTEPMA0GA1UE BwwGQm9zdG9uMRMwEQYDVQQKDApFeGFtcGxlIENvMRAwDgYDVQQLDAd0ZWNob3Bz MRIwEAYDVQQDDAlsb2NhbGhvc3QxIDAeBgkqhkiG9w0BCQEWEWNlcnRzQGV4YW1w -bGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4h/hFeWCCOOV -tbSToBcxE00YYl87V39vevDbWf3X3lwvRylJBpses27asMmWp7pq+63WzjcoDIXN -lFb51W7CnpY5tmP2042GWGLFPxYzveIS6O58PgUd0nMRr9CzYCPSfWSGn1PMQFZT -KozOimdqXe6WSKC6eiE5kNUhadzx6hfNqWCrKXKnK4PVfCzgcpgalFHl5aEJURzK -YVe55qseQzeyC1Pd+EmQtjdjPM0TyqJAOWEUQDNqmJBsQOT5UPdVGtuLbi2t/Kfm -XXyx4AS6DZahlrcSEp5XmOcEXEHCORh02p/8Ejb9YMqiIw0/w5JVXzM3+kcKm/53 -Pc8IB/RYt8KHrt9VkjKWIDZWtjaWoXX0L8+Gn8CyzDYKBbFVvFHiAzjxIlUcXGzD -YkLYrGvxZRhFiX7rwbFvG7aHye//C9JUJOdxkCPBXAkRWc0ra6ZfSWXejLp/ncIl -KleNt/bcVcAylssj08EszIbritZ+NHKfr3+tdFKeMwC21A2qacfgX/z90Er4vJVo -2mC+Ha08pOaRVc29yUfwADWb8sIBJq/9GshlA0WNzu8QF+QcMRPEVoIiGsRh/S9n -EX+xwlf8vK7A2YkPqPeZSJgr9USe/egxEexxDydbd5ru4rDimZGB4Kj4BJEY7oTk -v8GFMVlVovP5Bi6EnBCHXInxEnrBH3kCAwEAAaAZMBcGCSqGSIb3DQEJBzEKDAhw -YXNzd29yZDANBgkqhkiG9w0BAQsFAAOCAgEAHQOOm4g6+dpeuipR58Ae0VTZ9p/I -XzzaagkUYVfmXFc3tWFs5LiyZZR2HyxLrtxSzc/xx2yXTV68WwQAnUMyl9Lyq5AH -P3Uj+Ie6WPPL9sFsaD7Ow1kt2m70G/zmI1YsL/mMBQ1nBiK3E8854Btj/btfZZrP -PsZy5zKCJTslwfgtGLnJGsETfg0F61LJzR56sNWlFDSNZTdR92/HSL2h30PfqnxQ -/H+EcmVsBllhvnRUb0G4d7tksV/pOEbkuG8Fxrse026bimBhwocbSt5ODaM0s1bQ -Y22BABTwCNVGBfRxVq2Jl0Bf00TBXk5QFB3WKIqez8ENtzEF+hmZSvVqKZ1P8Uie -V+Ghp21/NAWXbMJfM9CNWNSvAFo2mTiM8oEooIcI24XGYg54zYgvV902XYwL1kcw -atoaJ0CfGpOUm8XBVIuVIiLnBGcLG2LsHzD71Nr6CNIx1+SYZcI1oKn87upNHzU5 -AiuIvCppISXu9noxfVbACWAd/3G4AFN2p6FT6DwWyLMzPgYFjnaj8ZVxObUQ4mV6 -7kSvxgFd97+RTm/7QkyF6Cm4VtK/kgZPshP9Rd5GLbh95lNzhdP2+e6foSAHvkbe -IsXPEWObloxirwufKAF0Qi9w6b9LL220uQLRyTMcNI12OAqhSza80wywPbFYX4bR -bQRYmu8eoMXPLAw= +bGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6x4PwNr+irBw +l34+ZwOklm0zsLHmU4j17I6jNbTecjbbnPQZsgKm3r2x5gUD30TrU/PyljRTOwM9 +xgT/VbWzaRVKYJwPIWjICmmRfDKq5FrrGyhqmA7vx/lgl9/yJkvIUXbQsRyNSORc +3S9KqRON/8/Qxd5LxvLd/KpMKkW2mJxJjPoceTOYEwI1qYNG5q7TmYgM3DLiVMt1 +p33ga6xOZASc1vS9Zbl01phghSylHF3EsUBtwCEqq6NqZvGyis6pCWdg8Z+4EYft +ZK0WXNGfWPHdqqO+TfqLS7BeAQDh/HBGiZu/5FpNwIiDxJ8yFTrLx1WPa+QiiaSA +VcLW1JQkhYea9NblKEMkawthpQxYjGQ9Uz/GLL3RUvd2JzavSsteBBvdShhEOroO +9bBxFdFRY6hcJ4ME5yx+K3EAtns9Sfg/8D07ePu+Kz6KRMofGlr2HGit4TMOrSav +VTskNKZtT1tjLdi5+tjmGBhEcqrAPWyNOca2oAzEl70lv/RX2FCP70yki9zb6U7u +O9Dvwt5s6CWJ8vCKB0zRwpuQypiFUftez03DoNI089qX9CnggRppZGypJI+AobE+ +AmPQSvIhPTShvMsbT2XGyMfPLFh7OoY2Ta97WjFhS3/QPwcTdfia9QfQdzRSz7jJ +UljuHzG8JywO89owc/+pxGBYY3fXd4cCAwEAAaAZMBcGCSqGSIb3DQEJBzEKDAhw +YXNzd29yZDANBgkqhkiG9w0BAQsFAAOCAgEAJW1wKr5NNtYHCxXSlhVguH5oAbq9 +Pr67yf2kns/wKjODI0Wbv4J4BRWqX7fwd6WPIwUy7Bat7p9iZuDkHqCqSUoc/PCR +u0kh3OvYoZIGjqQN0A8pvwtFI2vFMx4ICBhT2wSCjUHBxgVm9mJm3VcwDc1/n/Y2 +t8jPEVpCHalPD0BdUUGZHuq9zXc1VtSxoi5pX2d6vpq15rVls2BUBuosorHcobrK +0Hl7fOQG0jX93fAzA4o3mL/To+j9DAT55mTp0yFsredulqX1E+7KyOjq+zMO7LAi +DA4boJzsWDbHW/cIzWm82UqRFIf8v0WTUmiY0NQyZLT+S80BNVQ4RiQjqk7DokLM +2milCWCdhJguoZ3wDPUI9a9V/OeJtjDn8PaaBKtrTinlDnJCaVavkwR+UmQJk9P1 +vD+zsBxiRN2EjHjDrp6v1W+tsMPwu92qvVJCBIaOM7m/68/A7OsCmbSp1gj34T5w +il5R/5MKdEKLOgzV01OUnUGGgFJx9R3PBG9k6dX6S9rY9/90vW6J2Gr0qo79Ua54 +9LCRo0IDpkHfs3uoEU4RNUjaOyXRWeR/Jc6K12VDqJ+qye50KpyCEwLx2ufbMOtq +ofUrjp2FFLNKvP6zNluOctCzfygCD5gv4d0svmgkC2rG6wbGghLSFb9p/6ox31/o +qXOyMCyMWEGsSoE= -----END CERTIFICATE REQUEST----- diff --git a/test/ca/bad/server-key.pem b/test/ca/bad/server-key.pem index e37983d..bb023c3 100644 --- a/test/ca/bad/server-key.pem +++ b/test/ca/bad/server-key.pem @@ -1,51 +1,52 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDrHg/A2v6KsHCX +fj5nA6SWbTOwseZTiPXsjqM1tN5yNtuc9BmyAqbevbHmBQPfROtT8/KWNFM7Az3G +BP9VtbNpFUpgnA8haMgKaZF8MqrkWusbKGqYDu/H+WCX3/ImS8hRdtCxHI1I5Fzd +L0qpE43/z9DF3kvG8t38qkwqRbaYnEmM+hx5M5gTAjWpg0bmrtOZiAzcMuJUy3Wn +feBrrE5kBJzW9L1luXTWmGCFLKUcXcSxQG3AISqro2pm8bKKzqkJZ2Dxn7gRh+1k +rRZc0Z9Y8d2qo75N+otLsF4BAOH8cEaJm7/kWk3AiIPEnzIVOsvHVY9r5CKJpIBV +wtbUlCSFh5r01uUoQyRrC2GlDFiMZD1TP8YsvdFS93YnNq9Ky14EG91KGEQ6ug71 +sHEV0VFjqFwngwTnLH4rcQC2ez1J+D/wPTt4+74rPopEyh8aWvYcaK3hMw6tJq9V +OyQ0pm1PW2Mt2Ln62OYYGERyqsA9bI05xragDMSXvSW/9FfYUI/vTKSL3NvpTu47 +0O/C3mzoJYny8IoHTNHCm5DKmIVR+17PTcOg0jTz2pf0KeCBGmlkbKkkj4ChsT4C +Y9BK8iE9NKG8yxtPZcbIx88sWHs6hjZNr3taMWFLf9A/BxN1+Jr1B9B3NFLPuMlS +WO4fMbwnLA7z2jBz/6nEYFhjd9d3hwIDAQABAoICACuJ3ZDw/MHh+neTQSsCWbAh +eLj3uJcvfZrYrxB69dZgojpmWXvFUfFdX1whAZ6OvKVHP1zhQ6hh6UaKFl5gz2Be +OO+69nJRXPnQoshE+bBfxbm5ukN+QJjfbSuypLzCu82aGvsxNliRMUEkSMcWf+0n +Jpn9mDq3LrRjNMd/MVkBV/1rM2qeS0L53cYOMUr2hOihcQA1zAO3yYnCnZRSzBFp +aUHFAG2d8izq+rSul8Sw+IN6UtiJS8WM9V8q0s0xh8veAO29jfBxI1zJUKLPjpqB +73Jx8AOwqarSdhXpe++rOuSwmtBGiK9mmEAI2tVjlejLx0tLa7nhZIJ9Ghszc6+L +l+/aN/bVYO8gYqW9l2/rj81kyY8zOE22ifDN2epr+Bc6eyaeO/G43RO6Q3EifGDP +P5xEjz7f6o484oF1/TVhfiUGk3ChGCtzBf/ggqHGfM2Xz3FVA0+5SqOtgN/KUhK5 +gl3RG/q8A4lxGK3EPW00eg2MB+S44X4md9bvP3u7MVUFlw8fd+m71NlareS3VxGc +7VKohWc5w5Ru7ijxGVcD+qIjIERQMPVZcqyf8Lms74vpEGYtWYn+4w0NOM5pZFLT +xXowDezgWyFnhxE78jgmVweQde25+oWdWB1VCRQLVXGvHKWqrTrIG+vnXuFh9J9r +wFIE/gMIa9jcquYMo2GBAoIBAQD1+FXYpfqS6iU5dzm/gzQH8X5UGPY4YeVl8MK4 +pXosf787RoFC73vy7kfEWDzVUrfX2NO2gyCSYreFKlHmZrWHevpD26NOzDy2si4T +vzQl94nGB9Ec77RbpPvmea1Fn8BIFkBYYc9BANn2WbpqLdS+/mFnj37IotGZml8Z +DAHE2k/WludnaSS1ZkRF5M7f5pGT2qZjn/cb8Z6m2hGhjhTfBPy2h/PPdk4SGsKi +9g9T1/mS18NuBy2oc+4/o9oifxglpbu2y6W348owTaXWZQ1NfeQKz9t27+qPscib +BfzpQ0N8S4/G1qk4lORuFx2LGlR1UEi7SdGtoRR6Yuw0K+XJAoIBAQD0tG+yT7G1 +zSmcNud/hObk/i9GqDwodlPGAspsmWs+dOYm6MacPPOqS8iZbNDCVVdcZrvVCg6C +SGFevkvDnHUUYvIpdZ7nUS6XAFwaDiyNygESbSspbgSCQe7YB5HGBCD43hIMNCUD +Fz9igUW7se947B+gWI8b1lx/5TXX9FxPsefhIEZTNijt8CXKrdBG1ya6NUxtWyJD +4rW03rhOKdzPBtXYJxmCjJRZySxow8QCHMpaUU+guJTDfmTMzdyZPKJw2vixlm9+ +zdz0JFtpi1/WBDo77S26cAmGshDkaGiZA7eGJ3twdiD88QMGy1i13LBy6T3TITDz +YvGIY8YVEFrPAoIBAQC1lL/jMRzbaklStAaIsBYwKwJEmSzjkLml2OgXIeoggaot +2y2/uUX6oBeRBkbagLdBfEtG+GSKTKAIiaZufbJTMuEgSTu1BydnBADqCQQ5ZxVp +gQnJ39d4tEJV8cuNk5KCZRLZbFNxPGyr5a+thOoCmY5UwmUpPrGXQJQlzGxd44B+ +/WYVPFSiKb4LDw/90Jv117tv3n6xPV0O9fuAFYCo52icY58Er+SQjvrTDO1hyxXu +ZqRaTKhTLEpc5tw5DTRJTqFWH97V8y6nHBtqO61nYKGBrdLpadHyhJ+AehosJcDj +OHEKrBu+roQ4FY50y1pARKV8xdEp6blRZEfVd/apAoIBAQCBvlmqtU6IEiuJxCKi +Hhk+OPdgAztCSNrKFhi10/Jkvx54attDY53eIShPEL7vCsizGVVl81sWAMJ/tW3+ +XSpGkN/M06xZAVYugeZTekhtNTm0R2WnJcoGNmco63qC/xVsXnI7PjqRlPXqiJgs +mH9cIfXy0oGuRM3ukd0mj02Sg8VqO+6NmB3DapzfBaF0rga+nBvVr4hPbhjhuWUH +LHMC4aDoZnLEIT1XDa8aLRHz/Mfdc1dA5B0cOhu/6zaXmOqX48IQhq6/EO+iEtTU +9SzvEHa/51VjkJu8axVBxYoP90SLQMvWKQv8kN0F8TMr2cNEah55nxOROFjP8/bG +nFFJAoIBAE7lWdnC9iRZPtDAl665i/xlxQpSCj5Nyd3ZsAkXr0fv99Wglw730lJC +6679lapNkkrNA018BCaIQwIBBJNvnZNng9ShgLV9morPrn0hipqVd1sGk36xXWSf +LZOoHsA9HMVTuiWEEbD3Q+LlCfLVDEuB5mB+ly6gAD0XIDLXvpZj0z0L0071NVJ/ +eAqUOpziyrqvN4fv6M6S8ac+8Y72eYqCT7A8ErPY7+vxksFna3Y7+XWavFMQzBRc +mTe+n4nnpBfTSU8c+nPEVYsRthEuEK5yFiLJ1dLh/6ZPH3w2SvhOfqAMNoZRcnkx +QH2b2E9h5maXI2BWb5q2CBFoWy4SEIM= +-----END PRIVATE KEY----- diff --git a/test/ca/ca.cnf b/test/ca/ca.cnf index 496e8ba..7a10c25 100644 --- a/test/ca/ca.cnf +++ b/test/ca/ca.cnf @@ -8,7 +8,7 @@ database = ca-database.txt name_opt = CA_default cert_opt = CA_default default_crl_days = 9999 -default_md = md5 +default_md = sha256 [ req ] default_bits = 4096 @@ -17,6 +17,13 @@ distinguished_name = req_distinguished_name attributes = req_attributes prompt = no output_password = password +x509_extensions = v3_ca + +[ v3_ca ] +basicConstraints = critical,CA:TRUE +keyUsage = critical,keyCertSign,cRLSign +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer:always [ req_distinguished_name ] C = US diff --git a/test/ca/generate_tls.sh b/test/ca/generate_tls.sh index f19d1b5..b94f729 100755 --- a/test/ca/generate_tls.sh +++ b/test/ca/generate_tls.sh @@ -16,12 +16,12 @@ cd "$(dirname "$BASH_SOURCE")" # failure case we'll have the test client look for the bad one. for virtuousness in good bad ; do mkdir -p "./$virtuousness" - openssl req -new -x509 -days 9999 -config ca.cnf \ + openssl req -new -x509 -days 9999 -config "ca.cnf" -sha256 \ -keyout "$virtuousness/ca-key.pem" -out "$virtuousness/ca-crt.pem" openssl genrsa -out "$virtuousness/server-key.pem" 4096 openssl req -new -config server.cnf -key "$virtuousness/server-key.pem" \ -out "$virtuousness/server-csr.pem" - openssl x509 -req -extfile server.cnf -days 999 -passin "pass:password" \ + openssl x509 -req -extfile server.cnf -extensions v3_ca -days 999 -passin "pass:password" -sha256 \ -in "$virtuousness/server-csr.pem" -CA "$virtuousness/ca-crt.pem" \ -CAkey "$virtuousness/ca-key.pem" -CAcreateserial \ -out "$virtuousness/server-crt.pem" diff --git a/test/ca/good/ca-crt.pem b/test/ca/good/ca-crt.pem index 08f50ff..ee50650 100644 --- a/test/ca/good/ca-crt.pem +++ b/test/ca/good/ca-crt.pem @@ -1,32 +1,38 @@ -----BEGIN CERTIFICATE----- -MIIFgDCCA2gCCQDPk7FLqlEuVDANBgkqhkiG9w0BAQsFADCBgTELMAkGA1UEBhMC -VVMxCzAJBgNVBAgMAk1BMQ8wDQYDVQQHDAZCb3N0b24xEzARBgNVBAoMCkV4YW1w -bGUgQ28xEDAOBgNVBAsMB3RlY2hvcHMxCzAJBgNVBAMMAmNhMSAwHgYJKoZIhvcN -AQkBFhFjZXJ0c0BleGFtcGxlLmNvbTAeFw0yMDAzMDkxODAwMzVaFw00NzA3MjUx -ODAwMzVaMIGBMQswCQYDVQQGEwJVUzELMAkGA1UECAwCTUExDzANBgNVBAcMBkJv -c3RvbjETMBEGA1UECgwKRXhhbXBsZSBDbzEQMA4GA1UECwwHdGVjaG9wczELMAkG -A1UEAwwCY2ExIDAeBgkqhkiG9w0BCQEWEWNlcnRzQGV4YW1wbGUuY29tMIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAnz+12A3FcJ/WtV+LrWOw6mFxPMGs -0pn0Xs8yY5GFUDRw/YVxyNj6UagCwxFx1fKPNCj3seBaxUY12C7ssPiREXcOPGy7 -yqU1N+VGmqQo3PZKyONdPuOu/X0K7LBIQ2BMtPQxS+bdW2u5K4wTuFsHq44JpHGC -XulVYPYOuNUr+RpvMzFS+3X71OC8hD6UgMFCnNW2kb/MI12zFjUIOCYULWhn4Nj7 -kBZFWFgqNkZVLTDS8w4paStonELD8jHGMplK2g027OEuBw4PclaH/H4gBTjWtElX -w7Da5Q81QpJp+KWEzuGXgSIVtJ0FgMfsAGchG4Po+bU6+lUhfKFAjV8vFSvSnzf/ -Lge5utQduRvJ9VPhDoEg92nnxv69DKyDcbepJqw7P8e8kG473uWk4CVMi/Jc+yX9 -XGK+pmfY5hGuKIUuE9uEjsLz+OBFt7hdaQRijtFzcmAbkEJMa7hheFM7UuJoKCN3 -mbpJgj02kypYGLwwgbDI/+H0q5hoQLHAjSnYAKjT6q4BLGKl/5qyN8ABBZZE/YQ2 -8fwHnLTXbrfsIGGq7AJM/S0DCkpCbvp8BWEMdBlLy6WR6ZgZX7G2My9ex0IE042N -NV0M7PmLuF+kwsbnC1YtkjLpkqZONDP+v+s0sqI3PAXRswW4ltyjWx8pVv3xkXHE -VJZ5Vtl+yimrX/sCAwEAATANBgkqhkiG9w0BAQsFAAOCAgEAAvVQPGFA22p2bZ97 -MfJNKaGhWe+k9NFJ82PxRabWYvAjysCHH7y1mLAzATaXuRsYQYIKMmaGfp8TD2Pd -SYoit40Su5ktzed13vHNTOkEuJ2GsZlX9xaFXoCTx3RZU4rgFWYEW/rk/dXMeYkp -SlY8i3a+dVFH1VwW0c7tPUX9HA1L08il04DYG6rp7+AdZWTC0jabVJ6kZmcCzIfq -1atpMleHk/fbei8tNnsXRo9RFqB7KMz4eP6CEOLTPSkXzXVIW1DduWzz8NXhTowM -+ZOR1tspzMZK2Vp52i8+KXxFEgum13InzekpO75fsy1fePA67L1EX3juZ7koSv9H -ZHQtDhuzAO3TGzwtswAj9/V7IAN7uTg8G+qdjdF7aURuzkG1Ny2RPjEwnZGD+QDe -UyE+bbYLnbZC2COQfFXgb2wck0d2/7+tBMmflRJKplsTO0uSZQnp1C5eToBBm7Oz -AzaEOC8On1QQLAkw3g/w3XhP8h2C0HIbRweD+JJn+YHoJvAOnW97GaZkireIrcOe -gmE+Taj+a8QJeN/f6D51sK2iwIyArfsDEpK8+6RlHdU3zt2En+RNGpX6naoWwfnZ -BWmH0U9W/EozVk27HKyHi33maL0sHJelSdQIJlWJmUMfw5l+IcqL0wntF1T3ijdZ -tYN0IRF517j3SccJ/H/+14wsYW0= +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 +L15jKnsQVpO6Ed4BH/KboGO0 -----END CERTIFICATE----- diff --git a/test/ca/good/ca-crt.srl b/test/ca/good/ca-crt.srl index 78aca88..c7c2da6 100644 --- a/test/ca/good/ca-crt.srl +++ b/test/ca/good/ca-crt.srl @@ -1 +1 @@ -D65C8C2156E04A97 +D65C8C2156E04A9D diff --git a/test/ca/good/ca-key.pem b/test/ca/good/ca-key.pem index ef09467..04f4e91 100644 --- a/test/ca/good/ca-key.pem +++ b/test/ca/good/ca-key.pem @@ -1,54 +1,54 @@ -----BEGIN ENCRYPTED PRIVATE KEY----- -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 -+yw8ZZmPpKuXhRPfb0Nl8GbfeA== +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 -----END ENCRYPTED PRIVATE KEY----- diff --git a/test/ca/good/server-crt.pem b/test/ca/good/server-crt.pem index 8dc72b3..faa1206 100644 --- a/test/ca/good/server-crt.pem +++ b/test/ca/good/server-crt.pem @@ -1,32 +1,38 @@ -----BEGIN CERTIFICATE----- -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 +uiPbTeARE4wh0mw= -----END CERTIFICATE----- diff --git a/test/ca/good/server-csr.pem b/test/ca/good/server-csr.pem index 19822be..e02d9fa 100644 --- a/test/ca/good/server-csr.pem +++ b/test/ca/good/server-csr.pem @@ -2,28 +2,28 @@ MIIE5zCCAs8CAQAwgYgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNQTEPMA0GA1UE BwwGQm9zdG9uMRMwEQYDVQQKDApFeGFtcGxlIENvMRAwDgYDVQQLDAd0ZWNob3Bz MRIwEAYDVQQDDAlsb2NhbGhvc3QxIDAeBgkqhkiG9w0BCQEWEWNlcnRzQGV4YW1w -bGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtzzY3IGTSrLt -j2hexnISmsI38xHWn4Fot11LHPBBqCLSDzWEg6rD+tc0mjdxHRwwb8kRC0D9JV7M -lXVnYX1hA0g+iEFy0NFUSsbZGxAjNNM/iBC1nambw/oA6Aye7hGjIg6QQ3JpisZB -GqMCbrTWrE+k/u47l0ev24TeB2us9pE4SJFK/N4nYMpeOESTJRrguJSosORTLLly -067AMHv6RUmUMTYEAuT1L8Hk6ARiK11PgCfHN9sZMRBCR1HLeoGHDqfobHqIP001 -RPzewDZb8yPJ5nZej9sOhzkeUn/84tqgOkZwlteuxhdo66W29ywpfs/Qvoy5l1s5 -R9yWrn6KsGhkVF54yF51VBPF/fKLJnXOanZDyMqvsVQZF7qaffwQ5W6diX+hFjO+ -bq9rnofcAfeHRpD+OmwRMYStSQVSf0XxU4/zvQ7WoTg0v02Xpa20GwsUr2mldjWo -3VxaEMLvz7oHh7HwG+7lJ8XHr1UuPtCUYsogrUB/Ojzf6DF4Z9E6LLIqUDEmBt33 -i0S6mYS1FcrZ/7z1h+VXQQkZibaIbBL+b5VDGIj5Gf9wUilPL42CpXx8N5rF+U8h -u0NoztAWoHduyHMw4JMq4gJYKhEI5xTp4Pa2et54kxSHOnCwL/nCgTPpTgdUAx9X -CubMi1q6GwqDdMdUkOSHQN1X74n6qRcCAwEAAaAZMBcGCSqGSIb3DQEJBzEKDAhw -YXNzd29yZDANBgkqhkiG9w0BAQsFAAOCAgEAOV8JGEJ6EK30digTgSHyNYNPjp4c -nWlVqmmlrmNMPaA9rCsU2NtHeKycuFzCmt5y/TFGnoYwbwTeggz2wc5IfC3LCR+T -h2ggYYY2dNP0QjzPw+s9JgebYu4ugn6WJpn1qIXaymo+UtGXhDaWNfal8RLIWPvW -tmvH+XGA6eYrUSbVz3LdsuCKGCC/Nh9UOhaj5FQdIqCKU9o2m38D3Fd9DWNakUBu -JO24P1lvEPlrPk2x79Tm2v7mlFEenQYeeeUAzdGYuHFXlOQilJA97d16ZTEMkIES -6RO8HVo/gDr1KyxpbDZOGFp9WO3siFFGAdz/b4RDVQBVWJcV/gbA5JDujqFEV3Hb -USB4TwV6WvbpzTNaRSHPSi49tuiKFxqbhDaXxU/KDXH4OHy/0bOysp/zK1gTH8wk -Bpj0nbOba0J8bb7FYl+I74MDyYU3G0e7BrGeFFlk75H8ZtXWkTnVcSxVYffo3bmv -8hjGYDoR2zj1RIE3WXFKCv4DDyFvVnMceylUwb+QZDXrTTmhOgjNZNImNEeHBq5s -fvaTkqV30TiPME3Vee6jN2Ua85ZvyMRy4iK3LJKFUr1ikOkwzcxF7PQxyPQ7FASJ -/am/5KTJ/LbrOYdCFuSgB934f8sQKp4Gf0zlyvbQDYrfh68Dx3GclvI2RG+qeCN0 -yEWOUMC8NAhKNb4= +bGUuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAqoAgxvA8Gdaz +5ujLE+NEBaLXKIiqXAbMmSLCsHhJZO/MZr1WczO6X4nzWZ0ZbhCdctMi3ggVWMoV +Ib2GYzg1mv0Q2Uz3sxKHg0tn3yI88YhBUlJvFEZqDAwDej16N8r2NkRG92FX7TDo +ZIPqIuQpuGRvbC/FVJE55p+LaF+Jo2n10HsVzw9GzfjEKZWF3AlJ3L+tHr/CoJqc +VKv/iptKCVTGMk+JP58Bde2sW/1flf6DNxvsdoUx33R4luVEvW061bneEH9nh7E1 +eRm5Iyldz609o7rnQCxD5McGEyGiLnLjQBOkSZn0DQ1GcPbwP8VIyTCEQYYhjF0a +nngCwwl57BN3woia7IJTQf+9IHLRMfhfx9KdgUQrrqrD6dBrhgst+97nquaBioXc +KA3Kj7N9JsmUCUhsnPPVZRgaiejSotfvA41h/SXOxygh2k4pLOEzYL+PK/otw4bB +TCdrAo46Fiv6cmBtbh/aUqNgHERxNQnokZedOfgn4yRGUR+JkeLDkYRoo2p6BwFt +U0H+cged5qz8KFBWHQ+tXyVPMoianx6JIoBj+8SBS+OIU192cbzR12ZMM1Fqxv3M +t1EyKEw6nQdjDK7huk8ttBE62TufqGNKgNZS5BrZ7xcpoXWjmpD39l4oV8/uErSW +68XNqGnrRCSM3uV0HwhvZFAKNE/Jnl8CAwEAAaAZMBcGCSqGSIb3DQEJBzEKDAhw +YXNzd29yZDANBgkqhkiG9w0BAQsFAAOCAgEAI0yxwe6TLk7aaKnbCT9Cwbnpv6XQ +Tllcx1nLvDiPlk6C1UxqwOzvCg+RzMNzDivdmfMLP4kcd69Hg0KgZ1flSgYOW/mI +Zkg+R1vPK9MzPCLIjxFok8+0yOXpIhsLYx9EuI83Ta8lvGBh+eZuSBM0IjgwkKbs +ku+0CVNDXhrSUqUz6NB/HD44Cko7vR7OIlQZfvEraHdcpzaHLUkGUVzXQb5P/eXT +4qNzcWSdjPXmoDrybrvIiyGfbZ98NtxYWKXVc3qfF7BLfhpiXetOM2Ld/QzSuMBv +Azvgx/WdtiEvdeGJMILe2PttFUONn0/jDSaIcuwwvayJ8j/akvlT9FTkJCOmR7X8 +FWvdaEVsCO1T27OcsQoee8B/sH8yl9nclRnyLfsuUGbwD2ROoK46vUsDq64pArsd +y/HHQbrwS8II7dseK627kdp55jmBWgFjxWOlnfvtDILNPBbDkX6jTfArKOizw6Tp +SMaVx3N3bOoS7UjuYz1+2hOnK2lqT+NJxfOcEHp6LMDU+IJeT7G1uHdFbd7SWT3T +tJF7KTQ1RYr94rpKmMMi6kytunimeSWWtUDTcN2go2ik8iJbnt9sYgGl+eWtMw5E +it/ZexBJYe85aLfTzdyZssQWGbt5l+VjASqp0JX0GYa0qOb9hAgAsR8fuj7jrJw0 +taPohvGmU96kqY4= -----END CERTIFICATE REQUEST----- diff --git a/test/ca/good/server-key.pem b/test/ca/good/server-key.pem index 4f61636..ca340e7 100644 --- a/test/ca/good/server-key.pem +++ b/test/ca/good/server-key.pem @@ -1,51 +1,52 @@ ------BEGIN RSA PRIVATE KEY----- -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 -n2t4SQKCAQAgbSNKrF3sOiZnICQ2cKJrDrP1lfPx9JLhV4qDCkm9P3BzA5UD2GTq -SvZSecqE9e/kc77FPV6uGzS+3T0G7PSkTbGoiw8MAPrjTOpovforBN7qECIbf4WL -MkLfsc8Id0coCUoX9hPFhXYEG2r7Tr24Q8OKCipyDJHLGr8ZtctVgOSSITWWbdJL -I8TgGdb/OlR1JmXcVw6M+Dk/JQpIuiianSnaYYoVvjjiLo0OKyy0J6Wcb2Sw+C2U -PbqQvZcER3f3bJppjjLTUWzCcf83ZPdXG2340clBzXoLDuVLEr2VMOQ4OhSDFrqZ -2XvOj+I+4z4rvXSY83er7LJOQOL/BYdhAoIBAQC0osspP8TtIpHgKoCf2br6TBM+ -Gfq24+BaYZd+bShoAXKPx8sB0iZtmdYPCq9Rrmy43boF+0umKcKJttj1z1+9hR4w -tj447VK4FwjirEXHphFq/IP6MZH5VWejTt4vd2sJ9MpcLKK9Qiqz05q5k3tyGMo7 -d6yCvF9WBTr4AxZhW87Dwyk6L9zVhCKSaP89cR9DnohHia/7V8bpa73QTYJGi738 -g4BNV4+GGyB54tDZYSaUXonDeJOur81EeJ5cdvqdZajw8PMmTKJlAniIJizZxBdQ -r8HsE1zTc7PyqBnmp0K8+XW4Y3CwLhaYqEgzDflQI0IYXYwZvkB9Rfo58Hy7 ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCqgCDG8DwZ1rPm +6MsT40QFotcoiKpcBsyZIsKweElk78xmvVZzM7pfifNZnRluEJ1y0yLeCBVYyhUh +vYZjODWa/RDZTPezEoeDS2ffIjzxiEFSUm8URmoMDAN6PXo3yvY2REb3YVftMOhk +g+oi5Cm4ZG9sL8VUkTnmn4toX4mjafXQexXPD0bN+MQplYXcCUncv60ev8KgmpxU +q/+Km0oJVMYyT4k/nwF17axb/V+V/oM3G+x2hTHfdHiW5US9bTrVud4Qf2eHsTV5 +GbkjKV3PrT2juudALEPkxwYTIaIucuNAE6RJmfQNDUZw9vA/xUjJMIRBhiGMXRqe +eALDCXnsE3fCiJrsglNB/70gctEx+F/H0p2BRCuuqsPp0GuGCy373ueq5oGKhdwo +DcqPs30myZQJSGyc89VlGBqJ6NKi1+8DjWH9Jc7HKCHaTiks4TNgv48r+i3DhsFM +J2sCjjoWK/pyYG1uH9pSo2AcRHE1CeiRl505+CfjJEZRH4mR4sORhGijanoHAW1T +Qf5yB53mrPwoUFYdD61fJU8yiJqfHokigGP7xIFL44hTX3ZxvNHXZkwzUWrG/cy3 +UTIoTDqdB2MMruG6Ty20ETrZO5+oY0qA1lLkGtnvFymhdaOakPf2XihXz+4StJbr +xc2oaetEJIze5XQfCG9kUAo0T8meXwIDAQABAoICAAbnlWw5AlYRicuKFd9CTtjj +lU8A6dU8OUDiVXwMAvzhcSef90ZHC/8eeQpiAEuixJ2Hy1uufB7SYDSzliOifRk/ +slT6dvV7hJ1eimBQ5KLrX6nTyMfLajP+sI1cu/xSbdIYxb7y5DqoxmB7rxmmn8Hl +31VEQfuAvhWG1IBvjgVeHyRIN8Pg3H8u2dLNSVR109XqtToPjfQvDrGnHXwhecgS +9MvIyMgYylhaPaakBiDu46VxrgvGrRRdhRynQDdjmwRYuJN2dVzbYkz7K7Iu1Ku6 +WkqtIPxKTp2PKcHQlN7IrEdGBFsuruFwbi/Y8DXE6YOsQU7d/bHPe2p7dbEsSxGh +dFYK29/+mBtnOneWxAuphxsYreIprL00MAsunsCyaFXej0m/Min73gHxll9gtweU +ps9PifjztqQZGwrWlxpPHHt2g4E27SVH0D+r4pn6Zn87uSiUHcyS2ZLXRoVpFg5C +Gt1o6jksb8P0v9UsymIkSlz3Vncj/MO4aJDw2Z8RcsPeOz+q03tg4UyUYF+eXGUa +VpvpFDI/0aMOvRwYjFG5/6/Vzfo3+g/hcFgxcL2d642uKMyHaK8Hdn2nyHbK3Rhr +4KmioDfhNlbNdMh+jYqwL5gtXnOQ09VLIGNZUZyUSYnEkxXfICaXpWa/Tf2fiJp0 +ZpRJ4h+23cZtjopo348RAoIBAQDRRkZgrsFwoqFeKzEqn1ijXSbq7fa9WCifFRLf +07xosa9dI3ZllOd+cANvcIbRJJu54HuTDTZjgliVHi/BlzusYFNA9cmzDhBqRadL +xXBTeKxU309XXxcSYAc4tH3IeKgE9zMfFRXkEoQD+P2uECBxWW6JZC8xPE6RodUT +uQDFipFQw5ejujCskBPXjHqi5pWSCjmBVu+Qrlxq4e1cd6o9sisiTAGnt51GJkkL +yPEu2cxCWAQbTIO39zz5evKugcV8AnU01a/mKXFZli/S+kIFqdXL1ZTu0UU0WqWP +xiPEPYDfUEpfivzo4KPxbIwPXRQOhw4XOEPlxhQaVR5g+zutAoIBAQDQkZsZp5nC +AXWsxY60dL/ohGaqPmkx2yfQJPcXwt+1SrFQ2NFMREzK2PdSgUvqBfJNZZ51ZMFD +xp+7NRMyCoIoZPad7tTgriyFYY3cKnQdBTSvU8/Hz5JZKiAA6JxYnc3SyvZapwvG +ZZMnn0Pz/HsplWHIP79++LoUD88OdhjS90hBnrCFDAT7eobTfh7e1LEbW9HmtxeA +jOmc5P2iKUvaVk6dY2exf88Sp4aV823HJvXyhWJQbkfjfiv9/39f/+d2cBJu3zw8 +0VRK4Ns+x56H2Vm68oMi1PNLZmCg5rvfn3IDGi4Fgl1jJufhz/K6zIA+DLGzklJD +Ht4RWH0zGgO7AoIBAFvkOLjxY106/BJmctNdXsV0/MbBsMtZb5TS4xPHXH64LuF9 +1doq9S9OriN7zKb/JSYMTRa4AX7WWGE5/QxLhNdfAI+QnX1zGoAfj6M00erFHR6z +Y5pg1beq1ODwWB7z5AsyJI9sac1Y2AEKjxGkYSqEc4X+qL481d8aqX5ciNs0yjQl +fmtVMVREe4H1XFA1Yc3bkX6altz3wvrns5sbrHQkzM3lhACKHpQT8ZUsKcNBvXAQ +R9VY1qmr9WkytGct8nJOffqyLeepoO0OhndkjiMAfTFg2mG3IGUpvHMSNNhRjUoB +bnbfh8gWA8bZu/JvE4SBhw1pFl9Jh8A8SfeZuY0CggEBAIavUFpLydXnfWcZmGLd +9cOgJHARp3rDjD00ccANXstCtaiAqv+2J2TioSvNRQmV13e1hJNIgilTTXjl+ERb +Vtvg/wTT4vJIZ4WmjqY7YAoRf4ks9UORvm8H7ezISZZMKUrTOC0oLEls9I8koQwg +4iPjTGa1C+NhmUA1ST+McdFiUG3XnSP9tAX1hLV0f1jkPo5tR+nWGD4yQPXJRiR+ +yHXxQAkQ1ThhUYY5Wobg0OZHOZHoIqnP3WqB4sS+RjHnHkB0dOLWE58uimFkPRCY +db5CVFiOHLLUk1wAe6vL9EyfOU/ZixiRq97Ik/tVfui0AKiRJ/vPJIIln7/Rxd/H +D9sCggEAAeeaMT0VFHufl3fe2gcjgVBVjYJdH1QnljRTCrnR1ywKVlkL6b4/JGQd +PIpCGbRSbbvBNjEi2ylmN7l1M/uKWTcCqsvZD1Ir8Y5sERYHD9LhRJG6ghJRFR3r +8IBbLNHpgiIAcNs0Uy3cHAxMSAKMjhPVY7PGyRpHiDw1uLOH6uisjcadhEeK0JzP +ioi5DSYFtPU27KvLDH03qu2evFIUbd3FGkaxJMZYvcjoO2Hf34FiKPF+SYW4tleb +fiF0+kDndDcfF8fFYw2pR42bWeWa/S/Fe6zb+GsPDd2CPAeyej4G/WCrtiY3BzbD +R1+KUkMYEnvO6SwKnA9WoJbxEjKCYQ== +-----END PRIVATE KEY----- diff --git a/test/ca/server.cnf b/test/ca/server.cnf index e1fa2c9..4360997 100644 --- a/test/ca/server.cnf +++ b/test/ca/server.cnf @@ -20,6 +20,15 @@ challengePassword = password [ v3_ca ] authorityInfoAccess = @issuer_info +basicConstraints = CA:FALSE +keyUsage = digitalSignature, keyEncipherment +extendedKeyUsage = serverAuth, clientAuth +subjectAltName = @alt_names + +[ alt_names ] +DNS.1 = localhost +IP.1 = 127.0.0.1 +IP.2 = ::1 [ issuer_info ] OCSP;URI.0 = http://ocsp.example.com/ diff --git a/test/test12.iced b/test/test12.iced index afde642..c3fa9eb 100644 --- a/test/test12.iced +++ b/test/test12.iced @@ -55,6 +55,6 @@ exports.test_bad_hardcoded_CA_cert = (T, cb) -> await x.connect defer err T.assert(err?, "connect should return an error") if err? - T.assert(err.code == 'CERT_SIGNATURE_FAILURE', "error should be because of the bad cert, found: " + err) + T.assert(err.code == 'SELF_SIGNED_CERT_IN_CHAIN', "error should be because of the bad cert, found: " + err) x.close() cb() diff --git a/test/test_isError.iced b/test/test_isError.iced new file mode 100644 index 0000000..13475b6 --- /dev/null +++ b/test/test_isError.iced @@ -0,0 +1,110 @@ +# Test the isError helper function for cross-Node.js version compatibility + +{log} = require '../src/main' +E = require '../src/errors' + +exports.test_isError_with_actual_errors = (T, cb) -> + # Test with standard Error + err1 = new Error("test error") + T.assert log.isError(err1), "Standard Error should be detected as error" + + # Test with TypeError + err2 = new TypeError("type error") + T.assert log.isError(err2), "TypeError should be detected as error" + + # Test with ReferenceError + err3 = new ReferenceError("reference error") + T.assert log.isError(err3), "ReferenceError should be detected as error" + + # Test with custom Error subclass + class CustomError extends Error + constructor: (message) -> + super(message) + @name = "CustomError" + + err4 = new CustomError("custom error") + T.assert log.isError(err4), "Custom Error subclass should be detected as error" + + # Test with iced-error generated EofError + err5 = new E.EofError() + T.assert log.isError(err5), "E.EofError should be detected as error" + + cb() + +exports.test_isError_with_non_errors = (T, cb) -> + # Test with null + T.assert not log.isError(null), "null should not be detected as error" + + # Test with undefined + T.assert not log.isError(undefined), "undefined should not be detected as error" + + # Test with string + T.assert not log.isError("error string"), "string should not be detected as error" + + # Test with number + T.assert not log.isError(42), "number should not be detected as error" + + # Test with boolean + T.assert not log.isError(false), "boolean should not be detected as error" + + # Test with plain object + T.assert not log.isError({message: "not an error"}), "plain object should not be detected as error" + + # Test with array + T.assert not log.isError([]), "array should not be detected as error" + + # Test with function + T.assert not log.isError(() -> "test"), "function should not be detected as error" + + cb() + +exports.test_isError_with_error_like_objects = (T, cb) -> + # Test with object that has error-like properties but isn't an Error + fakeError = { + name: "FakeError" + message: "fake error message" + stack: "fake stack trace" + } + T.assert not log.isError(fakeError), "error-like object should not be detected as error" + + # Test with object that has toString method returning error-like string + weirdObject = { + toString: () -> "Error: weird object" + } + T.assert not log.isError(weirdObject), "object with error-like toString should not be detected as error" + + cb() + +exports.test_isError_cross_version_compatibility = (T, cb) -> + console.log "Testing isError on Node.js #{process.version}" + + err = new Error("compatibility test") + result = log.isError(err) + + T.assert result, "isError should work correctly on Node.js #{process.version}" + + # Test that the function exists and is callable + T.assert typeof log.isError is 'function', "isError should be exported as a function" + + cb() + +exports.test_isError_with_thrown_errors = (T, cb) -> + # Test with caught errors from try/catch + caught_error = null + try + throw new Error("thrown error") + catch e + caught_error = e + + T.assert log.isError(caught_error), "caught error should be detected as error" + + # Test with caught non-Error + caught_non_error = null + try + throw "string error" + catch e + caught_non_error = e + + T.assert not log.isError(caught_non_error), "caught non-Error should not be detected as error" + + cb() From 1a959db34203247f26c5f155f61f2b92f535ae2c Mon Sep 17 00:00:00 2001 From: Joshua Blum Date: Thu, 4 Sep 2025 12:13:02 -0400 Subject: [PATCH 3/4] x --- .github/workflows/ci.yml | 2 +- README.md | 348 ++++++++++++++++++++------------------- lib/transport.js | 8 +- src/transport.iced | 13 +- test/test6.iced | 4 +- 5 files changed, 188 insertions(+), 187 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9aaa594..90a70a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: - node-version: [22, 24] + node-version: [24] steps: - name: Checkout code diff --git a/README.md b/README.md index 278492a..8342162 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ -# Framed Msgpack RPC [![Build Status](https://travis-ci.org/keybase/node-framed-msgpack-rpc.svg)](https://travis-ci.org/keybase/node-framed-msgpack-rpc) +# Framed Msgpack RPC [![CI](https://github.com/keybase/node-framed-msgpack-rpc/actions/workflows/ci.yml/badge.svg)](https://github.com/keybase/node-framed-msgpack-rpc/actions/workflows/ci.yml) -Framed Msgpack RPC (FMPRPC) is an RPC system for node.js. It allows -clients to call remote procedures on servers. An RPC consists of: (1) +Framed Msgpack RPC (FMPRPC) is an RPC system for node.js. It allows +clients to call remote procedures on servers. An RPC consists of: (1) a simple string name; (2) an argument that is a single JSON object; -(3) a reply that is also a single JSON object. Of course, those +(3) a reply that is also a single JSON object. Of course, those objects can be arrays, or dictionaries, so arguments and return values can be complex and interesting. FMPRPC is a variant of the [Msgpack-RPC](http://redmine.msgpack.org/projects/msgpack/wiki/RPCDesign) -protocol specification for node.js. Msgpack-RPC communicates +protocol specification for node.js. Msgpack-RPC communicates binary JSON objects that are efficiently encoded and decoded with the -[MessagePack](http://msgpack.org) serialization format. +[MessagePack](http://msgpack.org) serialization format. "Framed" Msgpack-RPC differs from standard Msgpack-RPC in a small way: the encoding of the length of the packet is prepended to each @@ -21,13 +21,13 @@ framing simplifies implementation, and yields a faster decoder, especially for very large messages. By convention, RPCs are grouped into _programs_, which can have -one or more _versions_. Each (prog,vers) pair then has a collection -of procedures, meaning an RPC is identified unabmiguously by a -(prog,vers,proc) triple. In practice, these three strings are +one or more _versions_. Each (prog,vers) pair then has a collection +of procedures, meaning an RPC is identified unabmiguously by a +(prog,vers,proc) triple. In practice, these three strings are joined with "." characters, and the dotted triple is the RPC name. Due to framing, this protocol is not compatible with existing -Msgpack-RPC systems. This implementation supports TCP transports only +Msgpack-RPC systems. This implementation supports TCP transports only at the current time. ## Example @@ -36,48 +36,48 @@ The simplest way to write a server is with the `Server` class as below: ```javascript -var rpc = require('framed-msgpack-rpc'); -var srv= new rpc.Server ({ - programs : { - "myprog.1" : { - add : function(arg, response) { - response.result(arg.a + arg.b); - } - } +var rpc = require("framed-msgpack-rpc"); +var srv = new rpc.Server({ + programs: { + "myprog.1": { + add: function (arg, response) { + response.result(arg.a + arg.b); + }, }, - port : 8000 + }, + port: 8000, }); srv.listen(function (err) { - if (err) { - console.log("Error binding: " + err); - } else { - console.log("Listening!"); - } + if (err) { + console.log("Error binding: " + err); + } else { + console.log("Listening!"); + } }); ``` a corresponding client might look like: ```javascript -var x = rpc.createTransport({ host: '127.0.0.1', port : 8000 }); +var x = rpc.createTransport({ host: "127.0.0.1", port: 8000 }); x.connect(function (err) { - if (err) { - console.log("error connecting"); - } else { - var c = new rpc.Client(x, "myprog.1"); - c.invoke('add', { a : 5, b : 4}, function(err, response) { - if (err) { - console.log("error in RPC: " + err); - } else { - assert.equal(9, response); - } - x.close(); - }); - } + if (err) { + console.log("error connecting"); + } else { + var c = new rpc.Client(x, "myprog.1"); + c.invoke("add", { a: 5, b: 4 }, function (err, response) { + if (err) { + console.log("error in RPC: " + err); + } else { + assert.equal(9, response); + } + x.close(); + }); + } }); ``` -Or, equivalently, in beautiful +Or, equivalently, in beautiful [IcedCoffeeScript](https://github.com/maxtaco/coffee-script): ```coffee @@ -96,7 +96,7 @@ else ## Installation It should work to just install with npm: - + npm install -g framed-msgpack-rpc If you install by hand, you will need to install the one dependency, @@ -105,14 +105,13 @@ available as `purepack` on npm: npm install -g purepack - ## Full API Documentation If you are building real applications, it's good to look deeper than the simple API introduced above. The full library is based on an -abstraction called an FMPRPC *Transport*. This class represents a -stream of FMPRPC packets. Clients and servers are built on top of -these streams, but not in one-to-one correspondence. That is, several +abstraction called an FMPRPC _Transport_. This class represents a +stream of FMPRPC packets. Clients and servers are built on top of +these streams, but not in one-to-one correspondence. That is, several clients and several servers can share the same Transport object. Thus, FMPRPC supports multiplexing of many logically separated application-level streams over the same underlying TCP stream. @@ -122,7 +121,7 @@ application-level streams over the same underlying TCP stream. The transport mechanics are available via the submodule `transport`: ```javascript -var rpc = require('framed-msgpack-rpc'); +var rpc = require("framed-msgpack-rpc"); var transport = rpc.transport; ``` @@ -130,8 +129,8 @@ Transports are auto-allocated in the case of servers (as part of the listen and connect process), but for clients, you'll find yourself allocating and connecting them explicitly. -All transports are *stream transports* and for now are built atop TCP -streams. Eventually we'll roll out support for Unix domain sockets, but there +All transports are _stream transports_ and for now are built atop TCP +streams. Eventually we'll roll out support for Unix domain sockets, but there is no plan for UDP support right now. #### transport.Transport @@ -139,32 +138,33 @@ is no plan for UDP support right now. ```javascript var x = new transport.Transport(opts); ``` + Make a new TCP transport, where `opts` are: -* `port` - the port to connect to -* `host` - the host to connect to, or `localhost` if none was given -* `path` - the path to connect to, if using Unix domain sockets -* `tcp_opts` - TCP options to pass to node's `net.connect` method, which - is `{}` by default -* `log_obj` - An object to use to log info, warnings, and errors on this - transport. By default, the default logging to `console.log` will be used. - See *Logging* below. -* `do_tcp_delay` - By default, the `Transport` will `setNoDelay` on - TCP streams, but if you specify this flag as true, that behavior will - be suppressed. -* `hooks` - Hooks to be called on connection error and EOF. Especially - useful for `RobustTransport`s (see below). The known hooks are - * `hooks.connected` - Called when a transport is connected - * `hooks.eof` - Called when a transport hits EOF. -* `dbgr` - A debugging object. If set, it will turn on RPC tracing - via the given debugging object. See _Debugging_ below. I would have liked - to call this a `debugger`, but that's a reserved keyword in node. - +- `port` - the port to connect to +- `host` - the host to connect to, or `localhost` if none was given +- `path` - the path to connect to, if using Unix domain sockets +- `tcp_opts` - TCP options to pass to node's `net.connect` method, which + is `{}` by default +- `log_obj` - An object to use to log info, warnings, and errors on this + transport. By default, the default logging to `console.log` will be used. + See _Logging_ below. +- `do_tcp_delay` - By default, the `Transport` will `setNoDelay` on + TCP streams, but if you specify this flag as true, that behavior will + be suppressed. +- `hooks` - Hooks to be called on connection error and EOF. Especially + useful for `RobustTransport`s (see below). The known hooks are + - `hooks.connected` - Called when a transport is connected + - `hooks.eof` - Called when a transport hits EOF. +- `dbgr` - A debugging object. If set, it will turn on RPC tracing + via the given debugging object. See _Debugging_ below. I would have liked + to call this a `debugger`, but that's a reserved keyword in node. The following two options are used internally by `Server` and `Listener` classes, and should not be accessed directly: -* `tcp_stream` - Wrap an existing TCP stream -* `parent` - A parent listener object + +- `tcp_stream` - Wrap an existing TCP stream +- `parent` - A parent listener object #### transport.RobustTransport @@ -174,32 +174,36 @@ var x = new transport.RobustTransport(opts, ropts); A subclass of the above; with some more features: -* If disconnected, will attempt to reconnect until successful. -* Will queue calls issued in between a disconnect and a reconnect. -* Will warn of RPCs that are outstanding for more than the given - threshholds. +- If disconnected, will attempt to reconnect until successful. +- Will queue calls issued in between a disconnect and a reconnect. +- Will warn of RPCs that are outstanding for more than the given + thresholds. The `opts` dictionary is as in `Transport`, but there are additional options that can be specified via `ropts`: -* `reconnect_delay` - a float - the number of seconds to wait between - connection attempts. -* `queue_max` - the maximum number of RPCs to queue while reconnecting -* `warn_threshhold` - RPCs that take more than this number of seconds - are warned about via the logging object. -* `error_threshhold` - RPCs that take more than this number of seconds - are errored about via the logging object. Also, a timer will be set - up to warn after this many seconds if the RPC isn't completed in time, - while the RPC is still outstanding. +- `reconnect_delay` - a float - the number of seconds to wait between + connection attempts. +- `queue_max` - the maximum number of RPCs to queue while reconnecting +- `warn_threshold` - RPCs that take more than this number of seconds + are warned about via the logging object. +- `error_threshold` - RPCs that take more than this number of seconds + are errored about via the logging object. Also, a timer will be set + up to warn after this many seconds if the RPC isn't completed in time, + while the RPC is still outstanding. #### transport.Transport.connect ```javascript -x.connect(function (err) { if (!err) { console.log("connected!") } }); +x.connect(function (err) { + if (!err) { + console.log("connected!"); + } +}); ``` Connect a transport if it's not already connected. Takes a single callback, -which takes one parameter --- an error that's null in the case of a +which takes one parameter --- an error that's null in the case of a success, and non-null otherwise. In the case of a `RobustTransport`, the callback will be fired after the initial connection attempt, but will continue to reconnect in the background. Additional error and warnings are issued @@ -219,11 +223,11 @@ and `false` otherwise. #### transport.Transport.close ```javascript -x.close() +x.close(); ``` -Call to actively close the given connection. It will trigger all of the -regular hooks and warnings that an implicit close would. In the case +Call to actively close the given connection. It will trigger all of the +regular hooks and warnings that an implicit close would. In the case of a `RobustTransport`, the transport will not attempt a reconnection. #### transport.Transport.remote_address @@ -232,58 +236,57 @@ of a `RobustTransport`, the transport will not attempt a reconnection. var ip = x.remote_address(); ``` -Get the IP address of the remote side of the connection. Note that this +Get the IP address of the remote side of the connection. Note that this can change for a RobustTransport, if the DNS resolution for the given -hostname was updated and the connection was reestablished. Will +hostname was updated and the connection was reestablished. Will return a string in dotted-quad notation. #### transport.Transport.get_generation ```javascript -var g = x.get_generation() +var g = x.get_generation(); ``` -Get the generation number of this stream connection. In the case of a -regular Transport, it's always going to be 1. In the case of a +Get the generation number of this stream connection. In the case of a +regular Transport, it's always going to be 1. In the case of a `RobustTransport`, this number is incremented every time the connection is reestablished. - #### transport.Transport.get_logger ```javascript -var l = x.get_logger() +var l = x.get_logger(); ``` If you want to grab to the logger on the given transport, use this -method. For instance, you can change the verbosity level with +method. For instance, you can change the verbosity level with `x.get_logger().set_level(2)` if you are using the standard logging object. #### transport.Transport.set_logger ```javascript -x.set_logger(new logger.Logger({prefix : ">", level : logger.WARN})); +x.set_logger(new logger.Logger({ prefix: ">", level: logger.WARN })); ``` -Set the logger object on this Transport to be the passed logger. +Set the logger object on this Transport to be the passed logger. You can pass a subclass of the given `Logger` class if you need custom behavior to fit in with your logging system. #### transport.Transport.set_debugger ```javascript -x.set_debugger(obj) +x.set_debugger(obj); ``` -Set a debugging object on a transport. After this is done, the core +Set a debugging object on a transport. After this is done, the core will report that an RPC call was made or answered, either on the -server or client. See *Debugging* below for more details. +server or client. See _Debugging_ below for more details. #### transport.Transport.set_debug_flags ```javascript -x.set_debug_flags(flags) +x.set_debug_flags(flags); ``` Call `set_debugger` as above but with an object that will be allocated. @@ -292,34 +295,34 @@ given by `flags`. All debug traces are set to transport's logger object at the `log.levels.DEBUG` level. These flags can either be in numerical form (e.g., `0xfff` ) or string -literal form (e.g., `"a1m"`). If in the latter form, the flags will +literal form (e.g., `"a1m"`). If in the latter form, the flags will be converted into the numerical form via `sflags_to_flags`. #### transport.createTransport or rpc.createTransport ```javascript -var x = rpc.createTransport(opts) +var x = rpc.createTransport(opts); ``` Create either a new `Transport` or `RobustTransport` with just one call. -The `opts` array is as above, but with a few differences. First, the +The `opts` array is as above, but with a few differences. First, the `opts` here is the merge of the `opts` and `ropts` above for the case of `RobustTransport`s; and second, an option of `robust : true` will enable the robust variety of the transport. Note that by default, I like function to use underscores rather than -camel case, but there's a lot of functions like `createConnection` +camel case, but there's a lot of functions like `createConnection` in the standard library, so this particular function is in camel -case. Sorry for the inconsistency. +case. Sorry for the inconsistency. ### Clients `Clients` are thin wrappers around `Transports`, allowing RPC client -calls. Several clients can share the same Transport. Import the +calls. Several clients can share the same Transport. Import the client libraries as a submodule: ```javascript -var client = require('framed-msgpack-rpc').client; +var client = require("framed-msgpack-rpc").client; ``` The API is as follows: @@ -333,7 +336,7 @@ var c = new client.Client(x, prog); ``` Where `x` is a `transport.Transport` and `prog` is the name of an RPC -program. Examples for `prog` are of the form `myprog.1`, meaning the +program. Examples for `prog` are of the form `myprog.1`, meaning the program is called `myprog` and the version is 1. Given a client, you can now make RPC calls over the specified connection: @@ -348,15 +351,15 @@ c.invoke(proc, arg, function(err, res) {}); The parameters are: -* proc - The name of the RPC procedure. It is joined with the - RPC `program.version` specified when the client was allocated, yielding - a dotted triple that's sent over the wire. -* arg - A JSON object that's the argument to the RPC. -* cb - A callback that's fired once there is a reply to the RPC. `err` -is `null` in the success case, and non-null otherwise. The `res` object is -optionally returned in a success case, giving the reply to the RPC. If -the server supplied a `null` result, then `res` can still be `null` in -the case of success. +- proc - The name of the RPC procedure. It is joined with the + RPC `program.version` specified when the client was allocated, yielding + a dotted triple that's sent over the wire. +- arg - A JSON object that's the argument to the RPC. +- cb - A callback that's fired once there is a reply to the RPC. `err` + is `null` in the success case, and non-null otherwise. The `res` object is + optionally returned in a success case, giving the reply to the RPC. If + the server supplied a `null` result, then `res` can still be `null` in + the case of success. #### client.Client.notify @@ -367,23 +370,23 @@ c.notify(proc, arg); ``` Here, there is no callback, and no way to check if the sever received -the message (or got an error). Notifying seems weird to me, but it +the message (or got an error). Notifying seems weird to me, but it was in the original MsgpackRpc system, so it's reproduced here. ### Servers -To write a server, the programmer must specify a series of *hooks* -that handle individual RPCs. There are a few ways to achieve these -ends with this library. The big difference is what is the `this` -object for the hook. In the case of the `server.Server` and +To write a server, the programmer must specify a series of _hooks_ +that handle individual RPCs. There are a few ways to achieve these +ends with this library. The big difference is what is the `this` +object for the hook. In the case of the `server.Server` and `server.SimpleServer` classes, the `this` object is the server itself. In the `server.ContextualServer` class, the `this` object is a -per-connection context object. The first two are good for most cases. +per-connection context object. The first two are good for most cases. You can get the server library through the submodule server: ```javascript -var server = require('framed-msgpack-rpc').server; +var server = require("framed-msgpack-rpc").server; ``` But most of the classes are also rexported from the top-level module. @@ -399,15 +402,15 @@ var s = new server.Server(opts); For `opts`, the fields are: -* `port` - A port to bind to -* `host` - A host IP to bind to -* `path` - A socket path to bind to, if being run on as Unix domain socket. -* `TransportClass` - A transport class to use when allocating a new - Transport for an incoming connection. By default, it's `transport.Transport` -* `log_obj` - A log object to log errors, and also to assign to +- `port` - A port to bind to +- `host` - A host IP to bind to +- `path` - A socket path to bind to, if being run on as Unix domain socket. +- `TransportClass` - A transport class to use when allocating a new + Transport for an incoming connection. By default, it's `transport.Transport` +- `log_obj` - A log object to log errors, and also to assign to (via `make_child`) to child connections. Use the default log class (which logs to `console.log`) if unspecified. -* `programs` - Programs to support, following this JSON schema: +- `programs` - Programs to support, following this JSON schema: ```javascript { @@ -422,20 +425,20 @@ For `opts`, the fields are: } ``` -Each hook in the object is called once per RPC. The `arg` argument is -the argument specified by the remote client. The `res` argument is +Each hook in the object is called once per RPC. The `arg` argument is +the argument specified by the remote client. The `res` argument is what the hook should call to send its reply to the client (by calling -`res.result(some_object)`). A server can also reject the RPC via -`res.error(some_error_string)`). The final argument, `x`, is the -transport over which the RPC came in to the server. For instance, the +`res.result(some_object)`). A server can also reject the RPC via +`res.error(some_error_string)`). The final argument, `x`, is the +transport over which the RPC came in to the server. For instance, the server can call `x.remote_address()` to figure out who the remote client is. #### server.SimpleServer A `SimpleServer` behaves like a `Server` but is simplified in some -ways. First off, it only handles one program, which is typically -set on object construction. Second off, it depends on inheritance; +ways. First off, it only handles one program, which is typically +set on object construction. Second off, it depends on inheritance; I've used CoffeeScript here, but you can use hand-rolled JavaScript style inheritance too. Finally, it infers your method hooks: on construction, it iterates over all methods in the current object, @@ -447,7 +450,7 @@ Here's an example: class MyServer extends server.SimpleServer constructor : (d) -> - super d + super d @set_program_name "myprog.1" h_reflect : (arg, res, x) -> res.result arg @@ -464,7 +467,7 @@ Here's an example: ```coffeescript class Prog1 extends server.Handler - h_foo : (arg, res) -> + h_foo : (arg, res) -> console.log "RPC to foo() from #{@transport.remote_address()}" res.result { y : arg.i + 2 } h_bar : (arg, res) -> res.result { y : arg.j * arg.k } @@ -473,12 +476,12 @@ class Prog2 extends server.Handler h_foo : (arg, res) -> res.error "not yet implemented" h_bar : (arg, res) -> res.error "not yet implemented" -s = new server.ContextualServer - port : 8881 - classes : +s = new server.ContextualServer + port : 8881 + classes : "prog.1" : Prog1 "prog.2" : Prog2 - + await s.listen defer err console.log "Error: #{err}" if err? ``` @@ -486,10 +489,10 @@ console.log "Error: #{err}" if err? This code constructs a `server.ContextualServer` with a `classes` object that maps program names to classes. Whenever a new connection is established in the above example, a new `Prog1` object and a new -`Prog2` object is created. The former will handle all RPCs to +`Prog2` object is created. The former will handle all RPCs to `prog.1` on that connection; the latter will handle all RPCs to `prog.2`. Note that the `this` object here is per-connection, not -per-server. This allows you to store all sorts of interesting +per-server. This allows you to store all sorts of interesting per-connection state. For more info, please see [server.iced](https://github.com/maxtaco/node-framed-msgpack-rpc/blob/master/src/server.iced). @@ -498,7 +501,7 @@ per-connection state. For more info, please see Bind to a port, and listen for incoming connections ```javascript -s.listen(function(err) {}); +s.listen(function (err) {}); ``` On success, the callback is fired with `null`, and otherwise, @@ -509,10 +512,10 @@ an error object is passed. As above, but keep retrying if binding failed: ```javascript -s.listen_retry(delay, function(err) {}); +s.listen_retry(delay, function (err) {}); ``` -The retry happens every `delay` seconds. The given function is called +The retry happens every `delay` seconds. The given function is called back with `null` once the reconnection happens, or with the actual error if it was other than `err.code = 'EADDRINUSE'`. @@ -531,37 +534,37 @@ Walk the list of children, calling the specified function on each child connection in the list: ```javascript -s.walk_children (function(ch) {}); +s.walk_children(function (ch) {}); ``` ### Logging Hooks As you could imagine, an RPC can generate a lot of errors, warnings, and -informational messages. Examples include: unmarshalling failures, -unexpected EOFs, connection breaking, unhandled RPCs, etc. +informational messages. Examples include: unmarshalling failures, +unexpected EOFs, connection breaking, unhandled RPCs, etc. -This package has an extensible logging system to fit in with your +This package has an extensible logging system to fit in with your application, and a default logging system that should work for a lot of cases too. The basic classes can be found in the `log` submodule, accessible as: ```javascript -var log = require('framed-msgpack-rpc').log; +var log = require("framed-msgpack-rpc").log; ``` When a new `Listener` or `Transport` class is instantiated, it will need a new logger object (note that `Listener` is the base class for the -various `Server` classes). It will try the following steps to pick a +various `Server` classes). It will try the following steps to pick a `log.Logger` object: -1. Access the `opt.log_obj` passed to the `Transport` or `Listener` - constructor. This is often times an object of a custom subclass - of `log.Logger`. +1. Access the `opt.log_obj` passed to the `Transport` or `Listener` + constructor. This is often times an object of a custom subclass + of `log.Logger`. 1. If that is was not specified, allocate a new `log.Logger` object: - 1. If `log.set_default_logger_class` was previous called, allocate - one of those objects. - 1. Otherwise, allocate a `log.Logger` object. + 1. If `log.set_default_logger_class` was previous called, allocate + one of those objects. + 1. Otherwise, allocate a `log.Logger` object. Once this `log.Logger` object is allocated, the `Transport` or `Listener` class will call `set_remote` on it, so that subsequent log @@ -570,18 +573,18 @@ lines will show which client or server generated the message. Logging is via the following methods, in ascending order of severity: ```javascript -log.Logger.debug(msg) -log.Logger.info(msg) -log.Logger.warn(msg) -log.Logger.error(msg) -log.Logger.fatal(msg) +log.Logger.debug(msg); +log.Logger.info(msg); +log.Logger.warn(msg); +log.Logger.error(msg); +log.Logger.fatal(msg); ``` They all, by default, write the message `msg` to `console.log` while -prepending the `remote_address` supplied above. The default log level +prepending the `remote_address` supplied above. The default log level is set to `log.levels.INFO`, but you can set it to `log.levels.WARN`, -`log.levels.ERRORS`, etc. Warnings at lower levels will be silently -swallowed. For the default logger object, the method +`log.levels.ERRORS`, etc. Warnings at lower levels will be silently +swallowed. For the default logger object, the method `log.Logger.set_level` can be used to set the logging level as desired. To make a custom logger class, you can subclass `log.Logger`, or use @@ -602,7 +605,7 @@ be installed when a `Transport` is allocated, by specifying the FMPRPC objects. If a debugging object is active, it is `call`ed with `debug.Message` -object when an RPC comes in or goes out. The `debug.Message` object +object when an RPC comes in or goes out. The `debug.Message` object contains a bunch of fields: ```coffeescript @@ -611,7 +614,7 @@ F = REMOTE : 0x2 SEQID : 0x4 TIMESTAMP : 0x8 - ERR : 0x10 + ERR : 0x10 ARG : 0x20 RES : 0x40 TYPE : 0x80 @@ -619,7 +622,7 @@ F = ``` Debugging objects can choose to spam some or all of these fields, -depending on how bad the bug is. For most purposes, the supplied +depending on how bad the bug is. For most purposes, the supplied `debug.Debugger` makes a nice debugger object that you can easily tune to print only the fields of your choosing (via the `flags` parameter). @@ -641,4 +644,3 @@ To come. See [packetizer.iced](https://github.com/maxtaco/node-framed-msgpack-rp ### Dispatch To come. See [dispatch.iced](https://github.com/maxtaco/node-framed-msgpack-rpc/blob/master/src/dispatch.iced) for details. - diff --git a/lib/transport.js b/lib/transport.js index dc49d3b..0c87c70 100644 --- a/lib/transport.js +++ b/lib/transport.js @@ -491,12 +491,12 @@ d = {}; } RobustTransport.__super__.constructor.call(this, sd); - this.queue_max = d.queue_max, this.warn_threshhold = d.warn_threshhold, this.error_threshhold = d.error_threshhold; + this.queue_max = d.queue_max, this.warn_threshold = d.warn_threshold, this.error_threshold = d.error_threshold; this.reconnect_delay = (x = d.reconnect_delay) ? x : 1; if (this.queue_max == null) { this.queue_max = 1000; } - this._time_rpcs = (this.warn_threshhold != null) || (this.error_threshhold != null); + this._time_rpcs = (this.warn_threshold != null) || (this.error_threshold != null); this._waiters = []; } @@ -675,8 +675,8 @@ }); rv = new iced.Rendezvous; meth = this.make_method(arg.program, arg.method); - et = this.error_threshhold ? this.error_threshhold * 1000 : 0; - wt = this.warn_threshhold ? this.warn_threshhold * 1000 : 0; + et = this.error_threshold ? this.error_threshold * 1000 : 0; + wt = this.warn_threshold ? this.warn_threshold * 1000 : 0; if (et) { to = setTimeout(rv.id(TIMEOUT).defer({ lineno: 439, diff --git a/src/transport.iced b/src/transport.iced index 82b6607..58b2571 100644 --- a/src/transport.iced +++ b/src/transport.iced @@ -342,10 +342,10 @@ exports.RobustTransport = class RobustTransport extends Transport # queue_max -- the limit to how many calls we'll queue while we're # waiting on a reconnect. # - # warn_threshhold -- if a call takes more than this number of seconds, + # warn_threshold -- if a call takes more than this number of seconds, # a warning will be fired when the RPC completes. # - # error_threshhold -- if a call *is taking* more than this number of + # error_threshold -- if a call *is taking* more than this number of # seconds, we will make an error output while the RPC is outstanding, # and then make an error after we know how long it took. # @@ -353,7 +353,7 @@ exports.RobustTransport = class RobustTransport extends Transport constructor : (sd, d = {}) -> super sd - { @queue_max, @warn_threshhold, @error_threshhold } = d + { @queue_max, @warn_threshold, @error_threshold } = d # in seconds, provide a default of 1s for a reconnect delay # if none was given. Also, 0 is not a valid value. @@ -364,7 +364,7 @@ exports.RobustTransport = class RobustTransport extends Transport # supply here as 1000. @queue_max = 1000 unless @queue_max? - @_time_rpcs = @warn_threshhold? or @error_threshhold? + @_time_rpcs = @warn_threshold? or @error_threshold? @_waiters = [] @@ -433,8 +433,8 @@ exports.RobustTransport = class RobustTransport extends Transport rv = new iced.Rendezvous meth = @make_method arg.program, arg.method - et = if @error_threshhold then @error_threshhold*1000 else 0 - wt = if @warn_threshhold then @warn_threshhold*1000 else 0 + et = if @error_threshold then @error_threshold*1000 else 0 + wt = if @warn_threshold then @warn_threshold*1000 else 0 # Keep a handle to this timeout so we can clear it later on success to = setTimeout rv.id(TIMEOUT).defer(), et if et @@ -489,4 +489,3 @@ exports.createTransport = (opts) -> else new Transport opts ##======================================================================= - diff --git a/test/test6.iced b/test/test6.iced index 7079948..4ed2975 100644 --- a/test/test6.iced +++ b/test/test6.iced @@ -36,8 +36,8 @@ exports.init = (cb) -> exports.slow_warnings = (T, cb) -> rtops = - warn_threshhold : SLOW / 4000 - error_threshhold : SLOW / 2000 + warn_threshold : SLOW / 4000 + error_threshold : SLOW / 2000 await T.connect PORT, "P.1", defer(x, c), rtops From 50d1a53eada2e8d03f4121ce1da88b9df00db1cc Mon Sep 17 00:00:00 2001 From: Joshua Blum Date: Thu, 4 Sep 2025 12:40:32 -0400 Subject: [PATCH 4/4] x --- .github/workflows/ci.yml | 38 +++++++++++++++++++------------------- test/test5.iced | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 90a70a1..e37e101 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,30 +2,30 @@ name: CI on: push: - branches: [ master ] + branches: [master] pull_request: - branches: [ master ] + branches: [master] jobs: test: runs-on: ubuntu-latest - + strategy: matrix: - node-version: [24] - + node-version: [22, 24] + steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - - name: Install dependencies - run: npm install - - - name: Run tests - run: npx icake test + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: "npm" + + - name: Install dependencies + run: npm install + + - name: Run tests + run: npx icake test diff --git a/test/test5.iced b/test/test5.iced index c61a2c8..5ee48cf 100644 --- a/test/test5.iced +++ b/test/test5.iced @@ -35,7 +35,7 @@ exports.reconnect = (T, cb) -> await T.test_rpc c, "foo", { i : 4 } , { y : 6 }, defer() else await T.test_rpc_compressed c, "foo", COMPRESSION_TYPE_GZIP, { i : 4 } , { y : 6 }, defer() - await setTimeout defer(), 10 + await setTimeout defer(), 20 x.close()