werift 0.17.6 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/common/src/binary.d.ts +1 -0
- package/lib/common/src/binary.js +74 -21
- package/lib/common/src/binary.js.map +1 -1
- package/lib/common/src/log.js +18 -0
- package/lib/common/src/log.js.map +1 -1
- package/lib/common/src/network.d.ts +1 -1
- package/lib/common/src/network.js +1 -0
- package/lib/common/src/network.js.map +1 -1
- package/lib/common/src/promise.js +22 -7
- package/lib/common/src/promise.js.map +1 -1
- package/lib/common/src/type.d.ts +1 -1
- package/lib/dtls/src/cipher/const.d.ts +7 -7
- package/lib/dtls/src/cipher/key-exchange.js +24 -1
- package/lib/dtls/src/cipher/key-exchange.js.map +1 -1
- package/lib/dtls/src/cipher/suites/abstract.d.ts +2 -2
- package/lib/dtls/src/cipher/suites/abstract.js +36 -2
- package/lib/dtls/src/cipher/suites/abstract.js.map +1 -1
- package/lib/dtls/src/cipher/suites/aead.js +60 -6
- package/lib/dtls/src/cipher/suites/aead.js.map +1 -1
- package/lib/dtls/src/client.js +62 -51
- package/lib/dtls/src/client.js.map +1 -1
- package/lib/dtls/src/context/cipher.js +151 -59
- package/lib/dtls/src/context/cipher.js.map +1 -1
- package/lib/dtls/src/context/dtls.js +90 -14
- 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 +8 -0
- package/lib/dtls/src/context/srtp.js.map +1 -1
- package/lib/dtls/src/context/transport.js +14 -2
- package/lib/dtls/src/context/transport.js.map +1 -1
- package/lib/dtls/src/flight/client/flight1.js +6 -1
- package/lib/dtls/src/flight/client/flight1.js.map +1 -1
- package/lib/dtls/src/flight/client/flight5.js +12 -2
- 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 +42 -7
- package/lib/dtls/src/flight/flight.js.map +1 -1
- package/lib/dtls/src/flight/server/flight2.js +4 -2
- package/lib/dtls/src/flight/server/flight2.js.map +1 -1
- package/lib/dtls/src/flight/server/flight4.js +12 -2
- package/lib/dtls/src/flight/server/flight4.js.map +1 -1
- package/lib/dtls/src/flight/server/flight6.js +6 -1
- package/lib/dtls/src/flight/server/flight6.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/ellipticCurves.js +27 -7
- package/lib/dtls/src/handshake/extensions/ellipticCurves.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js +6 -1
- package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/renegotiationIndication.js +27 -7
- package/lib/dtls/src/handshake/extensions/renegotiationIndication.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/signature.js +27 -7
- package/lib/dtls/src/handshake/extensions/signature.js.map +1 -1
- package/lib/dtls/src/handshake/extensions/useSrtp.js +39 -9
- package/lib/dtls/src/handshake/extensions/useSrtp.js.map +1 -1
- package/lib/dtls/src/handshake/message/alert.js +21 -6
- package/lib/dtls/src/handshake/message/alert.js.map +1 -1
- package/lib/dtls/src/handshake/message/certificate.js +26 -5
- package/lib/dtls/src/handshake/message/certificate.js.map +1 -1
- package/lib/dtls/src/handshake/message/changeCipherSpec.js +14 -4
- package/lib/dtls/src/handshake/message/changeCipherSpec.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/certificateVerify.js +33 -7
- package/lib/dtls/src/handshake/message/client/certificateVerify.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/hello.js +68 -18
- package/lib/dtls/src/handshake/message/client/hello.js.map +1 -1
- package/lib/dtls/src/handshake/message/client/keyExchange.js +26 -5
- package/lib/dtls/src/handshake/message/client/keyExchange.js.map +1 -1
- package/lib/dtls/src/handshake/message/finished.js +18 -2
- package/lib/dtls/src/handshake/message/finished.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/certificateRequest.js +40 -9
- package/lib/dtls/src/handshake/message/server/certificateRequest.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/hello.js +60 -14
- package/lib/dtls/src/handshake/message/server/hello.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/helloDone.js +18 -2
- package/lib/dtls/src/handshake/message/server/helloDone.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js +33 -7
- package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js.map +1 -1
- package/lib/dtls/src/handshake/message/server/keyExchange.js +75 -19
- package/lib/dtls/src/handshake/message/server/keyExchange.js.map +1 -1
- package/lib/dtls/src/handshake/random.js +21 -6
- package/lib/dtls/src/handshake/random.js.map +1 -1
- package/lib/dtls/src/record/builder.d.ts +1 -1
- package/lib/dtls/src/record/message/fragment.js +49 -14
- package/lib/dtls/src/record/message/fragment.js.map +1 -1
- package/lib/dtls/src/record/message/header.js +84 -24
- package/lib/dtls/src/record/message/header.js.map +1 -1
- package/lib/dtls/src/record/message/plaintext.js +21 -6
- package/lib/dtls/src/record/message/plaintext.js.map +1 -1
- package/lib/dtls/src/server.js +59 -42
- package/lib/dtls/src/server.js.map +1 -1
- package/lib/dtls/src/socket.js +153 -64
- package/lib/dtls/src/socket.js.map +1 -1
- package/lib/dtls/src/transport.js +38 -11
- package/lib/dtls/src/transport.js.map +1 -1
- package/lib/dtls/src/typings/domain.d.ts +4 -4
- package/lib/ice/src/candidate.js +66 -11
- package/lib/ice/src/candidate.js.map +1 -1
- package/lib/ice/src/dns/lookup.js +12 -1
- package/lib/ice/src/dns/lookup.js.map +1 -1
- package/lib/ice/src/exceptions.js +27 -2
- package/lib/ice/src/exceptions.js.map +1 -1
- package/lib/ice/src/helper.d.ts +1 -1
- package/lib/ice/src/helper.js +12 -2
- package/lib/ice/src/helper.js.map +1 -1
- package/lib/ice/src/ice.d.ts +9 -3
- package/lib/ice/src/ice.js +407 -155
- 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 +6 -1
- package/lib/ice/src/stun/attributes.js.map +1 -1
- package/lib/ice/src/stun/message.d.ts +4 -0
- package/lib/ice/src/stun/message.js +24 -3
- package/lib/ice/src/stun/message.js.map +1 -1
- package/lib/ice/src/stun/protocol.js +64 -15
- package/lib/ice/src/stun/protocol.js.map +1 -1
- package/lib/ice/src/stun/transaction.js +99 -36
- package/lib/ice/src/stun/transaction.js.map +1 -1
- package/lib/ice/src/transport.js +57 -21
- package/lib/ice/src/transport.js.map +1 -1
- package/lib/ice/src/turn/protocol.js +176 -40
- package/lib/ice/src/turn/protocol.js.map +1 -1
- package/lib/ice/src/types/model.d.ts +1 -1
- package/lib/rtp/src/codec/av1.d.ts +1 -1
- package/lib/rtp/src/codec/av1.js +118 -30
- package/lib/rtp/src/codec/av1.js.map +1 -1
- package/lib/rtp/src/codec/base.js +8 -0
- package/lib/rtp/src/codec/base.js.map +1 -1
- package/lib/rtp/src/codec/h264.js +55 -0
- package/lib/rtp/src/codec/h264.js.map +1 -1
- package/lib/rtp/src/codec/index.d.ts +2 -0
- package/lib/rtp/src/codec/index.js +12 -2
- package/lib/rtp/src/codec/index.js.map +1 -1
- package/lib/rtp/src/codec/opus.js +8 -0
- package/lib/rtp/src/codec/opus.js.map +1 -1
- package/lib/rtp/src/codec/vp8.js +102 -3
- package/lib/rtp/src/codec/vp8.js.map +1 -1
- package/lib/rtp/src/codec/vp9.js +164 -7
- package/lib/rtp/src/codec/vp9.js.map +1 -1
- package/lib/rtp/src/container/ebml/ebml.js +30 -3
- package/lib/rtp/src/container/ebml/ebml.js.map +1 -1
- package/lib/rtp/src/container/webm.d.ts +1 -1
- package/lib/rtp/src/container/webm.js +44 -13
- package/lib/rtp/src/container/webm.js.map +1 -1
- package/lib/rtp/src/processor/depacketizer.d.ts +16 -8
- package/lib/rtp/src/processor/depacketizer.js +59 -22
- package/lib/rtp/src/processor/depacketizer.js.map +1 -1
- package/lib/rtp/src/processor/depacketizerCallback.js +24 -8
- package/lib/rtp/src/processor/depacketizerCallback.js.map +1 -1
- package/lib/rtp/src/processor/depacketizerTransformer.d.ts +2 -2
- package/lib/rtp/src/processor/depacketizerTransformer.js +6 -0
- package/lib/rtp/src/processor/depacketizerTransformer.js.map +1 -1
- package/lib/rtp/src/processor/index.d.ts +4 -2
- package/lib/rtp/src/processor/index.js +4 -2
- package/lib/rtp/src/processor/index.js.map +1 -1
- package/lib/rtp/src/processor/interface.d.ts +4 -0
- package/lib/rtp/src/processor/interface.js.map +1 -1
- package/lib/rtp/src/processor/jitterBuffer.d.ts +2 -1
- package/lib/rtp/src/processor/jitterBuffer.js +40 -8
- package/lib/rtp/src/processor/jitterBuffer.js.map +1 -1
- package/lib/rtp/src/processor/jitterBufferCallback.js +30 -9
- package/lib/rtp/src/processor/jitterBufferCallback.js.map +1 -1
- package/lib/rtp/src/processor/jitterBufferTransformer.js +12 -1
- package/lib/rtp/src/processor/jitterBufferTransformer.js.map +1 -1
- package/lib/rtp/src/processor/lipsync.d.ts +42 -0
- package/lib/rtp/src/processor/lipsync.js +178 -0
- package/lib/rtp/src/processor/lipsync.js.map +1 -0
- package/lib/rtp/src/processor/lipsyncCallback.d.ts +10 -0
- package/lib/rtp/src/processor/lipsyncCallback.js +59 -0
- package/lib/rtp/src/processor/lipsyncCallback.js.map +1 -0
- package/lib/rtp/src/processor/ntpTime.d.ts +24 -0
- package/lib/rtp/src/processor/ntpTime.js +91 -0
- package/lib/rtp/src/processor/ntpTime.js.map +1 -0
- package/lib/rtp/src/processor/ntpTimeCallback.d.ts +7 -0
- package/lib/rtp/src/processor/ntpTimeCallback.js +36 -0
- package/lib/rtp/src/processor/ntpTimeCallback.js.map +1 -0
- package/lib/rtp/src/processor/source/index.d.ts +1 -0
- package/lib/rtp/src/processor/source/index.js +1 -0
- package/lib/rtp/src/processor/source/index.js.map +1 -1
- package/lib/rtp/src/processor/source/rtcpCallback.d.ts +12 -0
- package/lib/rtp/src/processor/source/rtcpCallback.js +33 -0
- package/lib/rtp/src/processor/source/rtcpCallback.js.map +1 -0
- package/lib/rtp/src/processor/source/rtpCallback.js +28 -12
- package/lib/rtp/src/processor/source/rtpCallback.js.map +1 -1
- package/lib/rtp/src/processor/source/rtpStream.js +38 -10
- package/lib/rtp/src/processor/source/rtpStream.js.map +1 -1
- package/lib/rtp/src/processor/webm.d.ts +11 -4
- package/lib/rtp/src/processor/webm.js +169 -46
- package/lib/rtp/src/processor/webm.js.map +1 -1
- package/lib/rtp/src/processor/webmCallback.d.ts +5 -3
- package/lib/rtp/src/processor/webmCallback.js +52 -8
- package/lib/rtp/src/processor/webmCallback.js.map +1 -1
- package/lib/rtp/src/processor/webmStream.d.ts +2 -2
- package/lib/rtp/src/processor/webmStream.js +24 -0
- package/lib/rtp/src/processor/webmStream.js.map +1 -1
- package/lib/rtp/src/processor_old/base.d.ts +18 -0
- package/lib/rtp/src/processor_old/base.js +51 -0
- package/lib/rtp/src/processor_old/base.js.map +1 -0
- package/lib/rtp/src/processor_old/lipsync.d.ts +30 -0
- package/lib/rtp/src/processor_old/lipsync.js +119 -0
- package/lib/rtp/src/processor_old/lipsync.js.map +1 -0
- package/lib/rtp/src/rtcp/header.js +30 -5
- package/lib/rtp/src/rtcp/header.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.d.ts +1 -1
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js +30 -3
- package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/index.d.ts +1 -1
- package/lib/rtp/src/rtcp/psfb/index.js +18 -2
- package/lib/rtp/src/rtcp/psfb/index.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js +30 -3
- package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js.map +1 -1
- package/lib/rtp/src/rtcp/psfb/remb.js +66 -5
- package/lib/rtp/src/rtcp/psfb/remb.js.map +1 -1
- package/lib/rtp/src/rtcp/rr.js +68 -4
- package/lib/rtp/src/rtcp/rr.js.map +1 -1
- package/lib/rtp/src/rtcp/rtcp.d.ts +1 -1
- package/lib/rtp/src/rtcp/rtpfb/index.d.ts +1 -1
- package/lib/rtp/src/rtcp/rtpfb/index.js +24 -2
- package/lib/rtp/src/rtcp/rtpfb/index.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/nack.d.ts +5 -0
- package/lib/rtp/src/rtcp/rtpfb/nack.js +43 -3
- package/lib/rtp/src/rtcp/rtpfb/nack.js.map +1 -1
- package/lib/rtp/src/rtcp/rtpfb/twcc.js +154 -11
- package/lib/rtp/src/rtcp/rtpfb/twcc.js.map +1 -1
- package/lib/rtp/src/rtcp/sdes.js +42 -4
- package/lib/rtp/src/rtcp/sdes.js.map +1 -1
- package/lib/rtp/src/rtcp/sr.js +56 -5
- package/lib/rtp/src/rtcp/sr.js.map +1 -1
- package/lib/rtp/src/rtp/red/encoder.js +18 -3
- package/lib/rtp/src/rtp/red/encoder.js.map +1 -1
- package/lib/rtp/src/rtp/red/handler.js +12 -2
- package/lib/rtp/src/rtp/red/handler.js.map +1 -1
- package/lib/rtp/src/rtp/red/packet.js +18 -2
- package/lib/rtp/src/rtp/red/packet.js.map +1 -1
- package/lib/rtp/src/rtp/rtp.d.ts +3 -3
- package/lib/rtp/src/rtp/rtp.js +104 -17
- package/lib/rtp/src/rtp/rtp.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/ctr.js +26 -10
- package/lib/rtp/src/srtp/cipher/ctr.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/gcm.d.ts +3 -0
- package/lib/rtp/src/srtp/cipher/gcm.js +40 -20
- package/lib/rtp/src/srtp/cipher/gcm.js.map +1 -1
- package/lib/rtp/src/srtp/cipher/index.js +24 -4
- package/lib/rtp/src/srtp/cipher/index.js.map +1 -1
- package/lib/rtp/src/srtp/const.d.ts +1 -1
- package/lib/rtp/src/srtp/context/context.d.ts +1 -1
- package/lib/rtp/src/srtp/context/context.js +84 -5
- package/lib/rtp/src/srtp/context/context.js.map +1 -1
- package/lib/rtp/src/srtp/session.d.ts +2 -2
- package/lib/rtp/src/srtp/session.js +24 -1
- package/lib/rtp/src/srtp/session.js.map +1 -1
- package/lib/rtp/src/srtp/srtcp.js +15 -5
- package/lib/rtp/src/srtp/srtcp.js.map +1 -1
- package/lib/rtp/src/srtp/srtp.js +15 -5
- package/lib/rtp/src/srtp/srtp.js.map +1 -1
- package/lib/sctp/src/chunk.js +349 -69
- package/lib/sctp/src/chunk.js.map +1 -1
- package/lib/sctp/src/helper.d.ts +1 -1
- package/lib/sctp/src/param.d.ts +3 -3
- package/lib/sctp/src/param.js +66 -11
- package/lib/sctp/src/param.js.map +1 -1
- package/lib/sctp/src/sctp.d.ts +1 -1
- package/lib/sctp/src/sctp.js +479 -138
- package/lib/sctp/src/sctp.js.map +1 -1
- package/lib/sctp/src/transport.js +31 -10
- package/lib/sctp/src/transport.js.map +1 -1
- package/lib/webrtc/src/dataChannel.d.ts +1 -1
- package/lib/webrtc/src/dataChannel.js +145 -15
- package/lib/webrtc/src/dataChannel.js.map +1 -1
- package/lib/webrtc/src/helper.js +37 -12
- package/lib/webrtc/src/helper.js.map +1 -1
- package/lib/webrtc/src/media/parameters.d.ts +1 -1
- package/lib/webrtc/src/media/parameters.js +124 -3
- package/lib/webrtc/src/media/parameters.js.map +1 -1
- package/lib/webrtc/src/media/receiver/nack.d.ts +4 -4
- package/lib/webrtc/src/media/receiver/nack.js +85 -33
- package/lib/webrtc/src/media/receiver/nack.js.map +1 -1
- package/lib/webrtc/src/media/receiver/receiverTwcc.d.ts +1 -1
- package/lib/webrtc/src/media/receiver/receiverTwcc.js +42 -6
- package/lib/webrtc/src/media/receiver/receiverTwcc.js.map +1 -1
- package/lib/webrtc/src/media/receiver/statistics.js +61 -5
- package/lib/webrtc/src/media/receiver/statistics.js.map +1 -1
- package/lib/webrtc/src/media/router.d.ts +1 -1
- package/lib/webrtc/src/media/router.js +108 -83
- package/lib/webrtc/src/media/router.js.map +1 -1
- package/lib/webrtc/src/media/rtpReceiver.js +188 -33
- package/lib/webrtc/src/media/rtpReceiver.js.map +1 -1
- package/lib/webrtc/src/media/rtpSender.js +279 -42
- package/lib/webrtc/src/media/rtpSender.js.map +1 -1
- package/lib/webrtc/src/media/rtpTransceiver.d.ts +2 -2
- package/lib/webrtc/src/media/rtpTransceiver.js +102 -18
- package/lib/webrtc/src/media/rtpTransceiver.js.map +1 -1
- package/lib/webrtc/src/media/sender/cumulativeResult.js +36 -6
- package/lib/webrtc/src/media/sender/cumulativeResult.js.map +1 -1
- package/lib/webrtc/src/media/sender/senderBWE.js +57 -12
- package/lib/webrtc/src/media/sender/senderBWE.js.map +1 -1
- package/lib/webrtc/src/media/track.js +135 -24
- package/lib/webrtc/src/media/track.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/index.d.ts +7 -4
- package/lib/webrtc/src/nonstandard/recorder/index.js +50 -6
- package/lib/webrtc/src/nonstandard/recorder/index.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/index.js +12 -2
- package/lib/webrtc/src/nonstandard/recorder/writer/index.js.map +1 -1
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.d.ts +2 -2
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.js +39 -35
- package/lib/webrtc/src/nonstandard/recorder/writer/webm.js.map +1 -1
- package/lib/webrtc/src/nonstandard/userMedia.js +158 -56
- package/lib/webrtc/src/nonstandard/userMedia.js.map +1 -1
- package/lib/webrtc/src/peerConnection.d.ts +2 -2
- package/lib/webrtc/src/peerConnection.js +260 -58
- package/lib/webrtc/src/peerConnection.js.map +1 -1
- package/lib/webrtc/src/sdp.js +287 -24
- package/lib/webrtc/src/sdp.js.map +1 -1
- package/lib/webrtc/src/transport/dtls.d.ts +3 -3
- package/lib/webrtc/src/transport/dtls.js +185 -30
- 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 +193 -25
- package/lib/webrtc/src/transport/ice.js.map +1 -1
- package/lib/webrtc/src/transport/sctp.js +193 -101
- package/lib/webrtc/src/transport/sctp.js.map +1 -1
- package/lib/webrtc/src/types/domain.d.ts +3 -3
- package/lib/webrtc/src/types/util.d.ts +2 -2
- package/lib/webrtc/src/utils.js +12 -2
- package/lib/webrtc/src/utils.js.map +1 -1
- package/package.json +15 -15
- package/src/dataChannel.ts +3 -1
- package/src/media/receiver/nack.ts +23 -19
- package/src/media/rtpReceiver.ts +5 -0
- package/src/media/rtpSender.ts +22 -19
- package/src/nonstandard/recorder/index.ts +12 -4
- package/src/nonstandard/recorder/writer/webm.ts +42 -50
- package/src/transport/dtls.ts +7 -3
- package/src/transport/ice.ts +6 -3
- package/src/transport/sctp.ts +3 -1
- package/lib/rtp/src/processor/avBuffer.d.ts +0 -36
- package/lib/rtp/src/processor/avBuffer.js +0 -107
- package/lib/rtp/src/processor/avBuffer.js.map +0 -1
- package/lib/rtp/src/processor/avBufferCallback.d.ts +0 -10
- package/lib/rtp/src/processor/avBufferCallback.js +0 -27
- package/lib/rtp/src/processor/avBufferCallback.js.map +0 -1
|
@@ -5,11 +5,36 @@ const binary_data_1 = require("binary-data");
|
|
|
5
5
|
const binary_1 = require("../../handshake/binary");
|
|
6
6
|
class DtlsPlaintextHeader {
|
|
7
7
|
constructor(contentType, protocolVersion, epoch, sequenceNumber, contentLen) {
|
|
8
|
-
this
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
Object.defineProperty(this, "contentType", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
configurable: true,
|
|
11
|
+
writable: true,
|
|
12
|
+
value: contentType
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(this, "protocolVersion", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
writable: true,
|
|
18
|
+
value: protocolVersion
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(this, "epoch", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: epoch
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(this, "sequenceNumber", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
configurable: true,
|
|
29
|
+
writable: true,
|
|
30
|
+
value: sequenceNumber
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(this, "contentLen", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true,
|
|
36
|
+
value: contentLen
|
|
37
|
+
});
|
|
13
38
|
}
|
|
14
39
|
static createEmpty() {
|
|
15
40
|
return new DtlsPlaintextHeader(undefined, undefined, undefined, undefined, undefined);
|
|
@@ -25,20 +50,50 @@ class DtlsPlaintextHeader {
|
|
|
25
50
|
}
|
|
26
51
|
}
|
|
27
52
|
exports.DtlsPlaintextHeader = DtlsPlaintextHeader;
|
|
28
|
-
DtlsPlaintextHeader
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
53
|
+
Object.defineProperty(DtlsPlaintextHeader, "spec", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
configurable: true,
|
|
56
|
+
writable: true,
|
|
57
|
+
value: {
|
|
58
|
+
contentType: binary_data_1.types.uint8,
|
|
59
|
+
protocolVersion: binary_1.ProtocolVersion,
|
|
60
|
+
epoch: binary_data_1.types.uint16be,
|
|
61
|
+
sequenceNumber: binary_data_1.types.uint48be,
|
|
62
|
+
contentLen: binary_data_1.types.uint16be,
|
|
63
|
+
}
|
|
64
|
+
});
|
|
35
65
|
class MACHeader {
|
|
36
66
|
constructor(epoch, sequenceNumber, contentType, protocolVersion, contentLen) {
|
|
37
|
-
this
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
67
|
+
Object.defineProperty(this, "epoch", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
configurable: true,
|
|
70
|
+
writable: true,
|
|
71
|
+
value: epoch
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(this, "sequenceNumber", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
configurable: true,
|
|
76
|
+
writable: true,
|
|
77
|
+
value: sequenceNumber
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(this, "contentType", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
configurable: true,
|
|
82
|
+
writable: true,
|
|
83
|
+
value: contentType
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(this, "protocolVersion", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
configurable: true,
|
|
88
|
+
writable: true,
|
|
89
|
+
value: protocolVersion
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(this, "contentLen", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
configurable: true,
|
|
94
|
+
writable: true,
|
|
95
|
+
value: contentLen
|
|
96
|
+
});
|
|
42
97
|
}
|
|
43
98
|
static createEmpty() {
|
|
44
99
|
return new MACHeader(undefined, undefined, undefined, undefined, undefined);
|
|
@@ -54,11 +109,16 @@ class MACHeader {
|
|
|
54
109
|
}
|
|
55
110
|
}
|
|
56
111
|
exports.MACHeader = MACHeader;
|
|
57
|
-
MACHeader
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
112
|
+
Object.defineProperty(MACHeader, "spec", {
|
|
113
|
+
enumerable: true,
|
|
114
|
+
configurable: true,
|
|
115
|
+
writable: true,
|
|
116
|
+
value: {
|
|
117
|
+
epoch: binary_data_1.types.uint16be,
|
|
118
|
+
sequenceNumber: binary_data_1.types.uint48be,
|
|
119
|
+
contentType: binary_data_1.types.uint8,
|
|
120
|
+
protocolVersion: binary_1.ProtocolVersion,
|
|
121
|
+
contentLen: binary_data_1.types.uint16be,
|
|
122
|
+
}
|
|
123
|
+
});
|
|
64
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;;;;;mBAJlB;;;;;;mBACA;;;;;;mBACA;;;;;;mBACA;;;;;;mBACA;;IACN,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;;AArCH,kDAsCC;AArCQ;;;;WAAgB;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;GAAC;AAiCJ,MAAa,SAAS;IASpB,YACS,KAAa,EACb,cAAsB,EACtB,WAAmB,EACnB,eAAiD,EACjD,UAAkB;;;;;mBAJlB;;;;;;mBACA;;;;;;mBACA;;;;;;mBACA;;;;;;mBACA;;IACN,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;;AArCH,8BAsCC;AArCQ;;;;WAAgB;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;GAAC","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"]}
|
|
@@ -7,8 +7,18 @@ const helper_1 = require("../../helper");
|
|
|
7
7
|
const header_1 = require("./header");
|
|
8
8
|
class DtlsPlaintext {
|
|
9
9
|
constructor(recordLayerHeader, fragment) {
|
|
10
|
-
this
|
|
11
|
-
|
|
10
|
+
Object.defineProperty(this, "recordLayerHeader", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
configurable: true,
|
|
13
|
+
writable: true,
|
|
14
|
+
value: recordLayerHeader
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(this, "fragment", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
configurable: true,
|
|
19
|
+
writable: true,
|
|
20
|
+
value: fragment
|
|
21
|
+
});
|
|
12
22
|
}
|
|
13
23
|
get summary() {
|
|
14
24
|
return {
|
|
@@ -34,8 +44,13 @@ class DtlsPlaintext {
|
|
|
34
44
|
}
|
|
35
45
|
}
|
|
36
46
|
exports.DtlsPlaintext = DtlsPlaintext;
|
|
37
|
-
DtlsPlaintext
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
47
|
+
Object.defineProperty(DtlsPlaintext, "spec", {
|
|
48
|
+
enumerable: true,
|
|
49
|
+
configurable: true,
|
|
50
|
+
writable: true,
|
|
51
|
+
value: {
|
|
52
|
+
recordLayerHeader: header_1.DtlsPlaintextHeader.spec,
|
|
53
|
+
fragment: binary_data_1.types.buffer((context) => context.current.recordLayerHeader.contentLen),
|
|
54
|
+
}
|
|
55
|
+
});
|
|
41
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;;;;;mBADhB;;;;;;mBACA;;IACN,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;;AA7CH,sCA8CC;AA7CQ;;;;WAAgB;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;GAAC","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"]}
|
package/lib/dtls/src/server.js
CHANGED
|
@@ -16,53 +16,70 @@ const log = (0, debug_1.default)("werift-dtls : packages/dtls/src/server.ts : lo
|
|
|
16
16
|
class DtlsServer extends socket_1.DtlsSocket {
|
|
17
17
|
constructor(options) {
|
|
18
18
|
super(options, abstract_1.SessionType.SERVER);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
Object.defineProperty(this, "flight6", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: void 0
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(this, "handleHandshakes", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: async (assembled) => {
|
|
30
|
+
log(this.dtls.sessionId, "handleHandshakes", assembled.map((a) => a.msg_type));
|
|
31
|
+
for (const handshake of assembled) {
|
|
32
|
+
switch (handshake.msg_type) {
|
|
33
|
+
// flight1,3
|
|
34
|
+
case const_1.HandshakeType.client_hello_1:
|
|
35
|
+
{
|
|
36
|
+
if (this.connected) {
|
|
37
|
+
this.renegotiation();
|
|
38
|
+
}
|
|
39
|
+
const clientHello = hello_1.ClientHello.deSerialize(handshake.fragment);
|
|
40
|
+
if (clientHello.cookie.length === 0) {
|
|
41
|
+
log(this.dtls.sessionId, "send flight2");
|
|
42
|
+
(0, flight2_1.flight2)(this.transport, this.dtls, this.cipher, this.srtp)(clientHello);
|
|
43
|
+
}
|
|
44
|
+
else if (this.dtls.cookie &&
|
|
45
|
+
clientHello.cookie.equals(this.dtls.cookie)) {
|
|
46
|
+
log(this.dtls.sessionId, "send flight4");
|
|
47
|
+
await new flight4_1.Flight4(this.transport, this.dtls, this.cipher, this.srtp).exec(handshake, this.options.certificateRequest);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
log("wrong state", {
|
|
51
|
+
dtlsCookie: this.dtls.cookie?.toString("hex").slice(10),
|
|
52
|
+
helloCookie: clientHello.cookie.toString("hex").slice(10),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
28
55
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
56
|
+
break;
|
|
57
|
+
// flight 5
|
|
58
|
+
case const_1.HandshakeType.certificate_11:
|
|
59
|
+
case const_1.HandshakeType.certificate_verify_15:
|
|
60
|
+
case const_1.HandshakeType.client_key_exchange_16:
|
|
61
|
+
{
|
|
62
|
+
if (this.connected)
|
|
63
|
+
return;
|
|
64
|
+
this.flight6 = new flight6_1.Flight6(this.transport, this.dtls, this.cipher);
|
|
65
|
+
this.flight6.handleHandshake(handshake);
|
|
33
66
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
await
|
|
67
|
+
break;
|
|
68
|
+
case const_1.HandshakeType.finished_20:
|
|
69
|
+
{
|
|
70
|
+
await this.waitForReady(() => !!this.flight6);
|
|
71
|
+
this.flight6?.handleHandshake(handshake);
|
|
72
|
+
await this.waitForReady(() => this.dtls.checkHandshakesExist([16]));
|
|
73
|
+
await this.flight6?.exec();
|
|
74
|
+
this.connected = true;
|
|
75
|
+
this.onConnect.execute();
|
|
76
|
+
log(this.dtls.sessionId, "dtls connected");
|
|
38
77
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// flight 5
|
|
42
|
-
case const_1.HandshakeType.certificate_11:
|
|
43
|
-
case const_1.HandshakeType.certificate_verify_15:
|
|
44
|
-
case const_1.HandshakeType.client_key_exchange_16:
|
|
45
|
-
{
|
|
46
|
-
if (this.connected)
|
|
47
|
-
return;
|
|
48
|
-
this.flight6 = new flight6_1.Flight6(this.transport, this.dtls, this.cipher);
|
|
49
|
-
this.flight6.handleHandshake(handshake);
|
|
50
|
-
}
|
|
51
|
-
break;
|
|
52
|
-
case const_1.HandshakeType.finished_20:
|
|
53
|
-
{
|
|
54
|
-
await this.waitForReady(() => !!this.flight6);
|
|
55
|
-
this.flight6?.handleHandshake(handshake);
|
|
56
|
-
await this.waitForReady(() => this.dtls.checkHandshakesExist([16]));
|
|
57
|
-
await this.flight6?.exec();
|
|
58
|
-
this.connected = true;
|
|
59
|
-
this.onConnect.execute();
|
|
60
|
-
log(this.dtls.sessionId, "dtls connected");
|
|
61
|
-
}
|
|
62
|
-
break;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
63
80
|
}
|
|
64
81
|
}
|
|
65
|
-
};
|
|
82
|
+
});
|
|
66
83
|
this.onHandleHandshakes = this.handleHandshakes;
|
|
67
84
|
log(this.dtls.sessionId, "start server");
|
|
68
85
|
}
|
|
@@ -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"]}
|
package/lib/dtls/src/socket.js
CHANGED
|
@@ -28,77 +28,166 @@ const log = (0, debug_1.default)("werift-dtls : packages/dtls/src/socket.ts : lo
|
|
|
28
28
|
const err = (0, debug_1.default)("werift-dtls : packages/dtls/src/socket.ts : err");
|
|
29
29
|
class DtlsSocket {
|
|
30
30
|
constructor(options, sessionType) {
|
|
31
|
-
this
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
this
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
31
|
+
Object.defineProperty(this, "options", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: options
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(this, "sessionType", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: sessionType
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(this, "onConnect", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true,
|
|
47
|
+
value: new rx_mini_1.Event()
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(this, "onData", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
configurable: true,
|
|
52
|
+
writable: true,
|
|
53
|
+
value: new rx_mini_1.Event()
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(this, "onError", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
configurable: true,
|
|
58
|
+
writable: true,
|
|
59
|
+
value: new rx_mini_1.Event()
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(this, "onClose", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
configurable: true,
|
|
64
|
+
writable: true,
|
|
65
|
+
value: new rx_mini_1.Event()
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(this, "transport", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
configurable: true,
|
|
70
|
+
writable: true,
|
|
71
|
+
value: void 0
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(this, "cipher", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
configurable: true,
|
|
76
|
+
writable: true,
|
|
77
|
+
value: void 0
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(this, "dtls", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
configurable: true,
|
|
82
|
+
writable: true,
|
|
83
|
+
value: void 0
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(this, "srtp", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
configurable: true,
|
|
88
|
+
writable: true,
|
|
89
|
+
value: new srtp_1.SrtpContext()
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(this, "connected", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
configurable: true,
|
|
94
|
+
writable: true,
|
|
95
|
+
value: false
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(this, "extensions", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
configurable: true,
|
|
100
|
+
writable: true,
|
|
101
|
+
value: []
|
|
102
|
+
});
|
|
103
|
+
Object.defineProperty(this, "onHandleHandshakes", {
|
|
104
|
+
enumerable: true,
|
|
105
|
+
configurable: true,
|
|
106
|
+
writable: true,
|
|
107
|
+
value: void 0
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(this, "bufferFragmentedHandshakes", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
configurable: true,
|
|
112
|
+
writable: true,
|
|
113
|
+
value: []
|
|
114
|
+
});
|
|
115
|
+
Object.defineProperty(this, "udpOnMessage", {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
configurable: true,
|
|
118
|
+
writable: true,
|
|
119
|
+
value: (data) => {
|
|
120
|
+
const packets = (0, receive_1.parsePacket)(data);
|
|
121
|
+
for (const packet of packets) {
|
|
122
|
+
try {
|
|
123
|
+
const message = (0, receive_1.parsePlainText)(this.dtls, this.cipher)(packet);
|
|
124
|
+
switch (message.type) {
|
|
125
|
+
case const_2.ContentType.handshake:
|
|
126
|
+
{
|
|
127
|
+
const handshake = message.data;
|
|
128
|
+
const handshakes = this.handleFragmentHandshake([handshake]);
|
|
129
|
+
const assembled = Object.values(handshakes.reduce((acc, cur) => {
|
|
130
|
+
if (!acc[cur.msg_type])
|
|
131
|
+
acc[cur.msg_type] = [];
|
|
132
|
+
acc[cur.msg_type].push(cur);
|
|
133
|
+
return acc;
|
|
134
|
+
}, {}))
|
|
135
|
+
.map((v) => fragment_1.FragmentedHandshake.assemble(v))
|
|
136
|
+
.sort((a, b) => a.msg_type - b.msg_type);
|
|
137
|
+
this.onHandleHandshakes(assembled).catch((error) => {
|
|
138
|
+
err(this.dtls.sessionId, "onHandleHandshakes error", error);
|
|
139
|
+
this.onError.execute(error);
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
case const_2.ContentType.applicationData:
|
|
144
|
+
{
|
|
145
|
+
this.onData.execute(message.data);
|
|
146
|
+
}
|
|
147
|
+
break;
|
|
148
|
+
case const_2.ContentType.alert:
|
|
149
|
+
this.onClose.execute();
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
err(this.dtls.sessionId, "catch udpOnMessage error", error);
|
|
76
155
|
}
|
|
77
|
-
}
|
|
78
|
-
catch (error) {
|
|
79
|
-
err(this.dtls.sessionId, "catch udpOnMessage error", error);
|
|
80
156
|
}
|
|
81
157
|
}
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
158
|
+
});
|
|
159
|
+
Object.defineProperty(this, "waitForReady", {
|
|
160
|
+
enumerable: true,
|
|
161
|
+
configurable: true,
|
|
162
|
+
writable: true,
|
|
163
|
+
value: (condition) => new Promise(async (r, f) => {
|
|
164
|
+
{
|
|
165
|
+
for (let i = 0; i < 10; i++) {
|
|
166
|
+
if (condition()) {
|
|
167
|
+
r();
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
await (0, promises_1.setTimeout)(100 * i);
|
|
172
|
+
}
|
|
92
173
|
}
|
|
174
|
+
f("waitForReady timeout");
|
|
93
175
|
}
|
|
94
|
-
|
|
95
|
-
}
|
|
176
|
+
})
|
|
96
177
|
});
|
|
97
178
|
/**send application data */
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
179
|
+
Object.defineProperty(this, "send", {
|
|
180
|
+
enumerable: true,
|
|
181
|
+
configurable: true,
|
|
182
|
+
writable: true,
|
|
183
|
+
value: async (buf) => {
|
|
184
|
+
const pkt = (0, builder_1.createPlaintext)(this.dtls)([{ type: const_2.ContentType.applicationData, fragment: buf }], ++this.dtls.recordSequenceNumber)[0];
|
|
185
|
+
await this.transport.send(this.cipher.encryptPacket(pkt).serialize());
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
this.dtls = new dtls_1.DtlsContext(this.options, this.sessionType);
|
|
189
|
+
this.cipher = new cipher_1.CipherContext(this.sessionType, this.options.cert, this.options.key, this.options.signatureHash);
|
|
190
|
+
this.transport = new transport_1.TransportContext(this.options.transport);
|
|
102
191
|
this.setupExtensions();
|
|
103
192
|
this.transport.socket.onData = this.udpOnMessage;
|
|
104
193
|
}
|