libp2p 0.36.0 → 0.36.2-199395d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -21
- package/README.md +13 -10
- package/dist/src/address-manager/index.d.ts +33 -52
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +81 -0
- package/dist/src/address-manager/index.js.map +1 -0
- package/dist/src/circuit/auto-relay.d.ts +24 -85
- package/dist/src/circuit/auto-relay.d.ts.map +1 -1
- package/dist/src/circuit/auto-relay.js +215 -0
- package/dist/src/circuit/auto-relay.js.map +1 -0
- package/dist/src/circuit/circuit/hop.d.ts +25 -52
- package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
- package/dist/src/circuit/circuit/hop.js +138 -0
- package/dist/src/circuit/circuit/hop.js.map +1 -0
- package/dist/src/circuit/circuit/stop.d.ts +16 -8
- package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
- package/dist/src/circuit/circuit/stop.js +49 -0
- package/dist/src/circuit/circuit/stop.js.map +1 -0
- package/dist/src/circuit/circuit/stream-handler.d.ts +16 -35
- package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
- package/dist/src/circuit/circuit/stream-handler.js +60 -0
- package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
- package/dist/src/circuit/circuit/utils.d.ts +3 -6
- package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
- package/dist/src/circuit/circuit/utils.js +43 -0
- package/dist/src/circuit/circuit/utils.js.map +1 -0
- package/dist/src/circuit/constants.d.ts +24 -6
- package/dist/src/circuit/constants.d.ts.map +1 -1
- package/dist/src/circuit/constants.js +26 -0
- package/dist/src/circuit/constants.js.map +1 -0
- package/dist/src/circuit/index.d.ts +41 -74
- package/dist/src/circuit/index.d.ts.map +1 -1
- package/dist/src/circuit/index.js +69 -0
- package/dist/src/circuit/index.js.map +1 -0
- package/dist/src/circuit/listener.d.ts +8 -3
- package/dist/src/circuit/listener.d.ts.map +1 -1
- package/dist/src/circuit/listener.js +54 -0
- package/dist/src/circuit/listener.js.map +1 -0
- package/dist/src/circuit/multicodec.d.ts +1 -1
- package/dist/src/circuit/multicodec.d.ts.map +1 -1
- package/dist/src/circuit/multicodec.js +2 -0
- package/dist/src/circuit/multicodec.js.map +1 -0
- package/dist/src/circuit/{protocol → pb}/index.d.ts +0 -0
- package/{src/circuit/protocol → dist/src/circuit/pb}/index.js +7 -9
- package/dist/src/circuit/transport.d.ts +18 -78
- package/dist/src/circuit/transport.d.ts.map +1 -1
- package/dist/src/circuit/transport.js +190 -0
- package/dist/src/circuit/transport.js.map +1 -0
- package/dist/src/circuit/utils.d.ts +5 -2
- package/dist/src/circuit/utils.d.ts.map +1 -1
- package/dist/src/circuit/utils.js +11 -0
- package/dist/src/circuit/utils.js.map +1 -0
- package/dist/src/config.d.ts +3 -85
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +93 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
- package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
- package/dist/src/connection-manager/auto-dialler.js +105 -0
- package/dist/src/connection-manager/auto-dialler.js.map +1 -0
- package/dist/src/connection-manager/index.d.ts +79 -144
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +295 -0
- package/dist/src/connection-manager/index.js.map +1 -0
- package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
- package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
- package/dist/src/connection-manager/latency-monitor.js +220 -0
- package/dist/src/connection-manager/latency-monitor.js.map +1 -0
- package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
- package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
- package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
- package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
- package/dist/src/constants.d.ts +22 -10
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +27 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/content-routing/index.d.ts +26 -81
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +99 -0
- package/dist/src/content-routing/index.js.map +1 -0
- package/dist/src/content-routing/utils.d.ts +6 -49
- package/dist/src/content-routing/utils.d.ts.map +1 -1
- package/dist/src/content-routing/utils.js +42 -0
- package/dist/src/content-routing/utils.js.map +1 -0
- package/dist/src/dht/dht-content-routing.d.ts +10 -24
- package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
- package/dist/src/dht/dht-content-routing.js +32 -0
- package/dist/src/dht/dht-content-routing.js.map +1 -0
- package/dist/src/dht/dht-peer-routing.d.ts +9 -24
- package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
- package/dist/src/dht/dht-peer-routing.js +26 -0
- package/dist/src/dht/dht-peer-routing.js.map +1 -0
- package/dist/src/dialer/auto-dialer.d.ts +14 -0
- package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
- package/dist/src/dialer/auto-dialer.js +24 -0
- package/dist/src/dialer/auto-dialer.js.map +1 -0
- package/dist/src/dialer/dial-request.d.ts +18 -46
- package/dist/src/dialer/dial-request.d.ts.map +1 -1
- package/dist/src/dialer/dial-request.js +83 -0
- package/dist/src/dialer/dial-request.js.map +1 -0
- package/dist/src/dialer/index.d.ts +41 -148
- package/dist/src/dialer/index.d.ts.map +1 -1
- package/dist/src/dialer/index.js +281 -0
- package/dist/src/dialer/index.js.map +1 -0
- package/dist/src/errors.d.ts +68 -63
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +73 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/fetch/constants.d.ts +1 -1
- package/dist/src/fetch/constants.d.ts.map +1 -1
- package/dist/src/fetch/constants.js +3 -0
- package/dist/src/fetch/constants.js.map +1 -0
- package/dist/src/fetch/index.d.ts +30 -49
- package/dist/src/fetch/index.d.ts.map +1 -1
- package/dist/src/fetch/index.js +130 -0
- package/dist/src/fetch/index.js.map +1 -0
- package/dist/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
- package/{src/fetch → dist/src/fetch/pb}/proto.js +7 -9
- package/dist/src/get-peer.d.ts +4 -11
- package/dist/src/get-peer.d.ts.map +1 -1
- package/dist/src/get-peer.js +43 -0
- package/dist/src/get-peer.js.map +1 -0
- package/dist/src/identify/consts.d.ts +9 -9
- package/dist/src/identify/consts.d.ts.map +1 -1
- package/dist/src/identify/consts.js +11 -0
- package/dist/src/identify/consts.js.map +1 -0
- package/dist/src/identify/index.d.ts +40 -96
- package/dist/src/identify/index.d.ts.map +1 -1
- package/dist/src/identify/index.js +322 -0
- package/dist/src/identify/index.js.map +1 -0
- package/{src/identify → dist/src/identify/pb}/message.d.ts +20 -5
- package/{src/identify → dist/src/identify/pb}/message.js +83 -42
- package/dist/src/index.d.ts +157 -583
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/insecure/index.d.ts +9 -0
- package/dist/src/insecure/index.d.ts.map +1 -0
- package/dist/src/insecure/index.js +78 -0
- package/dist/src/insecure/index.js.map +1 -0
- package/dist/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
- package/{src/insecure → dist/src/insecure/pb}/proto.js +39 -22
- package/dist/src/keychain/cms.d.ts +6 -14
- package/dist/src/keychain/cms.d.ts.map +1 -1
- package/dist/src/keychain/cms.js +129 -0
- package/dist/src/keychain/cms.js.map +1 -0
- package/dist/src/keychain/index.d.ts +62 -82
- package/dist/src/keychain/index.d.ts.map +1 -1
- package/dist/src/keychain/index.js +493 -0
- package/dist/src/keychain/index.js.map +1 -0
- package/dist/src/keychain/util.d.ts +3 -6
- package/dist/src/keychain/util.d.ts.map +1 -1
- package/dist/src/keychain/util.js +79 -0
- package/dist/src/keychain/util.js.map +1 -0
- package/dist/src/libp2p.d.ts +75 -0
- package/dist/src/libp2p.d.ts.map +1 -0
- package/dist/src/libp2p.js +368 -0
- package/dist/src/libp2p.js.map +1 -0
- package/dist/src/metrics/index.d.ts +47 -104
- package/dist/src/metrics/index.d.ts.map +1 -1
- package/dist/src/metrics/index.js +231 -0
- package/dist/src/metrics/index.js.map +1 -0
- package/dist/src/metrics/moving-average.d.ts +14 -0
- package/dist/src/metrics/moving-average.d.ts.map +1 -0
- package/dist/src/metrics/moving-average.js +40 -0
- package/dist/src/metrics/moving-average.js.map +1 -0
- package/dist/src/metrics/stats.d.ts +45 -93
- package/dist/src/metrics/stats.d.ts.map +1 -1
- package/dist/src/metrics/stats.js +183 -0
- package/dist/src/metrics/stats.js.map +1 -0
- package/dist/src/nat-manager.d.ts +42 -99
- package/dist/src/nat-manager.d.ts.map +1 -1
- package/dist/src/nat-manager.js +114 -0
- package/dist/src/nat-manager.js.map +1 -0
- package/dist/src/peer-record-updater.d.ts +15 -0
- package/dist/src/peer-record-updater.d.ts.map +1 -0
- package/dist/src/peer-record-updater.js +44 -0
- package/dist/src/peer-record-updater.js.map +1 -0
- package/dist/src/peer-routing.d.ts +39 -84
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +108 -0
- package/dist/src/peer-routing.js.map +1 -0
- package/dist/src/ping/constants.d.ts +4 -4
- package/dist/src/ping/constants.d.ts.map +1 -1
- package/dist/src/ping/constants.js +5 -0
- package/dist/src/ping/constants.js.map +1 -0
- package/dist/src/ping/index.d.ts +26 -33
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/ping/index.js +56 -0
- package/dist/src/ping/index.js.map +1 -0
- package/dist/src/pnet/crypto.d.ts +15 -5
- package/dist/src/pnet/crypto.d.ts.map +1 -1
- package/dist/src/pnet/crypto.js +60 -0
- package/dist/src/pnet/crypto.js.map +1 -0
- package/dist/src/pnet/errors.d.ts +5 -5
- package/dist/src/pnet/errors.d.ts.map +1 -1
- package/dist/src/pnet/errors.js +6 -0
- package/dist/src/pnet/errors.js.map +1 -0
- package/dist/src/pnet/index.d.ts +11 -20
- package/dist/src/pnet/index.d.ts.map +1 -1
- package/dist/src/pnet/index.js +66 -0
- package/dist/src/pnet/index.js.map +1 -0
- package/dist/src/pnet/key-generator.d.ts +3 -7
- package/dist/src/pnet/key-generator.d.ts.map +1 -1
- package/dist/src/pnet/key-generator.js +25 -0
- package/dist/src/pnet/key-generator.js.map +1 -0
- package/dist/src/registrar.d.ts +27 -65
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +159 -0
- package/dist/src/registrar.js.map +1 -0
- package/dist/src/transport-manager.d.ts +34 -82
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +223 -0
- package/dist/src/transport-manager.js.map +1 -0
- package/dist/src/upgrader.d.ts +49 -129
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +402 -0
- package/dist/src/upgrader.js.map +1 -0
- package/dist/src/version.d.ts +3 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +3 -0
- package/dist/src/version.js.map +1 -0
- package/package.json +145 -197
- package/src/address-manager/index.ts +129 -0
- package/src/circuit/README.md +16 -11
- package/src/circuit/auto-relay.ts +284 -0
- package/src/circuit/circuit/hop.ts +211 -0
- package/src/circuit/circuit/stop.ts +78 -0
- package/src/circuit/circuit/stream-handler.ts +87 -0
- package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
- package/src/circuit/constants.ts +31 -0
- package/src/circuit/index.ts +120 -0
- package/src/circuit/{listener.js → listener.ts} +21 -27
- package/src/circuit/multicodec.ts +2 -0
- package/src/circuit/{protocol → pb}/index.d.ts +0 -0
- package/src/circuit/pb/index.js +528 -0
- package/src/circuit/{protocol → pb}/index.proto +0 -0
- package/src/circuit/transport.ts +216 -0
- package/src/circuit/utils.ts +12 -0
- package/src/config.ts +101 -0
- package/src/connection-manager/auto-dialler.ts +154 -0
- package/src/connection-manager/index.ts +422 -0
- package/src/connection-manager/latency-monitor.ts +319 -0
- package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
- package/src/constants.ts +31 -0
- package/src/content-routing/index.ts +143 -0
- package/src/content-routing/utils.ts +54 -0
- package/src/dht/dht-content-routing.ts +43 -0
- package/src/dht/dht-peer-routing.ts +35 -0
- package/src/dialer/auto-dialer.ts +40 -0
- package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
- package/src/dialer/index.ts +374 -0
- package/src/errors.ts +71 -0
- package/src/fetch/README.md +1 -1
- package/src/fetch/constants.ts +3 -0
- package/src/fetch/{index.js → index.ts} +79 -70
- package/src/fetch/{proto.d.ts → pb/proto.d.ts} +0 -0
- package/src/fetch/pb/proto.js +331 -0
- package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
- package/src/get-peer.ts +57 -0
- package/src/identify/consts.ts +13 -0
- package/src/identify/index.ts +445 -0
- package/{dist/src/identify → src/identify/pb}/message.d.ts +20 -5
- package/src/identify/pb/message.js +369 -0
- package/src/identify/{message.proto → pb/message.proto} +0 -0
- package/src/index.ts +234 -0
- package/src/insecure/index.ts +97 -0
- package/src/insecure/{proto.d.ts → pb/proto.d.ts} +7 -1
- package/src/insecure/pb/proto.js +388 -0
- package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
- package/src/keychain/{cms.js → cms.ts} +62 -58
- package/src/keychain/index.ts +588 -0
- package/src/keychain/{util.js → util.ts} +7 -17
- package/src/libp2p.ts +501 -0
- package/src/metrics/index.ts +310 -0
- package/src/metrics/moving-average.ts +53 -0
- package/src/metrics/stats.ts +243 -0
- package/src/nat-manager.ts +194 -0
- package/src/peer-record-updater.ts +55 -0
- package/src/peer-routing.ts +185 -0
- package/src/ping/README.md +1 -1
- package/src/ping/constants.ts +5 -0
- package/src/ping/index.ts +83 -0
- package/src/pnet/README.md +2 -2
- package/src/pnet/crypto.ts +67 -0
- package/src/pnet/errors.ts +5 -0
- package/src/pnet/index.ts +95 -0
- package/src/pnet/key-generator.ts +28 -0
- package/src/registrar.ts +205 -0
- package/src/transport-manager.ts +279 -0
- package/src/upgrader.ts +499 -0
- package/src/version.ts +3 -0
- package/dist/index.min.js +0 -55
- package/dist/src/insecure/plaintext.d.ts +0 -12
- package/dist/src/insecure/plaintext.d.ts.map +0 -1
- package/dist/src/metrics/old-peers.d.ts +0 -3
- package/dist/src/metrics/old-peers.d.ts.map +0 -1
- package/dist/src/metrics/tracked-map.d.ts +0 -8
- package/dist/src/metrics/tracked-map.d.ts.map +0 -1
- package/dist/src/peer-store/address-book.d.ts +0 -67
- package/dist/src/peer-store/address-book.d.ts.map +0 -1
- package/dist/src/peer-store/index.d.ts +0 -58
- package/dist/src/peer-store/index.d.ts.map +0 -1
- package/dist/src/peer-store/key-book.d.ts +0 -40
- package/dist/src/peer-store/key-book.d.ts.map +0 -1
- package/dist/src/peer-store/metadata-book.d.ts +0 -58
- package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
- package/dist/src/peer-store/pb/peer.d.ts +0 -222
- package/dist/src/peer-store/proto-book.d.ts +0 -43
- package/dist/src/peer-store/proto-book.d.ts.map +0 -1
- package/dist/src/peer-store/store.d.ts +0 -73
- package/dist/src/peer-store/store.d.ts.map +0 -1
- package/dist/src/peer-store/types.d.ts +0 -202
- package/dist/src/peer-store/types.d.ts.map +0 -1
- package/dist/src/ping/util.d.ts +0 -5
- package/dist/src/ping/util.d.ts.map +0 -1
- package/dist/src/pubsub-adapter.d.ts +0 -22
- package/dist/src/pubsub-adapter.d.ts.map +0 -1
- package/dist/src/record/envelope/envelope.d.ts +0 -77
- package/dist/src/record/envelope/index.d.ts +0 -80
- package/dist/src/record/envelope/index.d.ts.map +0 -1
- package/dist/src/record/peer-record/consts.d.ts +0 -4
- package/dist/src/record/peer-record/consts.d.ts.map +0 -1
- package/dist/src/record/peer-record/index.d.ts +0 -60
- package/dist/src/record/peer-record/index.d.ts.map +0 -1
- package/dist/src/record/peer-record/peer-record.d.ts +0 -133
- package/dist/src/record/utils.d.ts +0 -12
- package/dist/src/record/utils.d.ts.map +0 -1
- package/dist/src/types.d.ts +0 -90
- package/dist/src/types.d.ts.map +0 -1
- package/src/address-manager/index.js +0 -96
- package/src/circuit/auto-relay.js +0 -302
- package/src/circuit/circuit/hop.js +0 -205
- package/src/circuit/circuit/stop.js +0 -81
- package/src/circuit/circuit/stream-handler.js +0 -94
- package/src/circuit/constants.js +0 -12
- package/src/circuit/index.js +0 -102
- package/src/circuit/multicodec.js +0 -5
- package/src/circuit/transport.js +0 -229
- package/src/circuit/utils.js +0 -17
- package/src/config.js +0 -114
- package/src/connection-manager/auto-dialler.js +0 -132
- package/src/connection-manager/index.js +0 -363
- package/src/connection-manager/latency-monitor.js +0 -264
- package/src/constants.js +0 -18
- package/src/content-routing/index.js +0 -163
- package/src/content-routing/utils.js +0 -89
- package/src/dht/dht-content-routing.js +0 -44
- package/src/dht/dht-peer-routing.js +0 -51
- package/src/dialer/index.js +0 -376
- package/src/errors.js +0 -66
- package/src/fetch/constants.js +0 -6
- package/src/get-peer.js +0 -49
- package/src/identify/consts.js +0 -15
- package/src/identify/index.js +0 -384
- package/src/index.js +0 -811
- package/src/insecure/plaintext.js +0 -95
- package/src/keychain/index.js +0 -561
- package/src/metrics/index.js +0 -290
- package/src/metrics/old-peers.js +0 -16
- package/src/metrics/stats.js +0 -270
- package/src/metrics/tracked-map.js +0 -94
- package/src/nat-manager.js +0 -197
- package/src/peer-routing.js +0 -176
- package/src/peer-store/README.md +0 -145
- package/src/peer-store/address-book.js +0 -382
- package/src/peer-store/index.js +0 -121
- package/src/peer-store/key-book.js +0 -141
- package/src/peer-store/metadata-book.js +0 -250
- package/src/peer-store/pb/peer.d.ts +0 -222
- package/src/peer-store/pb/peer.js +0 -643
- package/src/peer-store/pb/peer.proto +0 -31
- package/src/peer-store/proto-book.js +0 -237
- package/src/peer-store/store.js +0 -263
- package/src/peer-store/types.ts +0 -245
- package/src/ping/constants.js +0 -8
- package/src/ping/index.js +0 -85
- package/src/ping/util.js +0 -18
- package/src/pnet/crypto.js +0 -84
- package/src/pnet/errors.js +0 -7
- package/src/pnet/index.js +0 -86
- package/src/pnet/key-generator.js +0 -33
- package/src/pubsub-adapter.js +0 -61
- package/src/record/README.md +0 -130
- package/src/record/envelope/envelope.d.ts +0 -77
- package/src/record/envelope/envelope.js +0 -243
- package/src/record/envelope/envelope.proto +0 -19
- package/src/record/envelope/index.js +0 -183
- package/src/record/peer-record/consts.js +0 -14
- package/src/record/peer-record/index.js +0 -113
- package/src/record/peer-record/peer-record.d.ts +0 -133
- package/src/record/peer-record/peer-record.js +0 -367
- package/src/record/peer-record/peer-record.proto +0 -18
- package/src/record/utils.js +0 -25
- package/src/registrar.js +0 -127
- package/src/transport-manager.js +0 -269
- package/src/types.ts +0 -98
- package/src/upgrader.js +0 -492
|
@@ -19,11 +19,17 @@ export class Exchange implements IExchange {
|
|
|
19
19
|
constructor(p?: IExchange);
|
|
20
20
|
|
|
21
21
|
/** Exchange id. */
|
|
22
|
-
public id
|
|
22
|
+
public id?: (Uint8Array|null);
|
|
23
23
|
|
|
24
24
|
/** Exchange pubkey. */
|
|
25
25
|
public pubkey?: (IPublicKey|null);
|
|
26
26
|
|
|
27
|
+
/** Exchange _id. */
|
|
28
|
+
public _id?: "id";
|
|
29
|
+
|
|
30
|
+
/** Exchange _pubkey. */
|
|
31
|
+
public _pubkey?: "pubkey";
|
|
32
|
+
|
|
27
33
|
/**
|
|
28
34
|
* Encodes the specified Exchange message. Does not implicitly {@link Exchange.verify|verify} messages.
|
|
29
35
|
* @param m Exchange message or plain object to encode
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
/*eslint-disable*/
|
|
2
|
+
import $protobuf from "protobufjs/minimal.js";
|
|
3
|
+
|
|
4
|
+
// Common aliases
|
|
5
|
+
const $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
|
|
6
|
+
|
|
7
|
+
// Exported root namespace
|
|
8
|
+
const $root = $protobuf.roots["libp2p-plaintext"] || ($protobuf.roots["libp2p-plaintext"] = {});
|
|
9
|
+
|
|
10
|
+
export const Exchange = $root.Exchange = (() => {
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Properties of an Exchange.
|
|
14
|
+
* @exports IExchange
|
|
15
|
+
* @interface IExchange
|
|
16
|
+
* @property {Uint8Array|null} [id] Exchange id
|
|
17
|
+
* @property {IPublicKey|null} [pubkey] Exchange pubkey
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Constructs a new Exchange.
|
|
22
|
+
* @exports Exchange
|
|
23
|
+
* @classdesc Represents an Exchange.
|
|
24
|
+
* @implements IExchange
|
|
25
|
+
* @constructor
|
|
26
|
+
* @param {IExchange=} [p] Properties to set
|
|
27
|
+
*/
|
|
28
|
+
function Exchange(p) {
|
|
29
|
+
if (p)
|
|
30
|
+
for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)
|
|
31
|
+
if (p[ks[i]] != null)
|
|
32
|
+
this[ks[i]] = p[ks[i]];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Exchange id.
|
|
37
|
+
* @member {Uint8Array|null|undefined} id
|
|
38
|
+
* @memberof Exchange
|
|
39
|
+
* @instance
|
|
40
|
+
*/
|
|
41
|
+
Exchange.prototype.id = null;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Exchange pubkey.
|
|
45
|
+
* @member {IPublicKey|null|undefined} pubkey
|
|
46
|
+
* @memberof Exchange
|
|
47
|
+
* @instance
|
|
48
|
+
*/
|
|
49
|
+
Exchange.prototype.pubkey = null;
|
|
50
|
+
|
|
51
|
+
// OneOf field names bound to virtual getters and setters
|
|
52
|
+
let $oneOfFields;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Exchange _id.
|
|
56
|
+
* @member {"id"|undefined} _id
|
|
57
|
+
* @memberof Exchange
|
|
58
|
+
* @instance
|
|
59
|
+
*/
|
|
60
|
+
Object.defineProperty(Exchange.prototype, "_id", {
|
|
61
|
+
get: $util.oneOfGetter($oneOfFields = ["id"]),
|
|
62
|
+
set: $util.oneOfSetter($oneOfFields)
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Exchange _pubkey.
|
|
67
|
+
* @member {"pubkey"|undefined} _pubkey
|
|
68
|
+
* @memberof Exchange
|
|
69
|
+
* @instance
|
|
70
|
+
*/
|
|
71
|
+
Object.defineProperty(Exchange.prototype, "_pubkey", {
|
|
72
|
+
get: $util.oneOfGetter($oneOfFields = ["pubkey"]),
|
|
73
|
+
set: $util.oneOfSetter($oneOfFields)
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Encodes the specified Exchange message. Does not implicitly {@link Exchange.verify|verify} messages.
|
|
78
|
+
* @function encode
|
|
79
|
+
* @memberof Exchange
|
|
80
|
+
* @static
|
|
81
|
+
* @param {IExchange} m Exchange message or plain object to encode
|
|
82
|
+
* @param {$protobuf.Writer} [w] Writer to encode to
|
|
83
|
+
* @returns {$protobuf.Writer} Writer
|
|
84
|
+
*/
|
|
85
|
+
Exchange.encode = function encode(m, w) {
|
|
86
|
+
if (!w)
|
|
87
|
+
w = $Writer.create();
|
|
88
|
+
if (m.id != null && Object.hasOwnProperty.call(m, "id"))
|
|
89
|
+
w.uint32(10).bytes(m.id);
|
|
90
|
+
if (m.pubkey != null && Object.hasOwnProperty.call(m, "pubkey"))
|
|
91
|
+
$root.PublicKey.encode(m.pubkey, w.uint32(18).fork()).ldelim();
|
|
92
|
+
return w;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Decodes an Exchange message from the specified reader or buffer.
|
|
97
|
+
* @function decode
|
|
98
|
+
* @memberof Exchange
|
|
99
|
+
* @static
|
|
100
|
+
* @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from
|
|
101
|
+
* @param {number} [l] Message length if known beforehand
|
|
102
|
+
* @returns {Exchange} Exchange
|
|
103
|
+
* @throws {Error} If the payload is not a reader or valid buffer
|
|
104
|
+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
105
|
+
*/
|
|
106
|
+
Exchange.decode = function decode(r, l) {
|
|
107
|
+
if (!(r instanceof $Reader))
|
|
108
|
+
r = $Reader.create(r);
|
|
109
|
+
var c = l === undefined ? r.len : r.pos + l, m = new $root.Exchange();
|
|
110
|
+
while (r.pos < c) {
|
|
111
|
+
var t = r.uint32();
|
|
112
|
+
switch (t >>> 3) {
|
|
113
|
+
case 1:
|
|
114
|
+
m.id = r.bytes();
|
|
115
|
+
break;
|
|
116
|
+
case 2:
|
|
117
|
+
m.pubkey = $root.PublicKey.decode(r, r.uint32());
|
|
118
|
+
break;
|
|
119
|
+
default:
|
|
120
|
+
r.skipType(t & 7);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return m;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Creates an Exchange message from a plain object. Also converts values to their respective internal types.
|
|
129
|
+
* @function fromObject
|
|
130
|
+
* @memberof Exchange
|
|
131
|
+
* @static
|
|
132
|
+
* @param {Object.<string,*>} d Plain object
|
|
133
|
+
* @returns {Exchange} Exchange
|
|
134
|
+
*/
|
|
135
|
+
Exchange.fromObject = function fromObject(d) {
|
|
136
|
+
if (d instanceof $root.Exchange)
|
|
137
|
+
return d;
|
|
138
|
+
var m = new $root.Exchange();
|
|
139
|
+
if (d.id != null) {
|
|
140
|
+
if (typeof d.id === "string")
|
|
141
|
+
$util.base64.decode(d.id, m.id = $util.newBuffer($util.base64.length(d.id)), 0);
|
|
142
|
+
else if (d.id.length)
|
|
143
|
+
m.id = d.id;
|
|
144
|
+
}
|
|
145
|
+
if (d.pubkey != null) {
|
|
146
|
+
if (typeof d.pubkey !== "object")
|
|
147
|
+
throw TypeError(".Exchange.pubkey: object expected");
|
|
148
|
+
m.pubkey = $root.PublicKey.fromObject(d.pubkey);
|
|
149
|
+
}
|
|
150
|
+
return m;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Creates a plain object from an Exchange message. Also converts values to other types if specified.
|
|
155
|
+
* @function toObject
|
|
156
|
+
* @memberof Exchange
|
|
157
|
+
* @static
|
|
158
|
+
* @param {Exchange} m Exchange
|
|
159
|
+
* @param {$protobuf.IConversionOptions} [o] Conversion options
|
|
160
|
+
* @returns {Object.<string,*>} Plain object
|
|
161
|
+
*/
|
|
162
|
+
Exchange.toObject = function toObject(m, o) {
|
|
163
|
+
if (!o)
|
|
164
|
+
o = {};
|
|
165
|
+
var d = {};
|
|
166
|
+
if (m.id != null && m.hasOwnProperty("id")) {
|
|
167
|
+
d.id = o.bytes === String ? $util.base64.encode(m.id, 0, m.id.length) : o.bytes === Array ? Array.prototype.slice.call(m.id) : m.id;
|
|
168
|
+
if (o.oneofs)
|
|
169
|
+
d._id = "id";
|
|
170
|
+
}
|
|
171
|
+
if (m.pubkey != null && m.hasOwnProperty("pubkey")) {
|
|
172
|
+
d.pubkey = $root.PublicKey.toObject(m.pubkey, o);
|
|
173
|
+
if (o.oneofs)
|
|
174
|
+
d._pubkey = "pubkey";
|
|
175
|
+
}
|
|
176
|
+
return d;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Converts this Exchange to JSON.
|
|
181
|
+
* @function toJSON
|
|
182
|
+
* @memberof Exchange
|
|
183
|
+
* @instance
|
|
184
|
+
* @returns {Object.<string,*>} JSON object
|
|
185
|
+
*/
|
|
186
|
+
Exchange.prototype.toJSON = function toJSON() {
|
|
187
|
+
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
return Exchange;
|
|
191
|
+
})();
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* KeyType enum.
|
|
195
|
+
* @exports KeyType
|
|
196
|
+
* @enum {number}
|
|
197
|
+
* @property {number} RSA=0 RSA value
|
|
198
|
+
* @property {number} Ed25519=1 Ed25519 value
|
|
199
|
+
* @property {number} Secp256k1=2 Secp256k1 value
|
|
200
|
+
* @property {number} ECDSA=3 ECDSA value
|
|
201
|
+
*/
|
|
202
|
+
export const KeyType = $root.KeyType = (() => {
|
|
203
|
+
const valuesById = {}, values = Object.create(valuesById);
|
|
204
|
+
values[valuesById[0] = "RSA"] = 0;
|
|
205
|
+
values[valuesById[1] = "Ed25519"] = 1;
|
|
206
|
+
values[valuesById[2] = "Secp256k1"] = 2;
|
|
207
|
+
values[valuesById[3] = "ECDSA"] = 3;
|
|
208
|
+
return values;
|
|
209
|
+
})();
|
|
210
|
+
|
|
211
|
+
export const PublicKey = $root.PublicKey = (() => {
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Properties of a PublicKey.
|
|
215
|
+
* @exports IPublicKey
|
|
216
|
+
* @interface IPublicKey
|
|
217
|
+
* @property {KeyType|null} [Type] PublicKey Type
|
|
218
|
+
* @property {Uint8Array|null} [Data] PublicKey Data
|
|
219
|
+
*/
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Constructs a new PublicKey.
|
|
223
|
+
* @exports PublicKey
|
|
224
|
+
* @classdesc Represents a PublicKey.
|
|
225
|
+
* @implements IPublicKey
|
|
226
|
+
* @constructor
|
|
227
|
+
* @param {IPublicKey=} [p] Properties to set
|
|
228
|
+
*/
|
|
229
|
+
function PublicKey(p) {
|
|
230
|
+
if (p)
|
|
231
|
+
for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)
|
|
232
|
+
if (p[ks[i]] != null)
|
|
233
|
+
this[ks[i]] = p[ks[i]];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* PublicKey Type.
|
|
238
|
+
* @member {KeyType} Type
|
|
239
|
+
* @memberof PublicKey
|
|
240
|
+
* @instance
|
|
241
|
+
*/
|
|
242
|
+
PublicKey.prototype.Type = 0;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* PublicKey Data.
|
|
246
|
+
* @member {Uint8Array} Data
|
|
247
|
+
* @memberof PublicKey
|
|
248
|
+
* @instance
|
|
249
|
+
*/
|
|
250
|
+
PublicKey.prototype.Data = $util.newBuffer([]);
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Encodes the specified PublicKey message. Does not implicitly {@link PublicKey.verify|verify} messages.
|
|
254
|
+
* @function encode
|
|
255
|
+
* @memberof PublicKey
|
|
256
|
+
* @static
|
|
257
|
+
* @param {IPublicKey} m PublicKey message or plain object to encode
|
|
258
|
+
* @param {$protobuf.Writer} [w] Writer to encode to
|
|
259
|
+
* @returns {$protobuf.Writer} Writer
|
|
260
|
+
*/
|
|
261
|
+
PublicKey.encode = function encode(m, w) {
|
|
262
|
+
if (!w)
|
|
263
|
+
w = $Writer.create();
|
|
264
|
+
if (m.Type != null && Object.hasOwnProperty.call(m, "Type"))
|
|
265
|
+
w.uint32(8).int32(m.Type);
|
|
266
|
+
if (m.Data != null && Object.hasOwnProperty.call(m, "Data"))
|
|
267
|
+
w.uint32(18).bytes(m.Data);
|
|
268
|
+
return w;
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Decodes a PublicKey message from the specified reader or buffer.
|
|
273
|
+
* @function decode
|
|
274
|
+
* @memberof PublicKey
|
|
275
|
+
* @static
|
|
276
|
+
* @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from
|
|
277
|
+
* @param {number} [l] Message length if known beforehand
|
|
278
|
+
* @returns {PublicKey} PublicKey
|
|
279
|
+
* @throws {Error} If the payload is not a reader or valid buffer
|
|
280
|
+
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
281
|
+
*/
|
|
282
|
+
PublicKey.decode = function decode(r, l) {
|
|
283
|
+
if (!(r instanceof $Reader))
|
|
284
|
+
r = $Reader.create(r);
|
|
285
|
+
var c = l === undefined ? r.len : r.pos + l, m = new $root.PublicKey();
|
|
286
|
+
while (r.pos < c) {
|
|
287
|
+
var t = r.uint32();
|
|
288
|
+
switch (t >>> 3) {
|
|
289
|
+
case 1:
|
|
290
|
+
m.Type = r.int32();
|
|
291
|
+
break;
|
|
292
|
+
case 2:
|
|
293
|
+
m.Data = r.bytes();
|
|
294
|
+
break;
|
|
295
|
+
default:
|
|
296
|
+
r.skipType(t & 7);
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return m;
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Creates a PublicKey message from a plain object. Also converts values to their respective internal types.
|
|
305
|
+
* @function fromObject
|
|
306
|
+
* @memberof PublicKey
|
|
307
|
+
* @static
|
|
308
|
+
* @param {Object.<string,*>} d Plain object
|
|
309
|
+
* @returns {PublicKey} PublicKey
|
|
310
|
+
*/
|
|
311
|
+
PublicKey.fromObject = function fromObject(d) {
|
|
312
|
+
if (d instanceof $root.PublicKey)
|
|
313
|
+
return d;
|
|
314
|
+
var m = new $root.PublicKey();
|
|
315
|
+
switch (d.Type) {
|
|
316
|
+
case "RSA":
|
|
317
|
+
case 0:
|
|
318
|
+
m.Type = 0;
|
|
319
|
+
break;
|
|
320
|
+
case "Ed25519":
|
|
321
|
+
case 1:
|
|
322
|
+
m.Type = 1;
|
|
323
|
+
break;
|
|
324
|
+
case "Secp256k1":
|
|
325
|
+
case 2:
|
|
326
|
+
m.Type = 2;
|
|
327
|
+
break;
|
|
328
|
+
case "ECDSA":
|
|
329
|
+
case 3:
|
|
330
|
+
m.Type = 3;
|
|
331
|
+
break;
|
|
332
|
+
}
|
|
333
|
+
if (d.Data != null) {
|
|
334
|
+
if (typeof d.Data === "string")
|
|
335
|
+
$util.base64.decode(d.Data, m.Data = $util.newBuffer($util.base64.length(d.Data)), 0);
|
|
336
|
+
else if (d.Data.length)
|
|
337
|
+
m.Data = d.Data;
|
|
338
|
+
}
|
|
339
|
+
return m;
|
|
340
|
+
};
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Creates a plain object from a PublicKey message. Also converts values to other types if specified.
|
|
344
|
+
* @function toObject
|
|
345
|
+
* @memberof PublicKey
|
|
346
|
+
* @static
|
|
347
|
+
* @param {PublicKey} m PublicKey
|
|
348
|
+
* @param {$protobuf.IConversionOptions} [o] Conversion options
|
|
349
|
+
* @returns {Object.<string,*>} Plain object
|
|
350
|
+
*/
|
|
351
|
+
PublicKey.toObject = function toObject(m, o) {
|
|
352
|
+
if (!o)
|
|
353
|
+
o = {};
|
|
354
|
+
var d = {};
|
|
355
|
+
if (o.defaults) {
|
|
356
|
+
d.Type = o.enums === String ? "RSA" : 0;
|
|
357
|
+
if (o.bytes === String)
|
|
358
|
+
d.Data = "";
|
|
359
|
+
else {
|
|
360
|
+
d.Data = [];
|
|
361
|
+
if (o.bytes !== Array)
|
|
362
|
+
d.Data = $util.newBuffer(d.Data);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
if (m.Type != null && m.hasOwnProperty("Type")) {
|
|
366
|
+
d.Type = o.enums === String ? $root.KeyType[m.Type] : m.Type;
|
|
367
|
+
}
|
|
368
|
+
if (m.Data != null && m.hasOwnProperty("Data")) {
|
|
369
|
+
d.Data = o.bytes === String ? $util.base64.encode(m.Data, 0, m.Data.length) : o.bytes === Array ? Array.prototype.slice.call(m.Data) : m.Data;
|
|
370
|
+
}
|
|
371
|
+
return d;
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Converts this PublicKey to JSON.
|
|
376
|
+
* @function toJSON
|
|
377
|
+
* @memberof PublicKey
|
|
378
|
+
* @instance
|
|
379
|
+
* @returns {Object.<string,*>} JSON object
|
|
380
|
+
*/
|
|
381
|
+
PublicKey.prototype.toJSON = function toJSON() {
|
|
382
|
+
return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
return PublicKey;
|
|
386
|
+
})();
|
|
387
|
+
|
|
388
|
+
export { $root as default };
|
|
File without changes
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
// @ts-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
const privates = new WeakMap()
|
|
1
|
+
import 'node-forge/lib/pkcs7.js'
|
|
2
|
+
import 'node-forge/lib/pbe.js'
|
|
3
|
+
// @ts-expect-error types are missing
|
|
4
|
+
import forge from 'node-forge/lib/forge.js'
|
|
5
|
+
import { certificateForKey, findAsync } from './util.js'
|
|
6
|
+
import errCode from 'err-code'
|
|
7
|
+
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
|
|
8
|
+
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
|
|
9
|
+
import { codes } from '../errors.js'
|
|
10
|
+
import { logger } from '@libp2p/logger'
|
|
11
|
+
import type { KeyChain } from './index.js'
|
|
12
|
+
|
|
13
|
+
const log = logger('libp2p:keychain:cms')
|
|
14
|
+
|
|
15
|
+
const privates = new WeakMap<object, { dek: string }>()
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Cryptographic Message Syntax (aka PKCS #7)
|
|
@@ -23,16 +23,15 @@ const privates = new WeakMap()
|
|
|
23
23
|
*
|
|
24
24
|
* See RFC 5652 for all the details.
|
|
25
25
|
*/
|
|
26
|
-
class CMS {
|
|
26
|
+
export class CMS {
|
|
27
|
+
private readonly keychain: KeyChain
|
|
28
|
+
|
|
27
29
|
/**
|
|
28
30
|
* Creates a new instance with a keychain
|
|
29
|
-
*
|
|
30
|
-
* @param {import('./index')} keychain - the available keys
|
|
31
|
-
* @param {string} dek
|
|
32
31
|
*/
|
|
33
|
-
constructor (keychain, dek) {
|
|
34
|
-
if (
|
|
35
|
-
throw
|
|
32
|
+
constructor (keychain: KeyChain, dek: string) {
|
|
33
|
+
if (keychain == null) {
|
|
34
|
+
throw errCode(new Error('keychain is required'), codes.ERR_KEYCHAIN_REQUIRED)
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
this.keychain = keychain
|
|
@@ -43,20 +42,21 @@ class CMS {
|
|
|
43
42
|
* Creates some protected data.
|
|
44
43
|
*
|
|
45
44
|
* The output Uint8Array contains the PKCS #7 message in DER.
|
|
46
|
-
*
|
|
47
|
-
* @param {string} name - The local key name.
|
|
48
|
-
* @param {Uint8Array} plain - The data to encrypt.
|
|
49
|
-
* @returns {Promise<Uint8Array>}
|
|
50
45
|
*/
|
|
51
|
-
async encrypt (name, plain) {
|
|
46
|
+
async encrypt (name: string, plain: Uint8Array): Promise<Uint8Array> {
|
|
52
47
|
if (!(plain instanceof Uint8Array)) {
|
|
53
|
-
throw
|
|
48
|
+
throw errCode(new Error('Plain data must be a Uint8Array'), codes.ERR_INVALID_PARAMETERS)
|
|
54
49
|
}
|
|
55
50
|
|
|
56
51
|
const key = await this.keychain.findKeyByName(name)
|
|
57
|
-
const pem = await this.keychain.
|
|
58
|
-
|
|
59
|
-
|
|
52
|
+
const pem = await this.keychain.getPrivateKey(name)
|
|
53
|
+
const cached = privates.get(this)
|
|
54
|
+
|
|
55
|
+
if (cached == null) {
|
|
56
|
+
throw errCode(new Error('dek missing'), codes.ERR_INVALID_PARAMETERS)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const dek = cached.dek
|
|
60
60
|
const privateKey = forge.pki.decryptRsaPrivateKey(pem, dek)
|
|
61
61
|
const certificate = await certificateForKey(key, privateKey)
|
|
62
62
|
|
|
@@ -76,71 +76,75 @@ class CMS {
|
|
|
76
76
|
*
|
|
77
77
|
* The keychain must contain one of the keys used to encrypt the data. If none of the keys
|
|
78
78
|
* exists, an Error is returned with the property 'missingKeys'. It is array of key ids.
|
|
79
|
-
*
|
|
80
|
-
* @param {Uint8Array} cmsData - The CMS encrypted data to decrypt.
|
|
81
|
-
* @returns {Promise<Uint8Array>}
|
|
82
79
|
*/
|
|
83
|
-
async decrypt (cmsData) {
|
|
80
|
+
async decrypt (cmsData: Uint8Array): Promise<Uint8Array> {
|
|
84
81
|
if (!(cmsData instanceof Uint8Array)) {
|
|
85
|
-
throw
|
|
82
|
+
throw errCode(new Error('CMS data is required'), codes.ERR_INVALID_PARAMETERS)
|
|
86
83
|
}
|
|
87
84
|
|
|
88
|
-
let cms
|
|
85
|
+
let cms: any
|
|
89
86
|
try {
|
|
90
87
|
const buf = forge.util.createBuffer(uint8ArrayToString(cmsData, 'ascii'))
|
|
91
88
|
const obj = forge.asn1.fromDer(buf)
|
|
92
|
-
|
|
89
|
+
|
|
93
90
|
cms = forge.pkcs7.messageFromAsn1(obj)
|
|
94
|
-
} catch (
|
|
95
|
-
|
|
91
|
+
} catch (err: any) {
|
|
92
|
+
log.error(err)
|
|
93
|
+
throw errCode(new Error('Invalid CMS'), codes.ERR_INVALID_CMS)
|
|
96
94
|
}
|
|
97
95
|
|
|
98
96
|
// Find a recipient whose key we hold. We only deal with recipient certs
|
|
99
97
|
// issued by ipfs (O=ipfs).
|
|
100
|
-
const recipients = cms.recipients
|
|
101
|
-
// @ts-
|
|
98
|
+
const recipients: any = cms.recipients
|
|
99
|
+
// @ts-expect-error cms types not defined
|
|
102
100
|
.filter(r => r.issuer.find(a => a.shortName === 'O' && a.value === 'ipfs'))
|
|
103
|
-
// @ts-
|
|
101
|
+
// @ts-expect-error cms types not defined
|
|
104
102
|
.filter(r => r.issuer.find(a => a.shortName === 'CN'))
|
|
105
|
-
// @ts-
|
|
103
|
+
// @ts-expect-error cms types not defined
|
|
106
104
|
.map(r => {
|
|
107
105
|
return {
|
|
108
106
|
recipient: r,
|
|
109
|
-
// @ts-
|
|
107
|
+
// @ts-expect-error cms types not defined
|
|
110
108
|
keyId: r.issuer.find(a => a.shortName === 'CN').value
|
|
111
109
|
}
|
|
112
110
|
})
|
|
113
111
|
|
|
114
|
-
const r = await findAsync(recipients, async (recipient) => {
|
|
112
|
+
const r = await findAsync(recipients, async (recipient: any) => {
|
|
115
113
|
try {
|
|
116
114
|
const key = await this.keychain.findKeyById(recipient.keyId)
|
|
117
|
-
if (key)
|
|
118
|
-
|
|
115
|
+
if (key != null) {
|
|
116
|
+
return true
|
|
117
|
+
}
|
|
118
|
+
} catch (err: any) {
|
|
119
119
|
return false
|
|
120
120
|
}
|
|
121
121
|
return false
|
|
122
122
|
})
|
|
123
123
|
|
|
124
|
-
if (
|
|
125
|
-
// @ts-
|
|
126
|
-
const missingKeys = recipients.map(r => r.keyId)
|
|
127
|
-
throw
|
|
124
|
+
if (r == null) {
|
|
125
|
+
// @ts-expect-error cms types not defined
|
|
126
|
+
const missingKeys: string[] = recipients.map(r => r.keyId)
|
|
127
|
+
throw errCode(new Error(`Decryption needs one of the key(s): ${missingKeys.join(', ')}`), codes.ERR_MISSING_KEYS, {
|
|
128
128
|
missingKeys
|
|
129
129
|
})
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
const key = await this.keychain.findKeyById(r.keyId)
|
|
133
133
|
|
|
134
|
-
if (
|
|
135
|
-
throw
|
|
134
|
+
if (key == null) {
|
|
135
|
+
throw errCode(new Error('No key available to decrypto'), codes.ERR_NO_KEY)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const pem = await this.keychain.getPrivateKey(key.name)
|
|
139
|
+
const cached = privates.get(this)
|
|
140
|
+
|
|
141
|
+
if (cached == null) {
|
|
142
|
+
throw errCode(new Error('dek missing'), codes.ERR_INVALID_PARAMETERS)
|
|
136
143
|
}
|
|
137
144
|
|
|
138
|
-
const
|
|
139
|
-
const dek = privates.get(this).dek
|
|
145
|
+
const dek = cached.dek
|
|
140
146
|
const privateKey = forge.pki.decryptRsaPrivateKey(pem, dek)
|
|
141
147
|
cms.decrypt(r.recipient, privateKey)
|
|
142
148
|
return uint8ArrayFromString(cms.content.getBytes(), 'ascii')
|
|
143
149
|
}
|
|
144
150
|
}
|
|
145
|
-
|
|
146
|
-
module.exports = CMS
|