werift 0.18.14 → 0.18.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/src/binary.js.map +1 -1
- package/lib/common/src/network.js.map +1 -1
- package/lib/dtls/src/cipher/const.d.ts +6 -6
- package/lib/dtls/src/cipher/const.js.map +1 -1
- package/lib/dtls/src/cipher/create.js.map +1 -1
- package/lib/dtls/src/cipher/namedCurve.js.map +1 -1
- package/lib/dtls/src/cipher/prf.js.map +1 -1
- package/lib/dtls/src/cipher/suites/abstract.d.ts +1 -1
- package/lib/dtls/src/cipher/suites/abstract.js.map +1 -1
- package/lib/dtls/src/cipher/suites/aead.js.map +1 -1
- package/lib/dtls/src/client.js.map +1 -1
- package/lib/dtls/src/context/cipher.js +1 -1
- package/lib/dtls/src/context/cipher.js.map +1 -1
- package/lib/dtls/src/context/dtls.js.map +1 -1
- package/lib/dtls/src/context/srtp.d.ts +1 -1
- package/lib/dtls/src/context/srtp.js.map +1 -1
- package/lib/dtls/src/context/transport.js.map +1 -1
- package/lib/dtls/src/flight/client/flight1.js.map +1 -1
- package/lib/dtls/src/flight/client/flight5.js.map +1 -1
- package/lib/dtls/src/flight/flight.d.ts +1 -1
- package/lib/dtls/src/flight/flight.js +1 -1
- package/lib/dtls/src/flight/flight.js.map +1 -1
- package/lib/dtls/src/flight/server/flight2.js.map +1 -1
- package/lib/dtls/src/flight/server/flight4.js.map +1 -1
- package/lib/dtls/src/flight/server/flight6.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/ellipticCurves.js +1 -1
- package/lib/dtls/src/handshake/extensions/ellipticCurves.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js +1 -1
- package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/renegotiationIndication.js +1 -1
- package/lib/dtls/src/handshake/extensions/renegotiationIndication.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/signature.js +1 -1
- package/lib/dtls/src/handshake/extensions/signature.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/useSrtp.js +1 -1
- package/lib/dtls/src/handshake/extensions/useSrtp.js.map +1 -1
- package/lib/dtls/src/handshake/message/alert.js +1 -1
- package/lib/dtls/src/handshake/message/alert.js.map +1 -1
- package/lib/dtls/src/handshake/message/certificate.js +1 -1
- package/lib/dtls/src/handshake/message/certificate.js.map +1 -1
- package/lib/dtls/src/handshake/message/changeCipherSpec.js +1 -1
- package/lib/dtls/src/handshake/message/changeCipherSpec.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/certificateVerify.js +1 -1
- package/lib/dtls/src/handshake/message/client/certificateVerify.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/hello.js +1 -1
- package/lib/dtls/src/handshake/message/client/hello.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/keyExchange.js +1 -1
- package/lib/dtls/src/handshake/message/client/keyExchange.js.map +1 -1
- package/lib/dtls/src/handshake/message/finished.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/certificateRequest.js +1 -1
- package/lib/dtls/src/handshake/message/server/certificateRequest.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/hello.js +1 -1
- package/lib/dtls/src/handshake/message/server/hello.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/helloDone.js +1 -1
- package/lib/dtls/src/handshake/message/server/helloDone.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js +1 -1
- package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/keyExchange.js +1 -1
- package/lib/dtls/src/handshake/message/server/keyExchange.js.map +1 -1
- package/lib/dtls/src/handshake/random.js +1 -1
- package/lib/dtls/src/handshake/random.js.map +1 -1
- package/lib/dtls/src/record/builder.js.map +1 -1
- package/lib/dtls/src/record/message/fragment.js +1 -1
- package/lib/dtls/src/record/message/fragment.js.map +1 -1
- package/lib/dtls/src/record/message/header.js +2 -2
- package/lib/dtls/src/record/message/header.js.map +1 -1
- package/lib/dtls/src/record/message/plaintext.js +1 -1
- package/lib/dtls/src/record/message/plaintext.js.map +1 -1
- package/lib/dtls/src/record/receive.js.map +1 -1
- package/lib/dtls/src/server.js.map +1 -1
- package/lib/dtls/src/socket.js.map +1 -1
- package/lib/dtls/src/transport.js.map +1 -1
- package/lib/ice/src/candidate.js.map +1 -1
- package/lib/ice/src/exceptions.js.map +1 -1
- package/lib/ice/src/helper.js.map +1 -1
- package/lib/ice/src/ice.js.map +1 -1
- package/lib/ice/src/stun/attributes.d.ts +3 -3
- package/lib/ice/src/stun/attributes.js.map +1 -1
- package/lib/ice/src/stun/message.js.map +1 -1
- package/lib/ice/src/stun/protocol.js.map +1 -1
- package/lib/ice/src/stun/transaction.js.map +1 -1
- package/lib/ice/src/transport.js.map +1 -1
- package/lib/ice/src/turn/protocol.js.map +1 -1
- package/lib/ice/src/types/model.js.map +1 -1
- package/lib/ice/src/utils.js.map +1 -1
- package/lib/rtp/src/codec/av1.d.ts +1 -1
- package/lib/rtp/src/codec/av1.js +1 -1
- package/lib/rtp/src/codec/av1.js.map +1 -1
- package/lib/rtp/src/codec/index.d.ts +1 -1
- package/lib/rtp/src/codec/index.js.map +1 -1
- package/lib/rtp/src/container/mp4/container.d.ts +1 -1
- package/lib/rtp/src/container/mp4/container.js.map +1 -1
- package/lib/rtp/src/container/mp4/exp-golomb.js.map +1 -1
- package/lib/rtp/src/container/mp4/h264.js.map +1 -1
- package/lib/rtp/src/container/webm/container.d.ts +1 -1
- package/lib/rtp/src/container/webm/container.js.map +1 -1
- package/lib/rtp/src/container/webm/ebml/ebml.js.map +1 -1
- package/lib/rtp/src/container/webm/ebml/typedArrayUtils.js.map +1 -1
- package/lib/rtp/src/helper.js +3 -2
- package/lib/rtp/src/helper.js.map +1 -1
- package/lib/rtp/src/processor/depacketizer.js.map +1 -1
- package/lib/rtp/src/processor/dtx.d.ts +1 -1
- package/lib/rtp/src/processor/dtx.js.map +1 -1
- package/lib/rtp/src/processor/interface.js.map +1 -1
- package/lib/rtp/src/processor/jitterBuffer.js.map +1 -1
- package/lib/rtp/src/processor/jitterBufferTransformer.js.map +1 -1
- package/lib/rtp/src/processor/lipsync.js.map +1 -1
- package/lib/rtp/src/processor/lipsyncCallback.js.map +1 -1
- package/lib/rtp/src/processor/mp4.js.map +1 -1
- package/lib/rtp/src/processor/mp4Callback.js +1 -1
- package/lib/rtp/src/processor/mp4Callback.js.map +1 -1
- package/lib/rtp/src/processor/mute.d.ts +1 -1
- package/lib/rtp/src/processor/mute.js.map +1 -1
- package/lib/rtp/src/processor/muteCallback.js.map +1 -1
- package/lib/rtp/src/processor/nack.js.map +1 -1
- package/lib/rtp/src/processor/ntpTime.d.ts +1 -1
- package/lib/rtp/src/processor/ntpTime.js.map +1 -1
- package/lib/rtp/src/processor/rtcpCallback.js.map +1 -1
- package/lib/rtp/src/processor/rtpCallback.js.map +1 -1
- package/lib/rtp/src/processor/rtpStream.js.map +1 -1
- package/lib/rtp/src/processor/rtpTime.js.map +1 -1
- package/lib/rtp/src/processor/webm.js.map +1 -1
- package/lib/rtp/src/processor/webmCallback.js.map +1 -1
- package/lib/rtp/src/processor/webmStream.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js +1 -1
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/index.js +1 -1
- package/lib/rtp/src/rtcp/psfb/index.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js +1 -1
- package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/remb.js +1 -1
- package/lib/rtp/src/rtcp/psfb/remb.js.map +1 -1
- package/lib/rtp/src/rtcp/rr.js +1 -1
- package/lib/rtp/src/rtcp/rr.js.map +1 -1
- package/lib/rtp/src/rtcp/rtcp.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/index.js +1 -1
- package/lib/rtp/src/rtcp/rtpfb/index.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/nack.js +1 -1
- package/lib/rtp/src/rtcp/rtpfb/nack.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/twcc.js +1 -1
- package/lib/rtp/src/rtcp/rtpfb/twcc.js.map +1 -1
- package/lib/rtp/src/rtcp/sdes.js +1 -1
- package/lib/rtp/src/rtcp/sdes.js.map +1 -1
- package/lib/rtp/src/rtcp/sr.js +1 -1
- package/lib/rtp/src/rtcp/sr.js.map +1 -1
- package/lib/rtp/src/rtp/headerExtension.js.map +1 -1
- package/lib/rtp/src/rtp/red/encoder.js.map +1 -1
- package/lib/rtp/src/rtp/red/handler.js.map +1 -1
- package/lib/rtp/src/rtp/rtp.d.ts +1 -1
- package/lib/rtp/src/rtp/rtp.js.map +1 -1
- package/lib/rtp/src/rtp/rtx.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/ctr.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/gcm.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/index.js.map +1 -1
- package/lib/rtp/src/srtp/context/context.js.map +1 -1
- package/lib/rtp/src/srtp/session.js.map +1 -1
- package/lib/rtp/src/srtp/srtcp.js.map +1 -1
- package/lib/rtp/src/srtp/srtp.js.map +1 -1
- package/lib/rtp/src/util.js.map +1 -1
- package/lib/sctp/src/chunk.js +17 -17
- package/lib/sctp/src/chunk.js.map +1 -1
- package/lib/sctp/src/param.d.ts +1 -1
- package/lib/sctp/src/param.js +3 -3
- package/lib/sctp/src/param.js.map +1 -1
- package/lib/sctp/src/sctp.js.map +1 -1
- package/lib/sctp/src/transport.js.map +1 -1
- package/lib/webrtc/src/const.js.map +1 -1
- package/lib/webrtc/src/dataChannel.js.map +1 -1
- package/lib/webrtc/src/media/parameters.js.map +1 -1
- package/lib/webrtc/src/media/receiver/nack.js.map +1 -1
- package/lib/webrtc/src/media/receiver/receiverTwcc.js.map +1 -1
- package/lib/webrtc/src/media/receiver/statistics.js.map +1 -1
- package/lib/webrtc/src/media/router.js.map +1 -1
- package/lib/webrtc/src/media/rtpReceiver.js.map +1 -1
- package/lib/webrtc/src/media/rtpSender.js +11 -0
- package/lib/webrtc/src/media/rtpSender.js.map +1 -1
- package/lib/webrtc/src/media/rtpTransceiver.d.ts +1 -1
- package/lib/webrtc/src/media/rtpTransceiver.js.map +1 -1
- package/lib/webrtc/src/media/sender/senderBWE.js.map +1 -1
- package/lib/webrtc/src/media/track.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/index.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/index.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.js.map +1 -1
- package/lib/webrtc/src/nonstandard/userMedia.js.map +1 -1
- package/lib/webrtc/src/peerConnection.js.map +1 -1
- package/lib/webrtc/src/sdp.js.map +1 -1
- package/lib/webrtc/src/transport/dtls.d.ts +1 -1
- package/lib/webrtc/src/transport/dtls.js.map +1 -1
- package/lib/webrtc/src/transport/ice.d.ts +2 -2
- package/lib/webrtc/src/transport/ice.js.map +1 -1
- package/lib/webrtc/src/transport/sctp.js.map +1 -1
- package/lib/webrtc/src/types/domain.d.ts +2 -2
- package/lib/webrtc/src/types/domain.js.map +1 -1
- package/lib/webrtc/src/utils.js.map +1 -1
- package/package.json +5 -3
- package/src/const.ts +1 -1
- package/src/dataChannel.ts +3 -3
- package/src/media/parameters.ts +3 -3
- package/src/media/receiver/nack.ts +7 -4
- package/src/media/receiver/receiverTwcc.ts +5 -5
- package/src/media/receiver/statistics.ts +1 -1
- package/src/media/router.ts +5 -5
- package/src/media/rtpReceiver.ts +9 -9
- package/src/media/rtpSender.ts +18 -8
- package/src/media/rtpTransceiver.ts +3 -3
- package/src/media/sender/senderBWE.ts +2 -2
- package/src/media/track.ts +1 -1
- package/src/nonstandard/recorder/index.ts +1 -1
- package/src/nonstandard/recorder/writer/index.ts +1 -1
- package/src/nonstandard/recorder/writer/webm.ts +1 -1
- package/src/nonstandard/userMedia.ts +1 -1
- package/src/peerConnection.ts +52 -52
- package/src/sdp.ts +27 -21
- package/src/transport/dtls.ts +13 -10
- package/src/transport/ice.ts +6 -6
- package/src/transport/sctp.ts +4 -4
- package/src/types/domain.ts +2 -2
- package/src/utils.ts +2 -2
|
@@ -43,7 +43,6 @@ class ClientKeyExchange {
|
|
|
43
43
|
return new fragment_1.FragmentedHandshake(this.msgType, body.length, this.messageSeq, 0, body.length, body);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
exports.ClientKeyExchange = ClientKeyExchange;
|
|
47
46
|
Object.defineProperty(ClientKeyExchange, "spec", {
|
|
48
47
|
enumerable: true,
|
|
49
48
|
configurable: true,
|
|
@@ -52,4 +51,5 @@ Object.defineProperty(ClientKeyExchange, "spec", {
|
|
|
52
51
|
publicKey: binary_data_1.types.buffer(binary_data_1.types.uint8),
|
|
53
52
|
}
|
|
54
53
|
});
|
|
54
|
+
exports.ClientKeyExchange = ClientKeyExchange;
|
|
55
55
|
//# sourceMappingURL=keyExchange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyExchange.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/client/keyExchange.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAEpD,+DAAuE;AAEvE,uCAA4C;AAE5C,MAAa,iBAAiB;IAQ5B,YAAmB,SAAiB
|
|
1
|
+
{"version":3,"file":"keyExchange.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/client/keyExchange.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAEpD,+DAAuE;AAEvE,uCAA4C;AAE5C,MAAa,iBAAiB;IAQ5B,YAAmB,SAAiB;QAAxB;;;;mBAAO,SAAS;WAAQ;QAPpC;;;;mBAAU,qBAAa,CAAC,sBAAsB;WAAC;QAC/C;;;;;WAAoB;IAMmB,CAAC;IAExC,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,iBAAiB,CAAC,SAAgB,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,iBAAiB;QAC1B,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CACtB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACzD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;;AAjCe;;;;WAAO;QACrB,SAAS,EAAE,mBAAK,CAAC,MAAM,CAAC,mBAAK,CAAC,KAAK,CAAC;KACrC;EAFmB,CAElB;AANS,8CAAiB","sourcesContent":["import { decode, encode, types } from \"binary-data\";\n\nimport { FragmentedHandshake } from \"../../../record/message/fragment\";\nimport { Handshake } from \"../../../typings/domain\";\nimport { HandshakeType } from \"../../const\";\n\nexport class ClientKeyExchange implements Handshake {\n msgType = HandshakeType.client_key_exchange_16;\n messageSeq?: number;\n\n static readonly spec = {\n publicKey: types.buffer(types.uint8),\n };\n\n constructor(public publicKey: Buffer) {}\n\n static createEmpty() {\n return new ClientKeyExchange(undefined as any);\n }\n\n static deSerialize(buf: Buffer) {\n const res = decode(buf, ClientKeyExchange.spec);\n return new ClientKeyExchange(\n //@ts-ignore\n ...Object.values(res),\n );\n }\n\n serialize() {\n const res = encode(this, ClientKeyExchange.spec).slice();\n return Buffer.from(res);\n }\n\n toFragment() {\n const body = this.serialize();\n return new FragmentedHandshake(\n this.msgType,\n body.length,\n this.messageSeq!,\n 0,\n body.length,\n body,\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finished.js","sourceRoot":"","sources":["../../../../../../dtls/src/handshake/message/finished.ts"],"names":[],"mappings":";;;AAAA,4DAAoE;AAEpE,oCAAyC;AAEzC,mBAAmB;AAEnB,MAAa,QAAQ;IAInB,YAAmB,UAAkB
|
|
1
|
+
{"version":3,"file":"finished.js","sourceRoot":"","sources":["../../../../../../dtls/src/handshake/message/finished.ts"],"names":[],"mappings":";;;AAAA,4DAAoE;AAEpE,oCAAyC;AAEzC,mBAAmB;AAEnB,MAAa,QAAQ;IAInB,YAAmB,UAAkB;QAAzB;;;;mBAAO,UAAU;WAAQ;QAHrC;;;;mBAAU,qBAAa,CAAC,WAAW;WAAC;QACpC;;;;;WAAoB;IAEoB,CAAC;IAEzC,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,QAAQ,CAAC,SAAgB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;CACF;AA7BD,4BA6BC","sourcesContent":["import { FragmentedHandshake } from \"../../record/message/fragment\";\nimport { Handshake } from \"../../typings/domain\";\nimport { HandshakeType } from \"../const\";\n\n// 7.4.9. Finished\n\nexport class Finished implements Handshake {\n msgType = HandshakeType.finished_20;\n messageSeq?: number;\n\n constructor(public verifyData: Buffer) {}\n\n static createEmpty() {\n return new Finished(undefined as any);\n }\n\n static deSerialize(buf: Buffer) {\n return new Finished(buf);\n }\n\n serialize() {\n return this.verifyData;\n }\n\n toFragment() {\n const body = this.serialize();\n return new FragmentedHandshake(\n this.msgType,\n body.length,\n this.messageSeq!,\n 0,\n body.length,\n body,\n );\n }\n}\n"]}
|
|
@@ -56,7 +56,6 @@ class ServerCertificateRequest {
|
|
|
56
56
|
return new fragment_1.FragmentedHandshake(this.msgType, body.length, this.messageSeq, 0, body.length, body);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
exports.ServerCertificateRequest = ServerCertificateRequest;
|
|
60
59
|
Object.defineProperty(ServerCertificateRequest, "spec", {
|
|
61
60
|
enumerable: true,
|
|
62
61
|
configurable: true,
|
|
@@ -67,4 +66,5 @@ Object.defineProperty(ServerCertificateRequest, "spec", {
|
|
|
67
66
|
authorities: binary_data_1.types.array(binary_1.DistinguishedName, binary_data_1.types.uint16be, "bytes"),
|
|
68
67
|
}
|
|
69
68
|
});
|
|
69
|
+
exports.ServerCertificateRequest = ServerCertificateRequest;
|
|
70
70
|
//# sourceMappingURL=certificateRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certificateRequest.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/certificateRequest.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAGpD,+DAAuE;AAEvE,yCAIsB;AACtB,uCAA4C;AAE5C,8BAA8B;AAE9B,MAAa,wBAAwB;IASnC,YACS,gBAA0B,EAC1B,UAGJ,EACI,WAAqB
|
|
1
|
+
{"version":3,"file":"certificateRequest.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/certificateRequest.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAGpD,+DAAuE;AAEvE,yCAIsB;AACtB,uCAA4C;AAE5C,8BAA8B;AAE9B,MAAa,wBAAwB;IASnC,YACS,gBAA0B,EAC1B,UAGJ,EACI,WAAqB;QAL5B;;;;mBAAO,gBAAgB;WAAU;QACjC;;;;mBAAO,UAAU;WAGd;QACH;;;;mBAAO,WAAW;WAAU;QAd9B;;;;mBAAU,qBAAa,CAAC,sBAAsB;WAAC;QAC/C;;;;;WAAoB;IAcjB,CAAC;IAEJ,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,wBAAwB,CACjC,SAAgB,EAChB,SAAgB,EAChB,SAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,wBAAwB;QACjC,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;;AA7Ce;;;;WAAO;QACrB,gBAAgB,EAAE,mBAAK,CAAC,KAAK,CAAC,8BAAqB,EAAE,mBAAK,CAAC,KAAK,EAAE,OAAO,CAAC;QAC1E,UAAU,EAAE,mBAAK,CAAC,KAAK,CAAC,+BAAsB,EAAE,mBAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;QACxE,WAAW,EAAE,mBAAK,CAAC,KAAK,CAAC,0BAAiB,EAAE,mBAAK,CAAC,QAAQ,EAAE,OAAO,CAAC;KACrE;EAJmB,CAIlB;AAPS,4DAAwB","sourcesContent":["import { decode, encode, types } from \"binary-data\";\n\nimport { HashAlgorithms, SignatureAlgorithms } from \"../../../cipher/const\";\nimport { FragmentedHandshake } from \"../../../record/message/fragment\";\nimport { Handshake } from \"../../../typings/domain\";\nimport {\n ClientCertificateType,\n DistinguishedName,\n SignatureHashAlgorithm,\n} from \"../../binary\";\nimport { HandshakeType } from \"../../const\";\n\n// 7.4.4. Certificate Request\n\nexport class ServerCertificateRequest implements Handshake {\n msgType = HandshakeType.certificate_request_13;\n messageSeq?: number;\n static readonly spec = {\n certificateTypes: types.array(ClientCertificateType, types.uint8, \"bytes\"),\n signatures: types.array(SignatureHashAlgorithm, types.uint16be, \"bytes\"),\n authorities: types.array(DistinguishedName, types.uint16be, \"bytes\"),\n };\n\n constructor(\n public certificateTypes: number[],\n public signatures: {\n hash: HashAlgorithms;\n signature: SignatureAlgorithms;\n }[],\n public authorities: number[],\n ) {}\n\n static createEmpty() {\n return new ServerCertificateRequest(\n undefined as any,\n undefined as any,\n undefined as any,\n );\n }\n\n static deSerialize(buf: Buffer) {\n return new ServerCertificateRequest(\n //@ts-ignore\n ...Object.values(decode(buf, ServerCertificateRequest.spec)),\n );\n }\n\n serialize() {\n const res = encode(this, ServerCertificateRequest.spec).slice();\n return Buffer.from(res);\n }\n\n toFragment() {\n const body = this.serialize();\n return new FragmentedHandshake(\n this.msgType,\n body.length,\n this.messageSeq!,\n 0,\n body.length,\n body,\n );\n }\n}\n"]}
|
|
@@ -88,7 +88,6 @@ class ServerHello {
|
|
|
88
88
|
return new fragment_1.FragmentedHandshake(this.msgType, body.length, this.messageSeq, 0, body.length, body);
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
exports.ServerHello = ServerHello;
|
|
92
91
|
Object.defineProperty(ServerHello, "spec", {
|
|
93
92
|
enumerable: true,
|
|
94
93
|
configurable: true,
|
|
@@ -101,4 +100,5 @@ Object.defineProperty(ServerHello, "spec", {
|
|
|
101
100
|
compressionMethod: binary_data_1.types.uint8,
|
|
102
101
|
}
|
|
103
102
|
});
|
|
103
|
+
exports.ServerHello = ServerHello;
|
|
104
104
|
//# sourceMappingURL=hello.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hello.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/hello.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAGpD,+DAAuE;AAEvE,yCAA8D;AAC9D,uCAA4C;AAC5C,yCAA0C;AAE1C,yBAAyB;AAEzB,MAAa,WAAW;IAWtB,YACS,aAAsB,EACtB,MAAc,EACd,SAAiB,EACjB,WAAyB,EACzB,iBAAyB,EACzB,UAAuB
|
|
1
|
+
{"version":3,"file":"hello.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/hello.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAGpD,+DAAuE;AAEvE,yCAA8D;AAC9D,uCAA4C;AAC5C,yCAA0C;AAE1C,yBAAyB;AAEzB,MAAa,WAAW;IAWtB,YACS,aAAsB,EACtB,MAAc,EACd,SAAiB,EACjB,WAAyB,EACzB,iBAAyB,EACzB,UAAuB;QAL9B;;;;mBAAO,aAAa;WAAS;QAC7B;;;;mBAAO,MAAM;WAAQ;QACrB;;;;mBAAO,SAAS;WAAQ;QACxB;;;;mBAAO,WAAW;WAAc;QAChC;;;;mBAAO,iBAAiB;WAAQ;QAChC;;;;mBAAO,UAAU;WAAa;QAhBhC;;;;mBAAU,qBAAa,CAAC,cAAc;WAAC;QACvC;;;;;WAAoB;IAgBjB,CAAC;IAEJ,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,WAAW,CACpB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,WAAW;QACzB,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CACtB,CAAC;QACF,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;YAC9B,OAAO,IAAI,WAAW;YACpB,YAAY;YACZ,GAAG,MAAM,CAAC,MAAM,CACd,IAAA,oBAAM,EAAC,GAAG,EAAE,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,sBAAa,EAAE,CAAC,CAChE,CACF,CAAC;SACH;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GACP,IAAI,CAAC,UAAU,KAAK,SAAS;YAC3B,CAAC,CAAC,IAAA,oBAAM,EAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YACxC,CAAC,CAAC,IAAA,oBAAM,EAAC,IAAI,EAAE;gBACX,GAAG,WAAW,CAAC,IAAI;gBACnB,UAAU,EAAE,sBAAa;aAC1B,CAAC,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;;AAnEe;;;;WAAO;QACrB,aAAa,EAAE,wBAAe;QAC9B,MAAM,EAAE,mBAAU,CAAC,IAAI;QACvB,SAAS,EAAE,mBAAK,CAAC,MAAM,CAAC,mBAAK,CAAC,KAAK,CAAC;QACpC,WAAW,EAAE,mBAAK,CAAC,QAAQ;QAC3B,iBAAiB,EAAE,mBAAK,CAAC,KAAK;KAC/B;EANmB,CAMlB;AATS,kCAAW","sourcesContent":["import { decode, encode, types } from \"binary-data\";\n\nimport { CipherSuites } from \"../../../cipher/const\";\nimport { FragmentedHandshake } from \"../../../record/message/fragment\";\nimport { Extension, Handshake, Random, Version } from \"../../../typings/domain\";\nimport { ExtensionList, ProtocolVersion } from \"../../binary\";\nimport { HandshakeType } from \"../../const\";\nimport { DtlsRandom } from \"../../random\";\n\n// 7.4.1.3. Server Hello\n\nexport class ServerHello implements Handshake {\n msgType = HandshakeType.server_hello_2;\n messageSeq?: number;\n static readonly spec = {\n serverVersion: ProtocolVersion,\n random: DtlsRandom.spec,\n sessionId: types.buffer(types.uint8),\n cipherSuite: types.uint16be,\n compressionMethod: types.uint8,\n };\n\n constructor(\n public serverVersion: Version,\n public random: Random,\n public sessionId: Buffer,\n public cipherSuite: CipherSuites,\n public compressionMethod: number,\n public extensions: Extension[],\n ) {}\n\n static createEmpty() {\n return new ServerHello(\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n );\n }\n\n static deSerialize(buf: Buffer) {\n const res = decode(buf, ServerHello.spec);\n const cls = new ServerHello(\n //@ts-ignore\n ...Object.values(res),\n );\n const expect = cls.serialize();\n if (expect.length < buf.length) {\n return new ServerHello(\n //@ts-ignore\n ...Object.values(\n decode(buf, { ...ServerHello.spec, extensions: ExtensionList }),\n ),\n );\n }\n return cls;\n }\n\n serialize() {\n const res =\n this.extensions === undefined\n ? encode(this, ServerHello.spec).slice()\n : encode(this, {\n ...ServerHello.spec,\n extensions: ExtensionList,\n }).slice();\n return Buffer.from(res);\n }\n\n toFragment() {\n const body = this.serialize();\n return new FragmentedHandshake(\n this.msgType,\n body.length,\n this.messageSeq!,\n 0,\n body.length,\n body,\n );\n }\n}\n"]}
|
|
@@ -37,11 +37,11 @@ class ServerHelloDone {
|
|
|
37
37
|
return new fragment_1.FragmentedHandshake(this.msgType, body.length, this.messageSeq, 0, body.length, body);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
exports.ServerHelloDone = ServerHelloDone;
|
|
41
40
|
Object.defineProperty(ServerHelloDone, "spec", {
|
|
42
41
|
enumerable: true,
|
|
43
42
|
configurable: true,
|
|
44
43
|
writable: true,
|
|
45
44
|
value: {}
|
|
46
45
|
});
|
|
46
|
+
exports.ServerHelloDone = ServerHelloDone;
|
|
47
47
|
//# sourceMappingURL=helloDone.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helloDone.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/helloDone.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAE7C,+DAAuE;AAEvE,uCAA4C;AAE5C,4BAA4B;AAE5B,MAAa,eAAe;IAA5B;QACE;;;;mBAAU,qBAAa,CAAC,oBAAoB;WAAC;QAC7C;;;;;WAAoB;IA8BtB,CAAC;IA3BC,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,eAAe;QACxB,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;;
|
|
1
|
+
{"version":3,"file":"helloDone.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/helloDone.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAE7C,+DAAuE;AAEvE,uCAA4C;AAE5C,4BAA4B;AAE5B,MAAa,eAAe;IAA5B;QACE;;;;mBAAU,qBAAa,CAAC,oBAAoB;WAAC;QAC7C;;;;;WAAoB;IA8BtB,CAAC;IA3BC,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,eAAe;QACxB,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;;AA5Be;;;;WAAO,EAAE;EAAL,CAAM;AAHf,0CAAe","sourcesContent":["import { decode, encode } from \"binary-data\";\n\nimport { FragmentedHandshake } from \"../../../record/message/fragment\";\nimport { Handshake } from \"../../../typings/domain\";\nimport { HandshakeType } from \"../../const\";\n\n// 7.4.5. Server Hello Done\n\nexport class ServerHelloDone implements Handshake {\n msgType = HandshakeType.server_hello_done_14;\n messageSeq?: number;\n static readonly spec = {};\n\n static createEmpty() {\n return new ServerHelloDone();\n }\n\n static deSerialize(buf: Buffer) {\n return new ServerHelloDone(\n //@ts-ignore\n ...Object.values(decode(buf, ServerHelloDone.spec)),\n );\n }\n\n serialize() {\n const res = encode(this, ServerHelloDone.spec).slice();\n return Buffer.from(res);\n }\n\n toFragment() {\n const body = this.serialize();\n return new FragmentedHandshake(\n this.msgType,\n body.length,\n this.messageSeq!,\n 0,\n body.length,\n body,\n );\n }\n}\n"]}
|
|
@@ -56,7 +56,6 @@ class ServerHelloVerifyRequest {
|
|
|
56
56
|
return new fragment_1.FragmentedHandshake(this.msgType, body.length, this.messageSeq, 0, body.length, body);
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
|
-
exports.ServerHelloVerifyRequest = ServerHelloVerifyRequest;
|
|
60
59
|
Object.defineProperty(ServerHelloVerifyRequest, "spec", {
|
|
61
60
|
enumerable: true,
|
|
62
61
|
configurable: true,
|
|
@@ -66,4 +65,5 @@ Object.defineProperty(ServerHelloVerifyRequest, "spec", {
|
|
|
66
65
|
cookie: binary_data_1.types.buffer(binary_data_1.types.uint8),
|
|
67
66
|
}
|
|
68
67
|
});
|
|
68
|
+
exports.ServerHelloVerifyRequest = ServerHelloVerifyRequest;
|
|
69
69
|
//# sourceMappingURL=helloVerifyRequest.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helloVerifyRequest.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/helloVerifyRequest.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAEpD,+DAAuE;AAEvE,yCAA+C;AAC/C,uCAA4C;AAE5C,4CAA4C;AAE5C,MAAa,wBAAwB;IAQnC,YACS,aAA+C,EAC/C,MAAc
|
|
1
|
+
{"version":3,"file":"helloVerifyRequest.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/helloVerifyRequest.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAEpD,+DAAuE;AAEvE,yCAA+C;AAC/C,uCAA4C;AAE5C,4CAA4C;AAE5C,MAAa,wBAAwB;IAQnC,YACS,aAA+C,EAC/C,MAAc;QADrB;;;;mBAAO,aAAa;WAAkC;QACtD;;;;mBAAO,MAAM;WAAQ;QATvB;;;;mBAAU,qBAAa,CAAC,sBAAsB;WAAC;QAC/C;;;;;WAAoB;IASjB,CAAC;IAEJ,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,wBAAwB,CAAC,SAAgB,EAAE,SAAgB,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,wBAAwB;QACjC,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAC7D,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO;QACT,OAAO;YACL,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;YACrC,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK;SACtC,CAAC;IACJ,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;;AA3Ce;;;;WAAO;QACrB,aAAa,EAAE,wBAAe;QAC9B,MAAM,EAAE,mBAAK,CAAC,MAAM,CAAC,mBAAK,CAAC,KAAK,CAAC;KAClC;EAHmB,CAGlB;AANS,4DAAwB","sourcesContent":["import { decode, encode, types } from \"binary-data\";\n\nimport { FragmentedHandshake } from \"../../../record/message/fragment\";\nimport { Handshake } from \"../../../typings/domain\";\nimport { ProtocolVersion } from \"../../binary\";\nimport { HandshakeType } from \"../../const\";\n\n// 4.2.1. Denial-of-Service Countermeasures\n\nexport class ServerHelloVerifyRequest implements Handshake {\n msgType = HandshakeType.hello_verify_request_3;\n messageSeq?: number;\n static readonly spec = {\n serverVersion: ProtocolVersion,\n cookie: types.buffer(types.uint8),\n };\n\n constructor(\n public serverVersion: { major: number; minor: number },\n public cookie: Buffer,\n ) {}\n\n static createEmpty() {\n return new ServerHelloVerifyRequest(undefined as any, undefined as any);\n }\n\n static deSerialize(buf: Buffer) {\n return new ServerHelloVerifyRequest(\n //@ts-ignore\n ...Object.values(decode(buf, ServerHelloVerifyRequest.spec)),\n );\n }\n\n serialize() {\n const res = encode(this, ServerHelloVerifyRequest.spec).slice();\n return Buffer.from(res);\n }\n\n get version() {\n return {\n major: 255 - this.serverVersion.major,\n minor: 255 - this.serverVersion.minor,\n };\n }\n\n toFragment() {\n const body = this.serialize();\n return new FragmentedHandshake(\n this.msgType,\n body.length,\n this.messageSeq!,\n 0,\n body.length,\n body,\n );\n }\n}\n"]}
|
|
@@ -86,7 +86,6 @@ class ServerKeyExchange {
|
|
|
86
86
|
return new fragment_1.FragmentedHandshake(this.msgType, body.length, this.messageSeq, 0, body.length, body);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
exports.ServerKeyExchange = ServerKeyExchange;
|
|
90
89
|
Object.defineProperty(ServerKeyExchange, "spec", {
|
|
91
90
|
enumerable: true,
|
|
92
91
|
configurable: true,
|
|
@@ -102,4 +101,5 @@ Object.defineProperty(ServerKeyExchange, "spec", {
|
|
|
102
101
|
signature: binary_data_1.types.buffer((ctx) => ctx.current.signatureLength),
|
|
103
102
|
}
|
|
104
103
|
});
|
|
104
|
+
exports.ServerKeyExchange = ServerKeyExchange;
|
|
105
105
|
//# sourceMappingURL=keyExchange.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyExchange.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/keyExchange.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG5C,+DAAuE;AAEvE,iDAAoD;AACpD,uCAA4C;AAE5C,MAAa,iBAAiB;IAe5B,YACS,iBAA6B,EAC7B,UAAgC,EAChC,eAAuB,EACvB,SAAiB,EACjB,aAAqB,EACrB,kBAA0B,EAC1B,eAAuB,EACvB,SAAiB
|
|
1
|
+
{"version":3,"file":"keyExchange.js","sourceRoot":"","sources":["../../../../../../../dtls/src/handshake/message/server/keyExchange.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAG5C,+DAAuE;AAEvE,iDAAoD;AACpD,uCAA4C;AAE5C,MAAa,iBAAiB;IAe5B,YACS,iBAA6B,EAC7B,UAAgC,EAChC,eAAuB,EACvB,SAAiB,EACjB,aAAqB,EACrB,kBAA0B,EAC1B,eAAuB,EACvB,SAAiB;QAPxB;;;;mBAAO,iBAAiB;WAAY;QACpC;;;;mBAAO,UAAU;WAAsB;QACvC;;;;mBAAO,eAAe;WAAQ;QAC9B;;;;mBAAO,SAAS;WAAQ;QACxB;;;;mBAAO,aAAa;WAAQ;QAC5B;;;;mBAAO,kBAAkB;WAAQ;QACjC;;;;mBAAO,eAAe;WAAQ;QAC9B;;;;mBAAO,SAAS;WAAQ;QAtB1B;;;;mBAAU,qBAAa,CAAC,sBAAsB;WAAC;QAC/C;;;;;WAAoB;IAsBjB,CAAC;IAEJ,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,iBAAiB,CAC1B,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,IAAI,iBAAiB;QAC1B,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CACtB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAI,8BAAmB,CAC5B,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAW,EAChB,CAAC,EACD,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAC;IACJ,CAAC;;AA1De;;;;WAAO;QACrB,iBAAiB,EAAE,mBAAK,CAAC,KAAK;QAC9B,UAAU,EAAE,mBAAK,CAAC,QAAQ;QAC1B,eAAe,EAAE,mBAAK,CAAC,KAAK;QAC5B,SAAS,EAAE,mBAAK,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;QAClE,aAAa,EAAE,mBAAK,CAAC,KAAK;QAC1B,kBAAkB,EAAE,mBAAK,CAAC,KAAK;QAC/B,eAAe,EAAE,mBAAK,CAAC,QAAQ;QAC/B,SAAS,EAAE,mBAAK,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC;KACnE;EATmB,CASlB;AAbS,8CAAiB","sourcesContent":["import { decode, types } from \"binary-data\";\n\nimport { CurveTypes, NamedCurveAlgorithms } from \"../../../cipher/const\";\nimport { FragmentedHandshake } from \"../../../record/message/fragment\";\nimport { Handshake } from \"../../../typings/domain\";\nimport { encodeBuffer } from \"../../../util/binary\";\nimport { HandshakeType } from \"../../const\";\n\nexport class ServerKeyExchange implements Handshake {\n msgType = HandshakeType.server_key_exchange_12;\n messageSeq?: number;\n\n static readonly spec = {\n ellipticCurveType: types.uint8,\n namedCurve: types.uint16be,\n publicKeyLength: types.uint8,\n publicKey: types.buffer((ctx: any) => ctx.current.publicKeyLength),\n hashAlgorithm: types.uint8,\n signatureAlgorithm: types.uint8,\n signatureLength: types.uint16be,\n signature: types.buffer((ctx: any) => ctx.current.signatureLength),\n };\n\n constructor(\n public ellipticCurveType: CurveTypes,\n public namedCurve: NamedCurveAlgorithms,\n public publicKeyLength: number,\n public publicKey: Buffer,\n public hashAlgorithm: number,\n public signatureAlgorithm: number,\n public signatureLength: number,\n public signature: Buffer,\n ) {}\n\n static createEmpty() {\n return new ServerKeyExchange(\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n );\n }\n\n static deSerialize(buf: Buffer) {\n const res = decode(buf, ServerKeyExchange.spec);\n return new ServerKeyExchange(\n //@ts-ignore\n ...Object.values(res),\n );\n }\n\n serialize() {\n const res = encodeBuffer(this, ServerKeyExchange.spec);\n return res;\n }\n\n toFragment() {\n const body = this.serialize();\n return new FragmentedHandshake(\n this.msgType,\n body.length,\n this.messageSeq!,\n 0,\n body.length,\n body,\n );\n }\n}\n"]}
|
|
@@ -33,7 +33,6 @@ class DtlsRandom {
|
|
|
33
33
|
return Buffer.from(res);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
exports.DtlsRandom = DtlsRandom;
|
|
37
36
|
Object.defineProperty(DtlsRandom, "spec", {
|
|
38
37
|
enumerable: true,
|
|
39
38
|
configurable: true,
|
|
@@ -43,4 +42,5 @@ Object.defineProperty(DtlsRandom, "spec", {
|
|
|
43
42
|
random_bytes: binary_data_1.types.buffer(28),
|
|
44
43
|
}
|
|
45
44
|
});
|
|
45
|
+
exports.DtlsRandom = DtlsRandom;
|
|
46
46
|
//# sourceMappingURL=random.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../../dtls/src/handshake/random.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,6CAAoD;AACpD,mCAAqC;AAErC,MAAa,UAAU;IAMrB,YACS,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAC7C,eAAe,IAAA,oBAAW,EAAC,EAAE,CAAC
|
|
1
|
+
{"version":3,"file":"random.js","sourceRoot":"","sources":["../../../../../dtls/src/handshake/random.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,6CAAoD;AACpD,mCAAqC;AAErC,MAAa,UAAU;IAMrB,YACS,gBAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAC7C,eAAe,IAAA,oBAAW,EAAC,EAAE,CAAC;QADrC;;;;mBAAO,aAAa;WAAgC;QACpD;;;;mBAAO,YAAY;WAAkB;IACpC,CAAC;IAEJ,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,UAAU;QACnB,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAA4B;QACtC,YAAY;QACZ,OAAO,IAAI,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;;AAzBe;;;;WAAO;QACrB,aAAa,EAAE,mBAAK,CAAC,QAAQ;QAC7B,YAAY,EAAE,mBAAK,CAAC,MAAM,CAAC,EAAE,CAAC;KAC/B;EAHmB,CAGlB;AAJS,gCAAU","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { decode, encode, types } from \"binary-data\";\nimport { randomBytes } from \"crypto\";\n\nexport class DtlsRandom {\n static readonly spec = {\n gmt_unix_time: types.uint32be,\n random_bytes: types.buffer(28),\n };\n\n constructor(\n public gmt_unix_time = Math.floor(Date.now() / 1000),\n public random_bytes = randomBytes(28),\n ) {}\n\n static deSerialize(buf: Buffer) {\n return new DtlsRandom(\n //@ts-ignore\n ...Object.values(decode(buf, DtlsRandom.spec)),\n );\n }\n\n static from(spec: typeof DtlsRandom.spec) {\n //@ts-ignore\n return new DtlsRandom(...Object.values(spec));\n }\n\n serialize() {\n const res = encode(this, DtlsRandom.spec).slice();\n return Buffer.from(res);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../dtls/src/record/builder.ts"],"names":[],"mappings":";;;AAEA,mDAAoD;AAI7C,MAAM,eAAe,GAC1B,CAAC,IAAiB,EAAE,EAAE,CAAC,CAAC,UAAuB,EAAE,EAAE;IACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAE7B,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AAZS,QAAA,eAAe,mBAYxB;AAEG,MAAM,eAAe,GAC1B,CAAC,IAAiB,EAAE,EAAE,CACtB,CAAC,SAAoB,EAAE,oBAA4B,EAAE,EAAE;IACrD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,SAAS,GAAG,IAAI,yBAAa,CACjC;YACE,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,eAAe,EAAE,IAAI,CAAC,OAAO;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,oBAAoB;YACpC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;SAChC,EACD,GAAG,CAAC,QAAQ,CACb,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAhBS,QAAA,eAAe,mBAgBxB","sourcesContent":["import { DtlsContext } from \"../context/dtls\";\nimport { Handshake } from \"../typings/domain\";\nimport { DtlsPlaintext } from \"./message/plaintext\";\n\nexport type Message = { type: number; fragment: Buffer };\n\nexport const createFragments =\n (dtls: DtlsContext) => (handshakes: Handshake[]) => {\n dtls.lastFlight = handshakes;\n\n return handshakes\n .map((handshake) => {\n handshake.messageSeq = dtls.sequenceNumber++;\n const fragment = handshake.toFragment();\n const fragments = fragment.chunk();\n return fragments;\n })\n .flatMap((v) => v);\n };\n\nexport const createPlaintext =\n (dtls: DtlsContext) =>\n (fragments: Message[], recordSequenceNumber: number) => {\n return fragments.map((msg) => {\n const plaintext = new DtlsPlaintext(\n {\n contentType: msg.type,\n protocolVersion: dtls.version,\n epoch: dtls.epoch,\n sequenceNumber: recordSequenceNumber,\n contentLen: msg.fragment.length,\n },\n msg.fragment
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../../dtls/src/record/builder.ts"],"names":[],"mappings":";;;AAEA,mDAAoD;AAI7C,MAAM,eAAe,GAC1B,CAAC,IAAiB,EAAE,EAAE,CAAC,CAAC,UAAuB,EAAE,EAAE;IACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAE7B,OAAO,UAAU;SACd,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACjB,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;SACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC,CAAC;AAZS,QAAA,eAAe,mBAYxB;AAEG,MAAM,eAAe,GAC1B,CAAC,IAAiB,EAAE,EAAE,CACtB,CAAC,SAAoB,EAAE,oBAA4B,EAAE,EAAE;IACrD,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,SAAS,GAAG,IAAI,yBAAa,CACjC;YACE,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,eAAe,EAAE,IAAI,CAAC,OAAO;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,cAAc,EAAE,oBAAoB;YACpC,UAAU,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;SAChC,EACD,GAAG,CAAC,QAAQ,CACb,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAhBS,QAAA,eAAe,mBAgBxB","sourcesContent":["import { DtlsContext } from \"../context/dtls\";\nimport { Handshake } from \"../typings/domain\";\nimport { DtlsPlaintext } from \"./message/plaintext\";\n\nexport type Message = { type: number; fragment: Buffer };\n\nexport const createFragments =\n (dtls: DtlsContext) => (handshakes: Handshake[]) => {\n dtls.lastFlight = handshakes;\n\n return handshakes\n .map((handshake) => {\n handshake.messageSeq = dtls.sequenceNumber++;\n const fragment = handshake.toFragment();\n const fragments = fragment.chunk();\n return fragments;\n })\n .flatMap((v) => v);\n };\n\nexport const createPlaintext =\n (dtls: DtlsContext) =>\n (fragments: Message[], recordSequenceNumber: number) => {\n return fragments.map((msg) => {\n const plaintext = new DtlsPlaintext(\n {\n contentType: msg.type,\n protocolVersion: dtls.version,\n epoch: dtls.epoch,\n sequenceNumber: recordSequenceNumber,\n contentLen: msg.fragment.length,\n },\n msg.fragment,\n );\n return plaintext;\n });\n };\n"]}
|
|
@@ -116,7 +116,6 @@ class FragmentedHandshake {
|
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
exports.FragmentedHandshake = FragmentedHandshake;
|
|
120
119
|
Object.defineProperty(FragmentedHandshake, "spec", {
|
|
121
120
|
enumerable: true,
|
|
122
121
|
configurable: true,
|
|
@@ -130,4 +129,5 @@ Object.defineProperty(FragmentedHandshake, "spec", {
|
|
|
130
129
|
fragment: binary_data_1.types.buffer((context) => context.current.fragment_length),
|
|
131
130
|
}
|
|
132
131
|
});
|
|
132
|
+
exports.FragmentedHandshake = FragmentedHandshake;
|
|
133
133
|
//# sourceMappingURL=fragment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../../../../../dtls/src/record/message/fragment.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,6CAAoD;AAGpD,yCAAgD;AAEhD,MAAa,mBAAmB;IAU9B,YACS,QAAgB,EAChB,MAAc,EACd,WAAmB,EACnB,eAAuB,EACvB,eAAuB,EACvB,QAAgB
|
|
1
|
+
{"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../../../../../dtls/src/record/message/fragment.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { decode, encode, types } from \"binary-data\";\n\nimport { HandshakeType } from \"../../handshake/const\";\nimport { getObjectSummary } from \"../../helper\";\n\nexport class FragmentedHandshake {\n static readonly spec = {\n msg_type: types.uint8,\n length: types.uint24be,\n message_seq: types.uint16be,\n fragment_offset: types.uint24be,\n fragment_length: types.uint24be,\n fragment: types.buffer((context: any) => context.current.fragment_length),\n };\n\n constructor(\n public msg_type: number,\n public length: number,\n public message_seq: number,\n public fragment_offset: number,\n public fragment_length: number,\n public fragment: Buffer,\n ) {}\n\n get summary() {\n return getObjectSummary(this);\n }\n\n static createEmpty() {\n return new FragmentedHandshake(\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n );\n }\n\n static deSerialize(buf: Buffer) {\n return new FragmentedHandshake(\n //@ts-ignore\n ...Object.values(decode(buf, FragmentedHandshake.spec)),\n );\n }\n\n serialize() {\n const res = encode(this, FragmentedHandshake.spec).slice();\n return Buffer.from(res);\n }\n\n chunk(maxFragmentLength?: number): FragmentedHandshake[] {\n let start = 0;\n const totalLength = this.fragment.length;\n\n if (totalLength === 0)\n return [\n new FragmentedHandshake(\n this.msg_type,\n totalLength,\n this.message_seq,\n start,\n 0,\n this.fragment,\n ),\n ];\n\n const fragments: FragmentedHandshake[] = [];\n if (!maxFragmentLength) {\n maxFragmentLength = 1280 - (20 + 8) - (1 + 3 + 2 + 3 + 3);\n }\n // loop through the message and fragment it\n while (start < totalLength) {\n // calculate maximum length, limited by MTU - IP/UDP headers - handshake overhead\n const fragmentLength = Math.min(maxFragmentLength, totalLength - start);\n // slice and dice\n const data = Buffer.from(\n this.fragment.slice(start, start + fragmentLength),\n );\n if (data.length <= 0) {\n // this shouldn't happen, but we don't want to introduce an infinite loop\n throw new Error(\n `Zero or less bytes processed while fragmenting handshake message.`,\n );\n }\n // create the message\n fragments.push(\n new FragmentedHandshake(\n this.msg_type,\n totalLength,\n this.message_seq,\n start,\n data.length,\n data,\n ),\n );\n // step forward by the actual fragment length\n start += data.length;\n }\n\n return fragments;\n }\n\n static assemble(messages: FragmentedHandshake[]): FragmentedHandshake {\n // cannot reassemble empty arrays\n if (!(messages && messages.length)) {\n throw new Error(\"cannot reassemble handshake from empty array\");\n }\n\n // sort by fragment start\n messages = messages.sort((a, b) => a.fragment_offset - b.fragment_offset);\n // combine into a single buffer\n const combined = Buffer.alloc(messages[0].length);\n for (const msg of messages) {\n msg.fragment.copy(combined, msg.fragment_offset);\n }\n\n // and return the complete message\n return new FragmentedHandshake(\n messages[0].msg_type,\n messages[0].length,\n messages[0].message_seq,\n 0,\n combined.length,\n combined,\n );\n }\n\n static findAllFragments(\n fragments: FragmentedHandshake[],\n type: HandshakeType,\n ): FragmentedHandshake[] {\n const reference = fragments.find((v) => v.msg_type === type);\n if (!reference) return [];\n\n // ignore empty arrays\n if (!(fragments && fragments.length)) return [];\n\n // return all fragments with matching msg_type, message_seq and total length\n return fragments.filter((f) => {\n return (\n f.msg_type === reference.msg_type &&\n f.message_seq === reference.message_seq &&\n f.length === reference.length\n );\n });\n }\n}\n"]}
|
|
@@ -49,7 +49,6 @@ class DtlsPlaintextHeader {
|
|
|
49
49
|
return Buffer.from(res);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
|
-
exports.DtlsPlaintextHeader = DtlsPlaintextHeader;
|
|
53
52
|
Object.defineProperty(DtlsPlaintextHeader, "spec", {
|
|
54
53
|
enumerable: true,
|
|
55
54
|
configurable: true,
|
|
@@ -62,6 +61,7 @@ Object.defineProperty(DtlsPlaintextHeader, "spec", {
|
|
|
62
61
|
contentLen: binary_data_1.types.uint16be,
|
|
63
62
|
}
|
|
64
63
|
});
|
|
64
|
+
exports.DtlsPlaintextHeader = DtlsPlaintextHeader;
|
|
65
65
|
class MACHeader {
|
|
66
66
|
constructor(epoch, sequenceNumber, contentType, protocolVersion, contentLen) {
|
|
67
67
|
Object.defineProperty(this, "epoch", {
|
|
@@ -108,7 +108,6 @@ class MACHeader {
|
|
|
108
108
|
return Buffer.from(res);
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
exports.MACHeader = MACHeader;
|
|
112
111
|
Object.defineProperty(MACHeader, "spec", {
|
|
113
112
|
enumerable: true,
|
|
114
113
|
configurable: true,
|
|
@@ -121,4 +120,5 @@ Object.defineProperty(MACHeader, "spec", {
|
|
|
121
120
|
contentLen: binary_data_1.types.uint16be,
|
|
122
121
|
}
|
|
123
122
|
});
|
|
123
|
+
exports.MACHeader = MACHeader;
|
|
124
124
|
//# sourceMappingURL=header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../../../dtls/src/record/message/header.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAEpD,mDAAyD;AAEzD,MAAa,mBAAmB;IAS9B,YACS,WAAmB,EACnB,eAAiD,EACjD,KAAa,EACb,cAAsB,EACtB,UAAkB
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../../../dtls/src/record/message/header.ts"],"names":[],"mappings":";;;AAAA,6CAAoD;AAEpD,mDAAyD;AAEzD,MAAa,mBAAmB;IAS9B,YACS,WAAmB,EACnB,eAAiD,EACjD,KAAa,EACb,cAAsB,EACtB,UAAkB;QAJzB;;;;mBAAO,WAAW;WAAQ;QAC1B;;;;mBAAO,eAAe;WAAkC;QACxD;;;;mBAAO,KAAK;WAAQ;QACpB;;;;mBAAO,cAAc;WAAQ;QAC7B;;;;mBAAO,UAAU;WAAQ;IACxB,CAAC;IAEJ,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,mBAAmB,CAC5B,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,mBAAmB;QAC5B,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CACxD,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;;AApCe;;;;WAAO;QACrB,WAAW,EAAE,mBAAK,CAAC,KAAK;QACxB,eAAe,EAAE,wBAAe;QAChC,KAAK,EAAE,mBAAK,CAAC,QAAQ;QACrB,cAAc,EAAE,mBAAK,CAAC,QAAQ;QAC9B,UAAU,EAAE,mBAAK,CAAC,QAAQ;KAC3B;EANmB,CAMlB;AAPS,kDAAmB;AAwChC,MAAa,SAAS;IASpB,YACS,KAAa,EACb,cAAsB,EACtB,WAAmB,EACnB,eAAiD,EACjD,UAAkB;QAJzB;;;;mBAAO,KAAK;WAAQ;QACpB;;;;mBAAO,cAAc;WAAQ;QAC7B;;;;mBAAO,WAAW;WAAQ;QAC1B;;;;mBAAO,eAAe;WAAkC;QACxD;;;;mBAAO,UAAU;WAAQ;IACxB,CAAC;IAEJ,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,SAAS,CAClB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,EAChB,SAAgB,CACjB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,OAAO,IAAI,SAAS;QAClB,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACjD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;;AApCe;;;;WAAO;QACrB,KAAK,EAAE,mBAAK,CAAC,QAAQ;QACrB,cAAc,EAAE,mBAAK,CAAC,QAAQ;QAC9B,WAAW,EAAE,mBAAK,CAAC,KAAK;QACxB,eAAe,EAAE,wBAAe;QAChC,UAAU,EAAE,mBAAK,CAAC,QAAQ;KAC3B;EANmB,CAMlB;AAPS,8BAAS","sourcesContent":["import { decode, encode, types } from \"binary-data\";\n\nimport { ProtocolVersion } from \"../../handshake/binary\";\n\nexport class DtlsPlaintextHeader {\n static readonly spec = {\n contentType: types.uint8,\n protocolVersion: ProtocolVersion,\n epoch: types.uint16be,\n sequenceNumber: types.uint48be,\n contentLen: types.uint16be,\n };\n\n constructor(\n public contentType: number,\n public protocolVersion: { major: number; minor: number },\n public epoch: number,\n public sequenceNumber: number,\n public contentLen: number,\n ) {}\n\n static createEmpty() {\n return new DtlsPlaintextHeader(\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n );\n }\n\n static deSerialize(buf: Buffer) {\n return new DtlsPlaintextHeader(\n //@ts-ignore\n ...Object.values(decode(buf, DtlsPlaintextHeader.spec)),\n );\n }\n\n serialize() {\n const res = encode(this, DtlsPlaintextHeader.spec).slice();\n return Buffer.from(res);\n }\n}\n\nexport class MACHeader {\n static readonly spec = {\n epoch: types.uint16be,\n sequenceNumber: types.uint48be,\n contentType: types.uint8,\n protocolVersion: ProtocolVersion,\n contentLen: types.uint16be,\n };\n\n constructor(\n public epoch: number,\n public sequenceNumber: number,\n public contentType: number,\n public protocolVersion: { major: number; minor: number },\n public contentLen: number,\n ) {}\n\n static createEmpty() {\n return new MACHeader(\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n undefined as any,\n );\n }\n\n static deSerialize(buf: Buffer) {\n return new MACHeader(\n //@ts-ignore\n ...Object.values(decode(buf, MACHeader.spec)),\n );\n }\n\n serialize() {\n const res = encode(this, MACHeader.spec).slice();\n return Buffer.from(res);\n }\n}\n"]}
|
|
@@ -43,7 +43,6 @@ class DtlsPlaintext {
|
|
|
43
43
|
return new header_1.MACHeader(this.recordLayerHeader.epoch, this.recordLayerHeader.sequenceNumber, this.recordLayerHeader.contentType, this.recordLayerHeader.protocolVersion, this.recordLayerHeader.contentLen).serialize();
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
exports.DtlsPlaintext = DtlsPlaintext;
|
|
47
46
|
Object.defineProperty(DtlsPlaintext, "spec", {
|
|
48
47
|
enumerable: true,
|
|
49
48
|
configurable: true,
|
|
@@ -53,4 +52,5 @@ Object.defineProperty(DtlsPlaintext, "spec", {
|
|
|
53
52
|
fragment: binary_data_1.types.buffer((context) => context.current.recordLayerHeader.contentLen),
|
|
54
53
|
}
|
|
55
54
|
});
|
|
55
|
+
exports.DtlsPlaintext = DtlsPlaintext;
|
|
56
56
|
//# sourceMappingURL=plaintext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plaintext.js","sourceRoot":"","sources":["../../../../../../dtls/src/record/message/plaintext.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,6CAAoD;AAEpD,yCAA0C;AAC1C,qCAA0D;AAE1D,MAAa,aAAa;IAQxB,YACS,iBAA8D,EAC9D,QAAgB
|
|
1
|
+
{"version":3,"file":"plaintext.js","sourceRoot":"","sources":["../../../../../../dtls/src/record/message/plaintext.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,6CAAoD;AAEpD,yCAA0C;AAC1C,qCAA0D;AAE1D,MAAa,aAAa;IAQxB,YACS,iBAA8D,EAC9D,QAAgB;QADvB;;;;mBAAO,iBAAiB;WAA6C;QACrE;;;;mBAAO,QAAQ;WAAQ;IACtB,CAAC;IAEJ,IAAI,OAAO;QACT,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,iBAAiB;YAC9B,QAAQ,EAAE,IAAA,mBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,OAAO,IAAI,aAAa,CAAC,SAAgB,EAAE,SAAgB,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,CAAC,GAAG,IAAI,aAAa;QACzB,YAAY;QACZ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAA,oBAAM,EAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,SAAS;QACP,MAAM,GAAG,GAAG,IAAA,oBAAM,EAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,kBAAS,CAClB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAC5B,IAAI,CAAC,iBAAiB,CAAC,cAAc,EACrC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAClC,IAAI,CAAC,iBAAiB,CAAC,eAAe,EACtC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAClC,CAAC,SAAS,EAAE,CAAC;IAChB,CAAC;;AA5Ce;;;;WAAO;QACrB,iBAAiB,EAAE,4BAAmB,CAAC,IAAI;QAC3C,QAAQ,EAAE,mBAAK,CAAC,MAAM,CACpB,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAC/D;KACF;EALmB,CAKlB;AANS,sCAAa","sourcesContent":["/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { decode, encode, types } from \"binary-data\";\n\nimport { dumpBuffer } from \"../../helper\";\nimport { DtlsPlaintextHeader, MACHeader } from \"./header\";\n\nexport class DtlsPlaintext {\n static readonly spec = {\n recordLayerHeader: DtlsPlaintextHeader.spec,\n fragment: types.buffer(\n (context: any) => context.current.recordLayerHeader.contentLen,\n ),\n };\n\n constructor(\n public recordLayerHeader: typeof DtlsPlaintext.spec.recordLayerHeader,\n public fragment: Buffer,\n ) {}\n\n get summary() {\n return {\n header: this.recordLayerHeader,\n fragment: dumpBuffer(this.fragment),\n };\n }\n\n static createEmpty() {\n return new DtlsPlaintext(undefined as any, undefined as any);\n }\n\n static deSerialize(buf: Buffer) {\n const r = new DtlsPlaintext(\n //@ts-ignore\n ...Object.values(decode(buf, DtlsPlaintext.spec)),\n );\n return r;\n }\n\n serialize() {\n const res = encode(this, DtlsPlaintext.spec).slice();\n return Buffer.from(res);\n }\n\n computeMACHeader() {\n return new MACHeader(\n this.recordLayerHeader.epoch,\n this.recordLayerHeader.sequenceNumber,\n this.recordLayerHeader.contentType,\n this.recordLayerHeader.protocolVersion,\n this.recordLayerHeader.contentLen,\n ).serialize();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../../../../dtls/src/record/receive.ts"],"names":[],"mappings":"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","sourcesContent":["import debug from \"debug\";\n\nimport { CipherContext } from \"../context/cipher\";\nimport { DtlsContext } from \"../context/dtls\";\nimport { Alert } from \"../handshake/message/alert\";\nimport { AlertDesc, ContentType } from \"./const\";\nimport { FragmentedHandshake } from \"./message/fragment\";\nimport { DtlsPlaintext } from \"./message/plaintext\";\n\nconst log = debug(\"werift-dtls : packages/dtls/record/receive.ts : log\");\nconst err = debug(\"werift-dtls : packages/dtls/record/receive.ts : err\");\n\nexport const parsePacket = (data: Buffer) => {\n let start = 0;\n const packets: DtlsPlaintext[] = [];\n while (data.length > start) {\n const fragmentLength = data.readUInt16BE(start + 11);\n if (data.length < start + (12 + fragmentLength)) break;\n const packet = DtlsPlaintext.deSerialize(data.slice(start));\n packets.push(packet);\n\n start += 13 + fragmentLength;\n }\n\n return packets;\n};\n\nexport const parsePlainText =\n (dtls: DtlsContext, cipher: CipherContext) => (plain: DtlsPlaintext) => {\n const contentType = plain.recordLayerHeader.contentType;\n\n switch (contentType) {\n case ContentType.changeCipherSpec: {\n log(dtls.sessionId, \"change cipher spec\");\n return {\n type: ContentType.changeCipherSpec,\n data: undefined,\n };\n }\n case ContentType.handshake: {\n let raw = plain.fragment;\n try {\n if (plain.recordLayerHeader.epoch > 0) {\n log(dtls.sessionId, \"decrypt handshake\");\n raw = cipher.decryptPacket(plain);\n }\n } catch (error) {\n err(dtls.sessionId, \"decrypt failed\", error);\n throw error;\n }\n try {\n return {\n type: ContentType.handshake,\n data: FragmentedHandshake.deSerialize(raw),\n };\n } catch (error) {\n err(dtls.sessionId, \"decSerialize failed\", error, raw);\n throw error;\n }\n }\n case ContentType.applicationData: {\n return {\n type: ContentType.applicationData,\n data: cipher.decryptPacket(plain),\n };\n }\n case ContentType.alert: {\n let alert = Alert.deSerialize(plain.fragment);\n\n // TODO impl more better about handle encrypted alert\n if (AlertDesc[alert.description] == undefined) {\n const dec = cipher.decryptPacket(plain);\n alert = Alert.deSerialize(dec);\n }\n err(\n dtls.sessionId,\n \"ContentType.alert\",\n alert,\n AlertDesc[alert.description],\n \"flight\",\n dtls.flight,\n \"lastFlight\",\n dtls.lastFlight
|
|
1
|
+
{"version":3,"file":"receive.js","sourceRoot":"","sources":["../../../../../dtls/src/record/receive.ts"],"names":[],"mappings":"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","sourcesContent":["import debug from \"debug\";\n\nimport { CipherContext } from \"../context/cipher\";\nimport { DtlsContext } from \"../context/dtls\";\nimport { Alert } from \"../handshake/message/alert\";\nimport { AlertDesc, ContentType } from \"./const\";\nimport { FragmentedHandshake } from \"./message/fragment\";\nimport { DtlsPlaintext } from \"./message/plaintext\";\n\nconst log = debug(\"werift-dtls : packages/dtls/record/receive.ts : log\");\nconst err = debug(\"werift-dtls : packages/dtls/record/receive.ts : err\");\n\nexport const parsePacket = (data: Buffer) => {\n let start = 0;\n const packets: DtlsPlaintext[] = [];\n while (data.length > start) {\n const fragmentLength = data.readUInt16BE(start + 11);\n if (data.length < start + (12 + fragmentLength)) break;\n const packet = DtlsPlaintext.deSerialize(data.slice(start));\n packets.push(packet);\n\n start += 13 + fragmentLength;\n }\n\n return packets;\n};\n\nexport const parsePlainText =\n (dtls: DtlsContext, cipher: CipherContext) => (plain: DtlsPlaintext) => {\n const contentType = plain.recordLayerHeader.contentType;\n\n switch (contentType) {\n case ContentType.changeCipherSpec: {\n log(dtls.sessionId, \"change cipher spec\");\n return {\n type: ContentType.changeCipherSpec,\n data: undefined,\n };\n }\n case ContentType.handshake: {\n let raw = plain.fragment;\n try {\n if (plain.recordLayerHeader.epoch > 0) {\n log(dtls.sessionId, \"decrypt handshake\");\n raw = cipher.decryptPacket(plain);\n }\n } catch (error) {\n err(dtls.sessionId, \"decrypt failed\", error);\n throw error;\n }\n try {\n return {\n type: ContentType.handshake,\n data: FragmentedHandshake.deSerialize(raw),\n };\n } catch (error) {\n err(dtls.sessionId, \"decSerialize failed\", error, raw);\n throw error;\n }\n }\n case ContentType.applicationData: {\n return {\n type: ContentType.applicationData,\n data: cipher.decryptPacket(plain),\n };\n }\n case ContentType.alert: {\n let alert = Alert.deSerialize(plain.fragment);\n\n // TODO impl more better about handle encrypted alert\n if (AlertDesc[alert.description] == undefined) {\n const dec = cipher.decryptPacket(plain);\n alert = Alert.deSerialize(dec);\n }\n err(\n dtls.sessionId,\n \"ContentType.alert\",\n alert,\n AlertDesc[alert.description],\n \"flight\",\n dtls.flight,\n \"lastFlight\",\n dtls.lastFlight,\n );\n if (alert.level > 1) {\n throw new Error(\"alert fatal error\");\n }\n }\n // eslint-disable-next-line no-fallthrough\n default: {\n return { type: ContentType.alert, data: undefined };\n }\n }\n };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../dtls/src/server.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uDAAuD;AACvD,qDAAkD;AAClD,qDAAkD;AAClD,qDAAkD;AAClD,6CAAkD;AAClD,4DAA+D;AAE/D,qCAA+C;AAE/C,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,iDAAiD,CAAC,CAAC;AAErE,MAAa,UAAW,SAAQ,mBAAU;IACxC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,EAAE,sBAAW,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../dtls/src/server.ts"],"names":[],"mappings":"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","sourcesContent":["import debug from \"debug\";\n\nimport { SessionType } from \"./cipher/suites/abstract\";\nimport { flight2 } from \"./flight/server/flight2\";\nimport { Flight4 } from \"./flight/server/flight4\";\nimport { Flight6 } from \"./flight/server/flight6\";\nimport { HandshakeType } from \"./handshake/const\";\nimport { ClientHello } from \"./handshake/message/client/hello\";\nimport { FragmentedHandshake } from \"./record/message/fragment\";\nimport { DtlsSocket, Options } from \"./socket\";\n\nconst log = debug(\"werift-dtls : packages/dtls/src/server.ts : log\");\n\nexport class DtlsServer extends DtlsSocket {\n constructor(options: Options) {\n super(options, SessionType.SERVER);\n this.onHandleHandshakes = this.handleHandshakes;\n log(this.dtls.sessionId, \"start server\");\n }\n\n private flight6?: Flight6;\n private handleHandshakes = async (assembled: FragmentedHandshake[]) => {\n log(\n this.dtls.sessionId,\n \"handleHandshakes\",\n assembled.map((a) => a.msg_type),\n );\n\n for (const handshake of assembled) {\n switch (handshake.msg_type) {\n // flight1,3\n case HandshakeType.client_hello_1:\n {\n if (this.connected) {\n this.renegotiation();\n }\n const clientHello = ClientHello.deSerialize(handshake.fragment);\n\n if (clientHello.cookie.length === 0) {\n log(this.dtls.sessionId, \"send flight2\");\n flight2(\n this.transport,\n this.dtls,\n this.cipher,\n this.srtp,\n )(clientHello);\n } else if (\n this.dtls.cookie &&\n clientHello.cookie.equals(this.dtls.cookie)\n ) {\n log(this.dtls.sessionId, \"send flight4\");\n await new Flight4(\n this.transport,\n this.dtls,\n this.cipher,\n this.srtp,\n ).exec(handshake, this.options.certificateRequest);\n } else {\n log(\"wrong state\", {\n dtlsCookie: this.dtls.cookie?.toString(\"hex\").slice(10),\n helloCookie: clientHello.cookie.toString(\"hex\").slice(10),\n });\n }\n }\n break;\n // flight 5\n case HandshakeType.certificate_11:\n case HandshakeType.certificate_verify_15:\n case HandshakeType.client_key_exchange_16:\n {\n if (this.connected) return;\n this.flight6 = new Flight6(this.transport, this.dtls, this.cipher);\n this.flight6.handleHandshake(handshake);\n }\n break;\n case HandshakeType.finished_20:\n {\n await this.waitForReady(() => !!this.flight6);\n this.flight6?.handleHandshake(handshake);\n\n await this.waitForReady(() => this.dtls.checkHandshakesExist([16]));\n await this.flight6?.exec();\n\n this.connected = true;\n this.onConnect.execute();\n log(this.dtls.sessionId, \"dtls connected\");\n }\n break;\n }\n }\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../../dtls/src/socket.ts"],"names":[],"mappings":"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","sourcesContent":["import { decode, types } from \"binary-data\";\nimport debug from \"debug\";\nimport { Event } from \"rx.mini\";\nimport { setTimeout } from \"timers/promises\";\n\nimport {\n HashAlgorithm,\n NamedCurveAlgorithmList,\n SignatureAlgorithm,\n SignatureHash,\n} from \"./cipher/const\";\nimport { exportKeyingMaterial } from \"./cipher/prf\";\nimport { SessionType, SessionTypes } from \"./cipher/suites/abstract\";\nimport { CipherContext } from \"./context/cipher\";\nimport { DtlsContext } from \"./context/dtls\";\nimport { Profile, SrtpContext } from \"./context/srtp\";\nimport { TransportContext } from \"./context/transport\";\nimport { EllipticCurves } from \"./handshake/extensions/ellipticCurves\";\nimport { ExtendedMasterSecret } from \"./handshake/extensions/extendedMasterSecret\";\nimport { RenegotiationIndication } from \"./handshake/extensions/renegotiationIndication\";\nimport { Signature } from \"./handshake/extensions/signature\";\nimport { UseSRTP } from \"./handshake/extensions/useSrtp\";\nimport { createPlaintext } from \"./record/builder\";\nimport { ContentType } from \"./record/const\";\nimport { FragmentedHandshake } from \"./record/message/fragment\";\nimport { parsePacket, parsePlainText } from \"./record/receive\";\nimport { Transport } from \"./transport\";\nimport { Extension } from \"./typings/domain\";\n\nconst log = debug(\"werift-dtls : packages/dtls/src/socket.ts : log\");\nconst err = debug(\"werift-dtls : packages/dtls/src/socket.ts : err\");\n\nexport class DtlsSocket {\n readonly onConnect = new Event();\n readonly onData = new Event<[Buffer]>();\n readonly onError = new Event<[Error]>();\n readonly onClose = new Event();\n readonly transport: TransportContext;\n cipher: CipherContext;\n dtls: DtlsContext;\n srtp: SrtpContext = new SrtpContext();\n\n connected = false;\n extensions: Extension[] = [];\n onHandleHandshakes!: (assembled: FragmentedHandshake[]) => Promise<void>;\n\n private bufferFragmentedHandshakes: FragmentedHandshake[] = [];\n\n constructor(public options: Options, public sessionType: SessionTypes) {\n this.dtls = new DtlsContext(this.options, this.sessionType);\n this.cipher = new CipherContext(\n this.sessionType,\n this.options.cert,\n this.options.key,\n this.options.signatureHash\n );\n this.transport = new TransportContext(this.options.transport);\n this.setupExtensions();\n this.transport.socket.onData = this.udpOnMessage;\n }\n\n renegotiation() {\n log(\"renegotiation\", this.sessionType);\n this.connected = false;\n this.cipher = new CipherContext(\n this.sessionType,\n this.options.cert,\n this.options.key,\n this.options.signatureHash\n );\n this.dtls = new DtlsContext(this.options, this.sessionType);\n this.srtp = new SrtpContext();\n this.extensions = [];\n this.bufferFragmentedHandshakes = [];\n }\n\n private udpOnMessage = (data: Buffer) => {\n const packets = parsePacket(data);\n\n for (const packet of packets) {\n try {\n const message = parsePlainText(this.dtls, this.cipher)(packet);\n switch (message.type) {\n case ContentType.handshake:\n {\n const handshake = message.data as FragmentedHandshake;\n const handshakes = this.handleFragmentHandshake([handshake]);\n const assembled = Object.values(\n handshakes.reduce(\n (acc: { [type: string]: FragmentedHandshake[] }, cur) => {\n if (!acc[cur.msg_type]) acc[cur.msg_type] = [];\n acc[cur.msg_type].push(cur);\n return acc;\n },\n {}\n )\n )\n .map((v) => FragmentedHandshake.assemble(v))\n .sort((a, b) => a.msg_type - b.msg_type);\n\n this.onHandleHandshakes(assembled).catch((error) => {\n err(this.dtls.sessionId, \"onHandleHandshakes error\", error);\n this.onError.execute(error);\n });\n }\n break;\n case ContentType.applicationData:\n {\n this.onData.execute(message.data as Buffer);\n }\n break;\n case ContentType.alert:\n this.onClose.execute();\n break;\n }\n } catch (error) {\n err(this.dtls.sessionId, \"catch udpOnMessage error\", error);\n }\n }\n };\n\n private setupExtensions() {\n {\n log(\n this.dtls.sessionId,\n \"support srtpProfiles\",\n this.options.srtpProfiles\n );\n if (this.options.srtpProfiles && this.options.srtpProfiles.length > 0) {\n const useSrtp = UseSRTP.create(\n this.options.srtpProfiles,\n Buffer.from([0x00])\n );\n this.extensions.push(useSrtp.extension);\n }\n }\n\n {\n const curve = EllipticCurves.createEmpty();\n curve.data = NamedCurveAlgorithmList;\n this.extensions.push(curve.extension);\n }\n\n {\n const signature = Signature.createEmpty();\n // libwebrtc/OpenSSL require 4=1 , 4=3 signatureHash\n signature.data = [\n { hash: HashAlgorithm.sha256_4, signature: SignatureAlgorithm.rsa_1 },\n { hash: HashAlgorithm.sha256_4, signature: SignatureAlgorithm.ecdsa_3 },\n ];\n this.extensions.push(signature.extension);\n }\n\n {\n if (this.options.extendedMasterSecret) {\n this.extensions.push({\n type: ExtendedMasterSecret.type,\n data: Buffer.alloc(0),\n });\n }\n }\n\n {\n const renegotiationIndication = RenegotiationIndication.createEmpty();\n this.extensions.push(renegotiationIndication.extension);\n }\n }\n\n protected waitForReady = (condition: () => boolean) =>\n new Promise<void>(async (r, f) => {\n {\n for (let i = 0; i < 10; i++) {\n if (condition()) {\n r();\n break;\n } else {\n await setTimeout(100 * i);\n }\n }\n f(\"waitForReady timeout\");\n }\n });\n\n handleFragmentHandshake(messages: FragmentedHandshake[]) {\n let handshakes = messages.filter((v) => {\n // find fragmented\n if (v.fragment_length !== v.length) {\n this.bufferFragmentedHandshakes.push(v);\n return false;\n }\n return true;\n });\n\n if (this.bufferFragmentedHandshakes.length > 1) {\n const [last] = this.bufferFragmentedHandshakes.slice(-1);\n if (last.fragment_offset + last.fragment_length === last.length) {\n handshakes = [...this.bufferFragmentedHandshakes, ...handshakes];\n this.bufferFragmentedHandshakes = [];\n }\n }\n return handshakes; // return un fragmented handshakes\n }\n\n /**send application data */\n send = async (buf: Buffer) => {\n const pkt = createPlaintext(this.dtls)(\n [{ type: ContentType.applicationData, fragment: buf }],\n ++this.dtls.recordSequenceNumber\n )[0];\n await this.transport.send(this.cipher.encryptPacket(pkt).serialize());\n };\n\n close() {\n this.transport.socket.close();\n }\n\n extractSessionKeys(keyLength: number, saltLength: number) {\n const keyingMaterial = this.exportKeyingMaterial(\n \"EXTRACTOR-dtls_srtp\",\n keyLength * 2 + saltLength * 2\n );\n\n const { clientKey, serverKey, clientSalt, serverSalt } = decode(\n keyingMaterial,\n {\n clientKey: types.buffer(keyLength),\n serverKey: types.buffer(keyLength),\n clientSalt: types.buffer(saltLength),\n serverSalt: types.buffer(saltLength),\n }\n );\n\n if (this.sessionType === SessionType.CLIENT) {\n return {\n localKey: clientKey,\n localSalt: clientSalt,\n remoteKey: serverKey,\n remoteSalt: serverSalt,\n };\n } else {\n return {\n localKey: serverKey,\n localSalt: serverSalt,\n remoteKey: clientKey,\n remoteSalt: clientSalt,\n };\n }\n }\n\n exportKeyingMaterial(label: string, length: number) {\n return exportKeyingMaterial(\n label,\n length,\n this.cipher.masterSecret,\n this.cipher.localRandom.serialize(),\n this.cipher.remoteRandom.serialize(),\n this.sessionType === SessionType.CLIENT\n );\n }\n}\n\nexport interface Options {\n transport: Transport;\n srtpProfiles?: Profile[];\n cert?: string;\n key?: string;\n signatureHash?: SignatureHash;\n certificateRequest?: boolean;\n extendedMasterSecret?: boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../../../dtls/src/socket.ts"],"names":[],"mappings":"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","sourcesContent":["import { decode, types } from \"binary-data\";\nimport debug from \"debug\";\nimport { Event } from \"rx.mini\";\nimport { setTimeout } from \"timers/promises\";\n\nimport {\n HashAlgorithm,\n NamedCurveAlgorithmList,\n SignatureAlgorithm,\n SignatureHash,\n} from \"./cipher/const\";\nimport { exportKeyingMaterial } from \"./cipher/prf\";\nimport { SessionType, SessionTypes } from \"./cipher/suites/abstract\";\nimport { CipherContext } from \"./context/cipher\";\nimport { DtlsContext } from \"./context/dtls\";\nimport { Profile, SrtpContext } from \"./context/srtp\";\nimport { TransportContext } from \"./context/transport\";\nimport { EllipticCurves } from \"./handshake/extensions/ellipticCurves\";\nimport { ExtendedMasterSecret } from \"./handshake/extensions/extendedMasterSecret\";\nimport { RenegotiationIndication } from \"./handshake/extensions/renegotiationIndication\";\nimport { Signature } from \"./handshake/extensions/signature\";\nimport { UseSRTP } from \"./handshake/extensions/useSrtp\";\nimport { createPlaintext } from \"./record/builder\";\nimport { ContentType } from \"./record/const\";\nimport { FragmentedHandshake } from \"./record/message/fragment\";\nimport { parsePacket, parsePlainText } from \"./record/receive\";\nimport { Transport } from \"./transport\";\nimport { Extension } from \"./typings/domain\";\n\nconst log = debug(\"werift-dtls : packages/dtls/src/socket.ts : log\");\nconst err = debug(\"werift-dtls : packages/dtls/src/socket.ts : err\");\n\nexport class DtlsSocket {\n readonly onConnect = new Event();\n readonly onData = new Event<[Buffer]>();\n readonly onError = new Event<[Error]>();\n readonly onClose = new Event();\n readonly transport: TransportContext;\n cipher: CipherContext;\n dtls: DtlsContext;\n srtp: SrtpContext = new SrtpContext();\n\n connected = false;\n extensions: Extension[] = [];\n onHandleHandshakes!: (assembled: FragmentedHandshake[]) => Promise<void>;\n\n private bufferFragmentedHandshakes: FragmentedHandshake[] = [];\n\n constructor(\n public options: Options,\n public sessionType: SessionTypes,\n ) {\n this.dtls = new DtlsContext(this.options, this.sessionType);\n this.cipher = new CipherContext(\n this.sessionType,\n this.options.cert,\n this.options.key,\n this.options.signatureHash,\n );\n this.transport = new TransportContext(this.options.transport);\n this.setupExtensions();\n this.transport.socket.onData = this.udpOnMessage;\n }\n\n renegotiation() {\n log(\"renegotiation\", this.sessionType);\n this.connected = false;\n this.cipher = new CipherContext(\n this.sessionType,\n this.options.cert,\n this.options.key,\n this.options.signatureHash,\n );\n this.dtls = new DtlsContext(this.options, this.sessionType);\n this.srtp = new SrtpContext();\n this.extensions = [];\n this.bufferFragmentedHandshakes = [];\n }\n\n private udpOnMessage = (data: Buffer) => {\n const packets = parsePacket(data);\n\n for (const packet of packets) {\n try {\n const message = parsePlainText(this.dtls, this.cipher)(packet);\n switch (message.type) {\n case ContentType.handshake:\n {\n const handshake = message.data as FragmentedHandshake;\n const handshakes = this.handleFragmentHandshake([handshake]);\n const assembled = Object.values(\n handshakes.reduce(\n (acc: { [type: string]: FragmentedHandshake[] }, cur) => {\n if (!acc[cur.msg_type]) acc[cur.msg_type] = [];\n acc[cur.msg_type].push(cur);\n return acc;\n },\n {},\n ),\n )\n .map((v) => FragmentedHandshake.assemble(v))\n .sort((a, b) => a.msg_type - b.msg_type);\n\n this.onHandleHandshakes(assembled).catch((error) => {\n err(this.dtls.sessionId, \"onHandleHandshakes error\", error);\n this.onError.execute(error);\n });\n }\n break;\n case ContentType.applicationData:\n {\n this.onData.execute(message.data as Buffer);\n }\n break;\n case ContentType.alert:\n this.onClose.execute();\n break;\n }\n } catch (error) {\n err(this.dtls.sessionId, \"catch udpOnMessage error\", error);\n }\n }\n };\n\n private setupExtensions() {\n {\n log(\n this.dtls.sessionId,\n \"support srtpProfiles\",\n this.options.srtpProfiles,\n );\n if (this.options.srtpProfiles && this.options.srtpProfiles.length > 0) {\n const useSrtp = UseSRTP.create(\n this.options.srtpProfiles,\n Buffer.from([0x00]),\n );\n this.extensions.push(useSrtp.extension);\n }\n }\n\n {\n const curve = EllipticCurves.createEmpty();\n curve.data = NamedCurveAlgorithmList;\n this.extensions.push(curve.extension);\n }\n\n {\n const signature = Signature.createEmpty();\n // libwebrtc/OpenSSL require 4=1 , 4=3 signatureHash\n signature.data = [\n { hash: HashAlgorithm.sha256_4, signature: SignatureAlgorithm.rsa_1 },\n { hash: HashAlgorithm.sha256_4, signature: SignatureAlgorithm.ecdsa_3 },\n ];\n this.extensions.push(signature.extension);\n }\n\n {\n if (this.options.extendedMasterSecret) {\n this.extensions.push({\n type: ExtendedMasterSecret.type,\n data: Buffer.alloc(0),\n });\n }\n }\n\n {\n const renegotiationIndication = RenegotiationIndication.createEmpty();\n this.extensions.push(renegotiationIndication.extension);\n }\n }\n\n protected waitForReady = (condition: () => boolean) =>\n new Promise<void>(async (r, f) => {\n {\n for (let i = 0; i < 10; i++) {\n if (condition()) {\n r();\n break;\n } else {\n await setTimeout(100 * i);\n }\n }\n f(\"waitForReady timeout\");\n }\n });\n\n handleFragmentHandshake(messages: FragmentedHandshake[]) {\n let handshakes = messages.filter((v) => {\n // find fragmented\n if (v.fragment_length !== v.length) {\n this.bufferFragmentedHandshakes.push(v);\n return false;\n }\n return true;\n });\n\n if (this.bufferFragmentedHandshakes.length > 1) {\n const [last] = this.bufferFragmentedHandshakes.slice(-1);\n if (last.fragment_offset + last.fragment_length === last.length) {\n handshakes = [...this.bufferFragmentedHandshakes, ...handshakes];\n this.bufferFragmentedHandshakes = [];\n }\n }\n return handshakes; // return un fragmented handshakes\n }\n\n /**send application data */\n send = async (buf: Buffer) => {\n const pkt = createPlaintext(this.dtls)(\n [{ type: ContentType.applicationData, fragment: buf }],\n ++this.dtls.recordSequenceNumber,\n )[0];\n await this.transport.send(this.cipher.encryptPacket(pkt).serialize());\n };\n\n close() {\n this.transport.socket.close();\n }\n\n extractSessionKeys(keyLength: number, saltLength: number) {\n const keyingMaterial = this.exportKeyingMaterial(\n \"EXTRACTOR-dtls_srtp\",\n keyLength * 2 + saltLength * 2,\n );\n\n const { clientKey, serverKey, clientSalt, serverSalt } = decode(\n keyingMaterial,\n {\n clientKey: types.buffer(keyLength),\n serverKey: types.buffer(keyLength),\n clientSalt: types.buffer(saltLength),\n serverSalt: types.buffer(saltLength),\n },\n );\n\n if (this.sessionType === SessionType.CLIENT) {\n return {\n localKey: clientKey,\n localSalt: clientSalt,\n remoteKey: serverKey,\n remoteSalt: serverSalt,\n };\n } else {\n return {\n localKey: serverKey,\n localSalt: serverSalt,\n remoteKey: clientKey,\n remoteSalt: clientSalt,\n };\n }\n }\n\n exportKeyingMaterial(label: string, length: number) {\n return exportKeyingMaterial(\n label,\n length,\n this.cipher.masterSecret,\n this.cipher.localRandom.serialize(),\n this.cipher.remoteRandom.serialize(),\n this.sessionType === SessionType.CLIENT,\n );\n }\n}\n\nexport interface Options {\n transport: Transport;\n srtpProfiles?: Profile[];\n cert?: string;\n key?: string;\n signatureHash?: SignatureHash;\n certificateRequest?: boolean;\n extendedMasterSecret?: boolean;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../dtls/src/transport.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,8CAA8C,CAAC,CAAC;AAQlE,MAAa,YAAY;IACvB,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../../dtls/src/transport.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,8CAA8C,CAAC,CAAC;AAQlE,MAAa,YAAY;IACvB,YACU,GAAW,EACX,KAA0B;QADlC;;;;mBAAQ,GAAG;WAAQ;QACnB;;;;mBAAQ,KAAK;WAAqB;QAOpC;;;;;WAA+B;QAE/B;;;;mBAAO,CAAC,GAAW,EAAE,EAAE,CACrB,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzB,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBAC9D,IAAI,GAAG,EAAE;wBACP,CAAC,CAAC,GAAG,CAAC,CAAC;qBACR;yBAAM;wBACL,CAAC,EAAE,CAAC;qBACL;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;WAAC;QAjBH,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAeD,KAAK;QACH,IAAI;YACF,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;SAClB;QAAC,OAAO,KAAK,EAAE,GAAE;IACpB,CAAC;CACF;AA7BD,oCA6BC;AAEM,MAAM,kBAAkB,GAAG,CAChC,MAAc,EACd,QAA6B,EAAE,EAC/B,EAAE,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAHxB,QAAA,kBAAkB,sBAGM","sourcesContent":["import debug from \"debug\";\nimport { RemoteInfo, Socket } from \"dgram\";\n\nconst log = debug(\"werift-dtls : packages/dtls/src/transport.ts\");\n\nexport interface Transport {\n onData?: (buf: Buffer) => void;\n send: (buf: Buffer) => Promise<void>;\n close: () => void;\n}\n\nexport class UdpTransport implements Transport {\n constructor(\n private upd: Socket,\n private rinfo: Partial<RemoteInfo>,\n ) {\n upd.on(\"message\", (buf, target) => {\n this.rinfo = target;\n if (this.onData) this.onData(buf);\n });\n }\n onData?: (buf: Buffer) => void;\n\n send = (buf: Buffer) =>\n new Promise<void>((r, f) => {\n log(\"this.rinfo\", this.rinfo);\n this.upd.send(buf, this.rinfo.port, this.rinfo.address, (err) => {\n if (err) {\n f(err);\n } else {\n r();\n }\n });\n });\n\n close() {\n try {\n this.upd.close();\n } catch (error) {}\n }\n}\n\nexport const createUdpTransport = (\n socket: Socket,\n rinfo: Partial<RemoteInfo> = {},\n) => new UdpTransport(socket, rinfo);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"candidate.js","sourceRoot":"","sources":["../../../../ice/src/candidate.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAoC;AACpC,yDAAiC;AACjC,6BAA6B;AAE7B,MAAa,SAAS;IACpB,oBAAoB;IAEpB,YACS,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,cAAuB,EACvB,WAAoB,EACpB,OAAgB,EAChB,UAAmB
|
|
1
|
+
{"version":3,"file":"candidate.js","sourceRoot":"","sources":["../../../../ice/src/candidate.ts"],"names":[],"mappings":";;;;;;AAAA,mCAAoC;AACpC,yDAAiC;AACjC,6BAA6B;AAE7B,MAAa,SAAS;IACpB,oBAAoB;IAEpB,YACS,UAAkB,EAClB,SAAiB,EACjB,SAAiB,EACjB,QAAgB,EAChB,IAAY,EACZ,IAAY,EACZ,IAAY,EACZ,cAAuB,EACvB,WAAoB,EACpB,OAAgB,EAChB,UAAmB;QAV1B;;;;mBAAO,UAAU;WAAQ;QACzB;;;;mBAAO,SAAS;WAAQ;QACxB;;;;mBAAO,SAAS;WAAQ;QACxB;;;;mBAAO,QAAQ;WAAQ;QACvB;;;;mBAAO,IAAI;WAAQ;QACnB;;;;mBAAO,IAAI;WAAQ;QACnB;;;;mBAAO,IAAI;WAAQ;QACnB;;;;mBAAO,cAAc;WAAS;QAC9B;;;;mBAAO,WAAW;WAAS;QAC3B;;;;mBAAO,OAAO;WAAS;QACvB;;;;mBAAO,UAAU;WAAS;IACzB,CAAC;IAEJ,MAAM,CAAC,OAAO,CAAC,GAAW;QACxB,uCAAuC;QACvC,yBAAyB;QACzB,yBAAyB;QACzB,qEAAqE;QAErE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG;YACb,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAClB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACb,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;SACd,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,IAAA,eAAK,EAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;YAC5C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;gBACtB,MAAc,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAClD;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;gBAC7B,MAAc,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACvD;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;gBAC/B,MAAc,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAC1C;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE;gBAClC,MAAc,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACrD;SACF;QACD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GACpE,MAAM,CAAC;QAET,OAAO,IAAI,SAAS,CAClB,UAAU,EACV,SAAS,EACT,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,IAAI,EACH,MAAc,CAAC,iBAAiB,CAAC,EACjC,MAAc,CAAC,cAAc,CAAC,EAC9B,MAAc,CAAC,SAAS,CAAC,EACzB,MAAc,CAAC,YAAY,CAAC,CAC9B,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,KAAgB;QAC1B,MAAM;QACN,qEAAqE;QACrE,qEAAqE;QACrE,mBAAmB;QACnB,MAAM;QACN,MAAM,CAAC,GAAG,IAAA,YAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,IAAA,YAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,CACL,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;YAClC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;YAC9D,CAAC,KAAK,CAAC,CACR,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAE/H,IAAI,IAAI,CAAC,cAAc;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,cAAc,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,WAAW,IAAI,SAAS;YAAE,GAAG,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QACvE,IAAI,IAAI,CAAC,OAAO;YAAE,GAAG,IAAI,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS;YAAE,GAAG,IAAI,eAAe,IAAI,CAAC,UAAU,EAAE,CAAC;QAE1E,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA1FD,8BA0FC;AAED,SAAgB,mBAAmB,CACjC,aAAqB,EACrB,kBAA0B,EAC1B,WAAmB;IAEnB,MAAM;IACN,gDAAgD;IAChD,MAAM;IACN,MAAM,GAAG,GAAG,GAAG,aAAa,IAAI,kBAAkB,IAAI,WAAW,EAAE,CAAC;IAEpE,OAAO,IAAA,mBAAU,EAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAXD,kDAWC;AAED,eAAe;AACf,SAAgB,iBAAiB,CAC/B,kBAA0B,EAC1B,aAAqB,EACrB,SAAS,GAAG,KAAK;IAEjB,8CAA8C;IAC9C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,aAAa,KAAK,MAAM,EAAE;QAC5B,QAAQ,GAAG,GAAG,CAAC;KAChB;SAAM,IAAI,aAAa,KAAK,OAAO,EAAE;QACpC,QAAQ,GAAG,GAAG,CAAC;KAChB;SAAM,IAAI,aAAa,KAAK,OAAO,EAAE;QACpC,QAAQ,GAAG,GAAG,CAAC;KAChB;SAAM;QACL,QAAQ,GAAG,CAAC,CAAC;KACd;IACD,OAAO,CACL,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,GAAG,kBAAkB,CAAC,CACzE,CAAC;AACJ,CAAC;AAnBD,8CAmBC","sourcesContent":["import { createHash } from \"crypto\";\nimport range from \"lodash/range\";\nimport { isIPv4 } from \"net\";\n\nexport class Candidate {\n // An ICE candidate.\n\n constructor(\n public foundation: string,\n public component: number,\n public transport: string,\n public priority: number,\n public host: string,\n public port: number,\n public type: string,\n public relatedAddress?: string,\n public relatedPort?: number,\n public tcptype?: string,\n public generation?: number,\n ) {}\n\n static fromSdp(sdp: string) {\n // Parse a :class:`Candidate` from SDP.\n // .. code-block:: python\n // Candidate.from_sdp(\n // '6815297761 1 udp 659136 1.2.3.4 31102 typ host generation 0')\n\n const bits = sdp.split(\" \");\n if (bits.length < 8) throw new Error(\"SDP does not have enough properties\");\n\n const kwargs = {\n foundation: bits[0],\n component: Number(bits[1]),\n transport: bits[2],\n priority: Number(bits[3]),\n host: bits[4],\n port: Number(bits[5]),\n type: bits[7],\n };\n\n for (const i of range(8, bits.length - 1, 2)) {\n if (bits[i] === \"raddr\") {\n (kwargs as any)[\"related_address\"] = bits[i + 1];\n } else if (bits[i] === \"rport\") {\n (kwargs as any)[\"related_port\"] = Number(bits[i + 1]);\n } else if (bits[i] === \"tcptype\") {\n (kwargs as any)[\"tcptype\"] = bits[i + 1];\n } else if (bits[i] === \"generation\") {\n (kwargs as any)[\"generation\"] = Number(bits[i + 1]);\n }\n }\n const { foundation, component, transport, priority, host, port, type } =\n kwargs;\n\n return new Candidate(\n foundation,\n component,\n transport,\n priority,\n host,\n port,\n type,\n (kwargs as any)[\"related_address\"],\n (kwargs as any)[\"related_port\"],\n (kwargs as any)[\"tcptype\"],\n (kwargs as any)[\"generation\"],\n );\n }\n\n canPairWith(other: Candidate) {\n // \"\"\"\n // A local candidate is paired with a remote candidate if and only if\n // the two candidates have the same component ID and have the same IP\n // address version.\n // \"\"\"\n const a = isIPv4(this.host);\n const b = isIPv4(other.host);\n return (\n this.component === other.component &&\n this.transport.toLowerCase() === other.transport.toLowerCase() &&\n a === b\n );\n }\n\n toSdp() {\n let sdp = `${this.foundation} ${this.component} ${this.transport} ${this.priority} ${this.host} ${this.port} typ ${this.type}`;\n\n if (this.relatedAddress) sdp += ` raddr ${this.relatedAddress}`;\n if (this.relatedPort != undefined) sdp += ` rport ${this.relatedPort}`;\n if (this.tcptype) sdp += ` tcptype ${this.tcptype}`;\n if (this.generation != undefined) sdp += ` generation ${this.generation}`;\n\n return sdp;\n }\n}\n\nexport function candidateFoundation(\n candidateType: string,\n candidateTransport: string,\n baseAddress: string,\n) {\n // \"\"\"\n // See RFC 5245 - 4.1.1.3. Computing Foundations\n // \"\"\"\n const key = `${candidateType}|${candidateTransport}|${baseAddress}`;\n\n return createHash(\"md5\").update(key, \"ascii\").digest(\"hex\").slice(7);\n}\n\n// priorityを決める\nexport function candidatePriority(\n candidateComponent: number,\n candidateType: string,\n localPref = 65535,\n) {\n // See RFC 5245 - 4.1.2.1. Recommended Formula\n let typePref = 0;\n if (candidateType === \"host\") {\n typePref = 126;\n } else if (candidateType === \"prflx\") {\n typePref = 110;\n } else if (candidateType === \"srflx\") {\n typePref = 100;\n } else {\n typePref = 0;\n }\n return (\n (1 << 24) * typePref + (1 << 8) * localPref + (256 - candidateComponent)\n );\n}\n"]}
|