werift 0.18.17 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/lib/common/src/binary.js.map +1 -1
  2. package/lib/common/src/network.js.map +1 -1
  3. package/lib/common/src/promise.js.map +1 -1
  4. package/lib/dtls/src/cipher/const.d.ts +8 -0
  5. package/lib/dtls/src/cipher/const.js +10 -2
  6. package/lib/dtls/src/cipher/const.js.map +1 -1
  7. package/lib/dtls/src/cipher/create.js +10 -10
  8. package/lib/dtls/src/cipher/create.js.map +1 -1
  9. package/lib/dtls/src/cipher/ec.d.ts +9 -0
  10. package/lib/dtls/src/cipher/ec.js +22 -0
  11. package/lib/dtls/src/cipher/ec.js.map +1 -0
  12. package/lib/dtls/src/cipher/namedCurve.js +6 -29
  13. package/lib/dtls/src/cipher/namedCurve.js.map +1 -1
  14. package/lib/dtls/src/cipher/prf.js +7 -32
  15. package/lib/dtls/src/cipher/prf.js.map +1 -1
  16. package/lib/dtls/src/cipher/suites/aead.d.ts +1 -1
  17. package/lib/dtls/src/cipher/suites/aead.js.map +1 -1
  18. package/lib/dtls/src/client.js.map +1 -1
  19. package/lib/dtls/src/context/cipher.js +2 -2
  20. package/lib/dtls/src/context/cipher.js.map +1 -1
  21. package/lib/dtls/src/context/dtls.js.map +1 -1
  22. package/lib/dtls/src/context/srtp.js.map +1 -1
  23. package/lib/dtls/src/flight/client/flight5.js +8 -6
  24. package/lib/dtls/src/flight/client/flight5.js.map +1 -1
  25. package/lib/dtls/src/flight/flight.js +1 -1
  26. package/lib/dtls/src/flight/flight.js.map +1 -1
  27. package/lib/dtls/src/flight/server/flight2.js +1 -1
  28. package/lib/dtls/src/flight/server/flight2.js.map +1 -1
  29. package/lib/dtls/src/flight/server/flight4.js +1 -7
  30. package/lib/dtls/src/flight/server/flight4.js.map +1 -1
  31. package/lib/dtls/src/flight/server/flight6.js.map +1 -1
  32. package/lib/dtls/src/handshake/const.js +1 -1
  33. package/lib/dtls/src/handshake/const.js.map +1 -1
  34. package/lib/dtls/src/handshake/extensions/ellipticCurves.js +1 -1
  35. package/lib/dtls/src/handshake/extensions/ellipticCurves.js.map +1 -1
  36. package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js +1 -1
  37. package/lib/dtls/src/handshake/extensions/extendedMasterSecret.js.map +1 -1
  38. package/lib/dtls/src/handshake/extensions/renegotiationIndication.js +1 -1
  39. package/lib/dtls/src/handshake/extensions/renegotiationIndication.js.map +1 -1
  40. package/lib/dtls/src/handshake/extensions/signature.js +1 -1
  41. package/lib/dtls/src/handshake/extensions/signature.js.map +1 -1
  42. package/lib/dtls/src/handshake/extensions/useSrtp.js +1 -1
  43. package/lib/dtls/src/handshake/extensions/useSrtp.js.map +1 -1
  44. package/lib/dtls/src/handshake/message/alert.js +1 -1
  45. package/lib/dtls/src/handshake/message/alert.js.map +1 -1
  46. package/lib/dtls/src/handshake/message/certificate.js +1 -1
  47. package/lib/dtls/src/handshake/message/certificate.js.map +1 -1
  48. package/lib/dtls/src/handshake/message/changeCipherSpec.js +1 -1
  49. package/lib/dtls/src/handshake/message/changeCipherSpec.js.map +1 -1
  50. package/lib/dtls/src/handshake/message/client/certificateVerify.js +1 -1
  51. package/lib/dtls/src/handshake/message/client/certificateVerify.js.map +1 -1
  52. package/lib/dtls/src/handshake/message/client/hello.js +1 -1
  53. package/lib/dtls/src/handshake/message/client/hello.js.map +1 -1
  54. package/lib/dtls/src/handshake/message/client/keyExchange.js +1 -1
  55. package/lib/dtls/src/handshake/message/client/keyExchange.js.map +1 -1
  56. package/lib/dtls/src/handshake/message/server/certificateRequest.js +1 -1
  57. package/lib/dtls/src/handshake/message/server/certificateRequest.js.map +1 -1
  58. package/lib/dtls/src/handshake/message/server/hello.js +1 -1
  59. package/lib/dtls/src/handshake/message/server/hello.js.map +1 -1
  60. package/lib/dtls/src/handshake/message/server/helloDone.js +1 -1
  61. package/lib/dtls/src/handshake/message/server/helloDone.js.map +1 -1
  62. package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js +1 -1
  63. package/lib/dtls/src/handshake/message/server/helloVerifyRequest.js.map +1 -1
  64. package/lib/dtls/src/handshake/message/server/keyExchange.js +1 -1
  65. package/lib/dtls/src/handshake/message/server/keyExchange.js.map +1 -1
  66. package/lib/dtls/src/handshake/random.js +2 -2
  67. package/lib/dtls/src/handshake/random.js.map +1 -1
  68. package/lib/dtls/src/helper.d.ts +1 -1
  69. package/lib/dtls/src/helper.js.map +1 -1
  70. package/lib/dtls/src/record/const.js +2 -2
  71. package/lib/dtls/src/record/const.js.map +1 -1
  72. package/lib/dtls/src/record/message/fragment.d.ts +1 -1
  73. package/lib/dtls/src/record/message/fragment.js +3 -3
  74. package/lib/dtls/src/record/message/fragment.js.map +1 -1
  75. package/lib/dtls/src/record/message/header.js +2 -2
  76. package/lib/dtls/src/record/message/header.js.map +1 -1
  77. package/lib/dtls/src/record/message/plaintext.js +1 -1
  78. package/lib/dtls/src/record/message/plaintext.js.map +1 -1
  79. package/lib/dtls/src/record/receive.js.map +1 -1
  80. package/lib/dtls/src/server.js.map +1 -1
  81. package/lib/dtls/src/socket.js +1 -4
  82. package/lib/dtls/src/socket.js.map +1 -1
  83. package/lib/dtls/src/transport.js.map +1 -1
  84. package/lib/ice/src/candidate.js +1 -1
  85. package/lib/ice/src/candidate.js.map +1 -1
  86. package/lib/ice/src/dns/lookup.js.map +1 -1
  87. package/lib/ice/src/exceptions.js.map +1 -1
  88. package/lib/ice/src/helper.js.map +1 -1
  89. package/lib/ice/src/ice.d.ts +5 -13
  90. package/lib/ice/src/ice.js +57 -154
  91. package/lib/ice/src/ice.js.map +1 -1
  92. package/lib/ice/src/stun/attributes.js.map +1 -1
  93. package/lib/ice/src/stun/const.d.ts +1 -1
  94. package/lib/ice/src/stun/const.js +2 -2
  95. package/lib/ice/src/stun/const.js.map +1 -1
  96. package/lib/ice/src/stun/message.js +1 -1
  97. package/lib/ice/src/stun/message.js.map +1 -1
  98. package/lib/ice/src/stun/protocol.js.map +1 -1
  99. package/lib/ice/src/stun/transaction.js.map +1 -1
  100. package/lib/ice/src/transport.js +1 -1
  101. package/lib/ice/src/transport.js.map +1 -1
  102. package/lib/ice/src/turn/protocol.js.map +1 -1
  103. package/lib/ice/src/utils.d.ts +1 -0
  104. package/lib/ice/src/utils.js +72 -1
  105. package/lib/ice/src/utils.js.map +1 -1
  106. package/lib/rtp/src/codec/av1.js +1 -1
  107. package/lib/rtp/src/codec/av1.js.map +1 -1
  108. package/lib/rtp/src/codec/h264.js.map +1 -1
  109. package/lib/rtp/src/codec/index.js.map +1 -1
  110. package/lib/rtp/src/codec/opus.js.map +1 -1
  111. package/lib/rtp/src/codec/vp8.js.map +1 -1
  112. package/lib/rtp/src/codec/vp9.js.map +1 -1
  113. package/lib/rtp/src/extra/container/index.js.map +1 -0
  114. package/lib/rtp/src/extra/container/mp4/container.js.map +1 -0
  115. package/lib/rtp/src/extra/container/mp4/exp-golomb.js.map +1 -0
  116. package/lib/rtp/src/{container → extra/container}/mp4/h264.js +1 -1
  117. package/lib/rtp/src/extra/container/mp4/h264.js.map +1 -0
  118. package/lib/rtp/src/extra/container/mp4/index.js.map +1 -0
  119. package/lib/rtp/src/extra/container/mp4/mp4box.js.map +1 -0
  120. package/lib/rtp/src/{container → extra/container}/mp4/sps-parser.js +4 -4
  121. package/lib/rtp/src/extra/container/mp4/sps-parser.js.map +1 -0
  122. package/lib/rtp/src/extra/container/ogg/index.js.map +1 -0
  123. package/lib/rtp/src/extra/container/ogg/parser.js.map +1 -0
  124. package/lib/rtp/src/{container → extra/container}/webm/container.js +3 -3
  125. package/lib/rtp/src/extra/container/webm/container.js.map +1 -0
  126. package/lib/rtp/src/{container → extra/container}/webm/ebml/ebml.js +1 -1
  127. package/lib/rtp/src/extra/container/webm/ebml/ebml.js.map +1 -0
  128. package/lib/rtp/src/extra/container/webm/ebml/id.js.map +1 -0
  129. package/lib/rtp/src/extra/container/webm/ebml/index.js.map +1 -0
  130. package/lib/rtp/src/extra/container/webm/ebml/typedArrayUtils.js.map +1 -0
  131. package/lib/rtp/src/extra/container/webm/index.js.map +1 -0
  132. package/lib/rtp/src/extra/index.d.ts +2 -0
  133. package/lib/rtp/src/extra/index.js +19 -0
  134. package/lib/rtp/src/extra/index.js.map +1 -0
  135. package/lib/rtp/src/{processor → extra/processor}/depacketizer.d.ts +1 -1
  136. package/lib/rtp/src/{processor → extra/processor}/depacketizer.js +1 -1
  137. package/lib/rtp/src/extra/processor/depacketizer.js.map +1 -0
  138. package/lib/rtp/src/extra/processor/depacketizerCallback.js.map +1 -0
  139. package/lib/rtp/src/{processor → extra/processor}/depacketizerTransformer.d.ts +1 -1
  140. package/lib/rtp/src/extra/processor/depacketizerTransformer.js.map +1 -0
  141. package/lib/rtp/src/extra/processor/dtx.js.map +1 -0
  142. package/lib/rtp/src/extra/processor/dtxCallback.js.map +1 -0
  143. package/lib/rtp/src/extra/processor/index.js.map +1 -0
  144. package/lib/rtp/src/extra/processor/interface.js.map +1 -0
  145. package/lib/rtp/src/{processor → extra/processor}/jitterBuffer.js +1 -1
  146. package/lib/rtp/src/extra/processor/jitterBuffer.js.map +1 -0
  147. package/lib/rtp/src/extra/processor/jitterBufferCallback.js.map +1 -0
  148. package/lib/rtp/src/extra/processor/jitterBufferTransformer.js.map +1 -0
  149. package/lib/rtp/src/{processor → extra/processor}/lipsync.js +1 -1
  150. package/lib/rtp/src/extra/processor/lipsync.js.map +1 -0
  151. package/lib/rtp/src/{processor → extra/processor}/lipsyncCallback.d.ts +1 -1
  152. package/lib/rtp/src/extra/processor/lipsyncCallback.js.map +1 -0
  153. package/lib/rtp/src/{processor → extra/processor}/mp4.d.ts +1 -1
  154. package/lib/rtp/src/{processor → extra/processor}/mp4.js +4 -3
  155. package/lib/rtp/src/extra/processor/mp4.js.map +1 -0
  156. package/lib/rtp/src/{processor → extra/processor}/mp4Callback.js +2 -2
  157. package/lib/rtp/src/extra/processor/mp4Callback.js.map +1 -0
  158. package/lib/rtp/src/{processor → extra/processor}/mute.js +1 -1
  159. package/lib/rtp/src/extra/processor/mute.js.map +1 -0
  160. package/lib/rtp/src/extra/processor/muteCallback.js.map +1 -0
  161. package/lib/rtp/src/{processor → extra/processor}/nack.d.ts +1 -1
  162. package/lib/rtp/src/{processor → extra/processor}/nack.js +1 -1
  163. package/lib/rtp/src/extra/processor/nack.js.map +1 -0
  164. package/lib/rtp/src/extra/processor/nackHandlerCallback.js.map +1 -0
  165. package/lib/rtp/src/{processor → extra/processor}/ntpTime.d.ts +2 -1
  166. package/lib/rtp/src/{processor → extra/processor}/ntpTime.js +4 -3
  167. package/lib/rtp/src/extra/processor/ntpTime.js.map +1 -0
  168. package/lib/rtp/src/extra/processor/ntpTimeCallback.js.map +1 -0
  169. package/lib/rtp/src/{processor → extra/processor}/rtcpCallback.d.ts +1 -1
  170. package/lib/rtp/src/extra/processor/rtcpCallback.js.map +1 -0
  171. package/lib/rtp/src/{processor → extra/processor}/rtpCallback.d.ts +1 -1
  172. package/lib/rtp/src/{processor → extra/processor}/rtpCallback.js +1 -1
  173. package/lib/rtp/src/extra/processor/rtpCallback.js.map +1 -0
  174. package/lib/rtp/src/{processor → extra/processor}/rtpStream.d.ts +1 -1
  175. package/lib/rtp/src/{processor → extra/processor}/rtpStream.js +1 -1
  176. package/lib/rtp/src/extra/processor/rtpStream.js.map +1 -0
  177. package/lib/rtp/src/{processor → extra/processor}/rtpTime.d.ts +1 -1
  178. package/lib/rtp/src/{processor → extra/processor}/rtpTime.js +4 -3
  179. package/lib/rtp/src/extra/processor/rtpTime.js.map +1 -0
  180. package/lib/rtp/src/extra/processor/rtpTimeCallback.js.map +1 -0
  181. package/lib/rtp/src/{processor → extra/processor}/webm.js +4 -4
  182. package/lib/rtp/src/extra/processor/webm.js.map +1 -0
  183. package/lib/rtp/src/{processor → extra/processor}/webmCallback.js +1 -1
  184. package/lib/rtp/src/extra/processor/webmCallback.js.map +1 -0
  185. package/lib/rtp/src/extra/processor/webmStream.js.map +1 -0
  186. package/lib/rtp/src/index.d.ts +1 -2
  187. package/lib/rtp/src/index.js +0 -2
  188. package/lib/rtp/src/index.js.map +1 -1
  189. package/lib/rtp/src/rtcp/header.js.map +1 -1
  190. package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js +1 -1
  191. package/lib/rtp/src/rtcp/psfb/fullIntraRequest.js.map +1 -1
  192. package/lib/rtp/src/rtcp/psfb/index.js +1 -1
  193. package/lib/rtp/src/rtcp/psfb/index.js.map +1 -1
  194. package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js +1 -1
  195. package/lib/rtp/src/rtcp/psfb/pictureLossIndication.js.map +1 -1
  196. package/lib/rtp/src/rtcp/psfb/remb.js +1 -1
  197. package/lib/rtp/src/rtcp/psfb/remb.js.map +1 -1
  198. package/lib/rtp/src/rtcp/rr.js +1 -1
  199. package/lib/rtp/src/rtcp/rr.js.map +1 -1
  200. package/lib/rtp/src/rtcp/rtcp.js.map +1 -1
  201. package/lib/rtp/src/rtcp/rtpfb/index.js +1 -1
  202. package/lib/rtp/src/rtcp/rtpfb/index.js.map +1 -1
  203. package/lib/rtp/src/rtcp/rtpfb/nack.js +2 -2
  204. package/lib/rtp/src/rtcp/rtpfb/nack.js.map +1 -1
  205. package/lib/rtp/src/rtcp/rtpfb/twcc.js +3 -3
  206. package/lib/rtp/src/rtcp/rtpfb/twcc.js.map +1 -1
  207. package/lib/rtp/src/rtcp/sdes.js +1 -1
  208. package/lib/rtp/src/rtcp/sdes.js.map +1 -1
  209. package/lib/rtp/src/rtcp/sr.js +1 -1
  210. package/lib/rtp/src/rtcp/sr.js.map +1 -1
  211. package/lib/rtp/src/rtp/headerExtension.js.map +1 -1
  212. package/lib/rtp/src/rtp/red/encoder.js.map +1 -1
  213. package/lib/rtp/src/rtp/red/handler.js.map +1 -1
  214. package/lib/rtp/src/rtp/red/packet.js +0 -1
  215. package/lib/rtp/src/rtp/red/packet.js.map +1 -1
  216. package/lib/rtp/src/rtp/rtp.js +3 -2
  217. package/lib/rtp/src/rtp/rtp.js.map +1 -1
  218. package/lib/rtp/src/srtp/cipher/ctr.d.ts +1 -1
  219. package/lib/rtp/src/srtp/cipher/ctr.js +1 -1
  220. package/lib/rtp/src/srtp/cipher/ctr.js.map +1 -1
  221. package/lib/rtp/src/srtp/cipher/gcm.d.ts +1 -1
  222. package/lib/rtp/src/srtp/cipher/gcm.js +1 -1
  223. package/lib/rtp/src/srtp/cipher/gcm.js.map +1 -1
  224. package/lib/rtp/src/srtp/const.js.map +1 -1
  225. package/lib/rtp/src/srtp/context/context.js +1 -1
  226. package/lib/rtp/src/srtp/context/context.js.map +1 -1
  227. package/lib/rtp/src/srtp/context/srtcp.js.map +1 -1
  228. package/lib/sctp/src/chunk.js +17 -17
  229. package/lib/sctp/src/chunk.js.map +1 -1
  230. package/lib/sctp/src/const.js +2 -2
  231. package/lib/sctp/src/const.js.map +1 -1
  232. package/lib/sctp/src/param.js +5 -5
  233. package/lib/sctp/src/param.js.map +1 -1
  234. package/lib/sctp/src/sctp.js +5 -1
  235. package/lib/sctp/src/sctp.js.map +1 -1
  236. package/lib/sctp/src/transport.js.map +1 -1
  237. package/lib/webrtc/src/dataChannel.d.ts +1 -1
  238. package/lib/webrtc/src/dataChannel.js +1 -1
  239. package/lib/webrtc/src/dataChannel.js.map +1 -1
  240. package/lib/webrtc/src/helper.js.map +1 -1
  241. package/lib/webrtc/src/index.d.ts +0 -2
  242. package/lib/webrtc/src/index.js +0 -2
  243. package/lib/webrtc/src/index.js.map +1 -1
  244. package/lib/webrtc/src/media/parameters.d.ts +1 -2
  245. package/lib/webrtc/src/media/parameters.js.map +1 -1
  246. package/lib/webrtc/src/media/receiver/nack.js.map +1 -1
  247. package/lib/webrtc/src/media/receiver/receiverTwcc.js.map +1 -1
  248. package/lib/webrtc/src/media/receiver/statistics.js.map +1 -1
  249. package/lib/webrtc/src/media/router.js +4 -2
  250. package/lib/webrtc/src/media/router.js.map +1 -1
  251. package/lib/webrtc/src/media/rtpReceiver.d.ts +1 -1
  252. package/lib/webrtc/src/media/rtpReceiver.js +1 -1
  253. package/lib/webrtc/src/media/rtpReceiver.js.map +1 -1
  254. package/lib/webrtc/src/media/rtpSender.js +1 -1
  255. package/lib/webrtc/src/media/rtpSender.js.map +1 -1
  256. package/lib/webrtc/src/media/rtpTransceiver.js.map +1 -1
  257. package/lib/webrtc/src/media/sender/cumulativeResult.js.map +1 -1
  258. package/lib/webrtc/src/media/sender/senderBWE.js.map +1 -1
  259. package/lib/webrtc/src/media/track.js.map +1 -1
  260. package/lib/webrtc/src/nonstandard/index.d.ts +2 -0
  261. package/lib/webrtc/src/nonstandard/index.js +19 -0
  262. package/lib/webrtc/src/nonstandard/index.js.map +1 -0
  263. package/lib/webrtc/src/nonstandard/recorder/index.js.map +1 -1
  264. package/lib/webrtc/src/nonstandard/recorder/writer/index.d.ts +1 -1
  265. package/lib/webrtc/src/nonstandard/recorder/writer/index.js.map +1 -1
  266. package/lib/webrtc/src/nonstandard/recorder/writer/webm.d.ts +2 -1
  267. package/lib/webrtc/src/nonstandard/recorder/writer/webm.js +11 -10
  268. package/lib/webrtc/src/nonstandard/recorder/writer/webm.js.map +1 -1
  269. package/lib/webrtc/src/nonstandard/userMedia.js.map +1 -1
  270. package/lib/webrtc/src/peerConnection.d.ts +2 -2
  271. package/lib/webrtc/src/peerConnection.js +11 -8
  272. package/lib/webrtc/src/peerConnection.js.map +1 -1
  273. package/lib/webrtc/src/sdp.js +47 -37
  274. package/lib/webrtc/src/sdp.js.map +1 -1
  275. package/lib/webrtc/src/transport/dtls.js.map +1 -1
  276. package/lib/webrtc/src/transport/ice.js.map +1 -1
  277. package/lib/webrtc/src/transport/sctp.js +9 -7
  278. package/lib/webrtc/src/transport/sctp.js.map +1 -1
  279. package/lib/webrtc/src/utils.js +1 -1
  280. package/lib/webrtc/src/utils.js.map +1 -1
  281. package/package.json +20 -19
  282. package/src/dataChannel.ts +1 -1
  283. package/src/index.ts +0 -2
  284. package/src/media/parameters.ts +2 -2
  285. package/src/media/receiver/nack.ts +4 -7
  286. package/src/media/router.ts +36 -40
  287. package/src/media/rtpReceiver.ts +12 -15
  288. package/src/media/rtpSender.ts +69 -82
  289. package/src/nonstandard/index.ts +2 -0
  290. package/src/nonstandard/recorder/writer/index.ts +1 -1
  291. package/src/nonstandard/recorder/writer/webm.ts +5 -6
  292. package/src/nonstandard/userMedia.ts +1 -3
  293. package/src/peerConnection.ts +28 -24
  294. package/src/sdp.ts +49 -55
  295. package/src/transport/dtls.ts +3 -6
  296. package/src/transport/ice.ts +1 -1
  297. package/src/transport/sctp.ts +60 -66
  298. package/src/utils.ts +1 -1
  299. package/lib/rtp/src/container/index.js.map +0 -1
  300. package/lib/rtp/src/container/mp4/container.js.map +0 -1
  301. package/lib/rtp/src/container/mp4/exp-golomb.js.map +0 -1
  302. package/lib/rtp/src/container/mp4/h264.js.map +0 -1
  303. package/lib/rtp/src/container/mp4/index.js.map +0 -1
  304. package/lib/rtp/src/container/mp4/mp4box.js.map +0 -1
  305. package/lib/rtp/src/container/mp4/sps-parser.js.map +0 -1
  306. package/lib/rtp/src/container/ogg/index.js.map +0 -1
  307. package/lib/rtp/src/container/ogg/parser.js.map +0 -1
  308. package/lib/rtp/src/container/webm/container.js.map +0 -1
  309. package/lib/rtp/src/container/webm/ebml/ebml.js.map +0 -1
  310. package/lib/rtp/src/container/webm/ebml/id.js.map +0 -1
  311. package/lib/rtp/src/container/webm/ebml/index.js.map +0 -1
  312. package/lib/rtp/src/container/webm/ebml/typedArrayUtils.js.map +0 -1
  313. package/lib/rtp/src/container/webm/index.js.map +0 -1
  314. package/lib/rtp/src/processor/depacketizer.js.map +0 -1
  315. package/lib/rtp/src/processor/depacketizerCallback.js.map +0 -1
  316. package/lib/rtp/src/processor/depacketizerTransformer.js.map +0 -1
  317. package/lib/rtp/src/processor/dtx.js.map +0 -1
  318. package/lib/rtp/src/processor/dtxCallback.js.map +0 -1
  319. package/lib/rtp/src/processor/index.js.map +0 -1
  320. package/lib/rtp/src/processor/interface.js.map +0 -1
  321. package/lib/rtp/src/processor/jitterBuffer.js.map +0 -1
  322. package/lib/rtp/src/processor/jitterBufferCallback.js.map +0 -1
  323. package/lib/rtp/src/processor/jitterBufferTransformer.js.map +0 -1
  324. package/lib/rtp/src/processor/lipsync.js.map +0 -1
  325. package/lib/rtp/src/processor/lipsyncCallback.js.map +0 -1
  326. package/lib/rtp/src/processor/mp4.js.map +0 -1
  327. package/lib/rtp/src/processor/mp4Callback.js.map +0 -1
  328. package/lib/rtp/src/processor/mute.js.map +0 -1
  329. package/lib/rtp/src/processor/muteCallback.js.map +0 -1
  330. package/lib/rtp/src/processor/nack.js.map +0 -1
  331. package/lib/rtp/src/processor/nackHandlerCallback.js.map +0 -1
  332. package/lib/rtp/src/processor/ntpTime.js.map +0 -1
  333. package/lib/rtp/src/processor/ntpTimeCallback.js.map +0 -1
  334. package/lib/rtp/src/processor/rtcpCallback.js.map +0 -1
  335. package/lib/rtp/src/processor/rtpCallback.js.map +0 -1
  336. package/lib/rtp/src/processor/rtpStream.js.map +0 -1
  337. package/lib/rtp/src/processor/rtpTime.js.map +0 -1
  338. package/lib/rtp/src/processor/rtpTimeCallback.js.map +0 -1
  339. package/lib/rtp/src/processor/webm.js.map +0 -1
  340. package/lib/rtp/src/processor/webmCallback.js.map +0 -1
  341. package/lib/rtp/src/processor/webmStream.js.map +0 -1
  342. /package/lib/rtp/src/{container → extra/container}/index.d.ts +0 -0
  343. /package/lib/rtp/src/{container → extra/container}/index.js +0 -0
  344. /package/lib/rtp/src/{container → extra/container}/mp4/container.d.ts +0 -0
  345. /package/lib/rtp/src/{container → extra/container}/mp4/container.js +0 -0
  346. /package/lib/rtp/src/{container → extra/container}/mp4/exp-golomb.d.ts +0 -0
  347. /package/lib/rtp/src/{container → extra/container}/mp4/exp-golomb.js +0 -0
  348. /package/lib/rtp/src/{container → extra/container}/mp4/h264.d.ts +0 -0
  349. /package/lib/rtp/src/{container → extra/container}/mp4/index.d.ts +0 -0
  350. /package/lib/rtp/src/{container → extra/container}/mp4/index.js +0 -0
  351. /package/lib/rtp/src/{container → extra/container}/mp4/mp4box.d.ts +0 -0
  352. /package/lib/rtp/src/{container → extra/container}/mp4/mp4box.js +0 -0
  353. /package/lib/rtp/src/{container → extra/container}/mp4/sps-parser.d.ts +0 -0
  354. /package/lib/rtp/src/{container → extra/container}/ogg/index.d.ts +0 -0
  355. /package/lib/rtp/src/{container → extra/container}/ogg/index.js +0 -0
  356. /package/lib/rtp/src/{container → extra/container}/ogg/parser.d.ts +0 -0
  357. /package/lib/rtp/src/{container → extra/container}/ogg/parser.js +0 -0
  358. /package/lib/rtp/src/{container → extra/container}/webm/container.d.ts +0 -0
  359. /package/lib/rtp/src/{container → extra/container}/webm/ebml/ebml.d.ts +0 -0
  360. /package/lib/rtp/src/{container → extra/container}/webm/ebml/id.d.ts +0 -0
  361. /package/lib/rtp/src/{container → extra/container}/webm/ebml/id.js +0 -0
  362. /package/lib/rtp/src/{container → extra/container}/webm/ebml/index.d.ts +0 -0
  363. /package/lib/rtp/src/{container → extra/container}/webm/ebml/index.js +0 -0
  364. /package/lib/rtp/src/{container → extra/container}/webm/ebml/typedArrayUtils.d.ts +0 -0
  365. /package/lib/rtp/src/{container → extra/container}/webm/ebml/typedArrayUtils.js +0 -0
  366. /package/lib/rtp/src/{container → extra/container}/webm/index.d.ts +0 -0
  367. /package/lib/rtp/src/{container → extra/container}/webm/index.js +0 -0
  368. /package/lib/rtp/src/{processor → extra/processor}/depacketizerCallback.d.ts +0 -0
  369. /package/lib/rtp/src/{processor → extra/processor}/depacketizerCallback.js +0 -0
  370. /package/lib/rtp/src/{processor → extra/processor}/depacketizerTransformer.js +0 -0
  371. /package/lib/rtp/src/{processor → extra/processor}/dtx.d.ts +0 -0
  372. /package/lib/rtp/src/{processor → extra/processor}/dtx.js +0 -0
  373. /package/lib/rtp/src/{processor → extra/processor}/dtxCallback.d.ts +0 -0
  374. /package/lib/rtp/src/{processor → extra/processor}/dtxCallback.js +0 -0
  375. /package/lib/rtp/src/{processor → extra/processor}/index.d.ts +0 -0
  376. /package/lib/rtp/src/{processor → extra/processor}/index.js +0 -0
  377. /package/lib/rtp/src/{processor → extra/processor}/interface.d.ts +0 -0
  378. /package/lib/rtp/src/{processor → extra/processor}/interface.js +0 -0
  379. /package/lib/rtp/src/{processor → extra/processor}/jitterBuffer.d.ts +0 -0
  380. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferCallback.d.ts +0 -0
  381. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferCallback.js +0 -0
  382. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferTransformer.d.ts +0 -0
  383. /package/lib/rtp/src/{processor → extra/processor}/jitterBufferTransformer.js +0 -0
  384. /package/lib/rtp/src/{processor → extra/processor}/lipsync.d.ts +0 -0
  385. /package/lib/rtp/src/{processor → extra/processor}/lipsyncCallback.js +0 -0
  386. /package/lib/rtp/src/{processor → extra/processor}/mp4Callback.d.ts +0 -0
  387. /package/lib/rtp/src/{processor → extra/processor}/mute.d.ts +0 -0
  388. /package/lib/rtp/src/{processor → extra/processor}/muteCallback.d.ts +0 -0
  389. /package/lib/rtp/src/{processor → extra/processor}/muteCallback.js +0 -0
  390. /package/lib/rtp/src/{processor → extra/processor}/nackHandlerCallback.d.ts +0 -0
  391. /package/lib/rtp/src/{processor → extra/processor}/nackHandlerCallback.js +0 -0
  392. /package/lib/rtp/src/{processor → extra/processor}/ntpTimeCallback.d.ts +0 -0
  393. /package/lib/rtp/src/{processor → extra/processor}/ntpTimeCallback.js +0 -0
  394. /package/lib/rtp/src/{processor → extra/processor}/rtcpCallback.js +0 -0
  395. /package/lib/rtp/src/{processor → extra/processor}/rtpTimeCallback.d.ts +0 -0
  396. /package/lib/rtp/src/{processor → extra/processor}/rtpTimeCallback.js +0 -0
  397. /package/lib/rtp/src/{processor → extra/processor}/webm.d.ts +0 -0
  398. /package/lib/rtp/src/{processor → extra/processor}/webmCallback.d.ts +0 -0
  399. /package/lib/rtp/src/{processor → extra/processor}/webmStream.d.ts +0 -0
  400. /package/lib/rtp/src/{processor → extra/processor}/webmStream.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../common/src/binary.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from \"crypto\";\nimport { jspack } from \"jspack\";\n\nexport function random16() {\n return jspack.Unpack(\"!H\", randomBytes(2))[0];\n}\n\nexport function random32() {\n return jspack.Unpack(\"!L\", randomBytes(4))[0];\n}\n\nexport function bufferXor(a: Buffer, b: Buffer): Buffer {\n if (a.length !== b.length) {\n throw new TypeError(\n \"[webrtc-stun] You can not XOR buffers which length are different\",\n );\n }\n\n const length = a.length;\n const buffer = Buffer.allocUnsafe(length);\n\n for (let i = 0; i < length; i++) {\n buffer[i] = a[i] ^ b[i];\n }\n\n return buffer;\n}\n\nexport function bufferArrayXor(arr: Buffer[]): Buffer {\n const length = [...arr]\n .sort((a, b) => a.length - b.length)\n .reverse()[0].length;\n const xored = Buffer.allocUnsafe(length);\n\n for (let i = 0; i < length; i++) {\n xored[i] = 0;\n arr.forEach((buffer) => {\n xored[i] ^= buffer[i] ?? 0;\n });\n }\n\n return xored;\n}\n\nexport class BitWriter {\n value = 0;\n\n constructor(private bitLength: number) {}\n\n set(size: number, startIndex: number, value: number) {\n value &= (1 << size) - 1;\n this.value |= value << (this.bitLength - size - startIndex);\n\n return this;\n }\n\n get buffer() {\n const length = Math.ceil(this.bitLength / 8);\n const buf = Buffer.alloc(length);\n buf.writeUIntBE(this.value, 0, length);\n return buf;\n }\n}\n\nexport class BitWriter2 {\n private _value = 0n;\n offset = 0n;\n\n /**\n * 各valueがオクテットを跨いではならない\n */\n constructor(\n /**Max 32bit */\n private bitLength: number,\n ) {\n if (bitLength > 32) {\n throw new Error();\n }\n }\n\n set(value: number, size: number = 1) {\n let value_b = BigInt(value);\n const size_b = BigInt(size);\n\n value_b &= (1n << size_b) - 1n;\n this._value |= value_b << (BigInt(this.bitLength) - size_b - this.offset);\n this.offset += size_b;\n return this;\n }\n\n get value() {\n return Number(this._value);\n }\n\n get buffer() {\n const length = Math.ceil(this.bitLength / 8);\n const buf = Buffer.alloc(length);\n buf.writeUIntBE(this.value, 0, length);\n return buf;\n }\n}\n\nexport function getBit(bits: number, startIndex: number, length: number = 1) {\n let bin = bits.toString(2).split(\"\");\n bin = [...Array(8 - bin.length).fill(\"0\"), ...bin];\n const s = bin.slice(startIndex, startIndex + length).join(\"\");\n const v = parseInt(s, 2);\n return v;\n}\n\nexport function paddingByte(bits: number) {\n const dec = bits.toString(2).split(\"\");\n return [...[...Array(8 - dec.length)].map(() => \"0\"), ...dec].join(\"\");\n}\n\nexport function paddingBits(bits: number, expectLength: number) {\n const dec = bits.toString(2);\n return [...[...Array(expectLength - dec.length)].map(() => \"0\"), ...dec].join(\n \"\",\n );\n}\n\nexport function bufferWriter(bytes: number[], values: (number | bigint)[]) {\n return createBufferWriter(bytes)(values);\n}\n\nexport function createBufferWriter(bytes: number[], singleBuffer?: boolean) {\n const length = bytes.reduce((acc, cur) => acc + cur, 0);\n const reuseBuffer = singleBuffer ? Buffer.alloc(length) : undefined;\n\n return (values: (number | bigint)[]) => {\n const buf = reuseBuffer || Buffer.alloc(length);\n let offset = 0;\n\n values.forEach((v, i) => {\n const size = bytes[i];\n if (size === 8) buf.writeBigUInt64BE(v as bigint, offset);\n else buf.writeUIntBE(v as number, offset, size);\n offset += size;\n });\n return buf;\n };\n}\n\nexport function bufferWriterLE(bytes: number[], values: (number | bigint)[]) {\n const length = bytes.reduce((acc, cur) => acc + cur, 0);\n const buf = Buffer.alloc(length);\n let offset = 0;\n\n values.forEach((v, i) => {\n const size = bytes[i];\n if (size === 8) buf.writeBigUInt64LE(v as bigint, offset);\n else buf.writeUIntLE(v as number, offset, size);\n\n offset += size;\n });\n return buf;\n}\n\nexport function bufferReader(buf: Buffer, bytes: number[]) {\n let offset = 0;\n return bytes.map((v) => {\n let read: number | bigint;\n if (v === 8) {\n read = buf.readBigUInt64BE(offset);\n } else {\n read = buf.readUIntBE(offset, v);\n }\n\n offset += v;\n\n return read as any;\n });\n}\n\nexport class BufferChain {\n buffer: Buffer;\n\n constructor(size: number) {\n this.buffer = Buffer.alloc(size);\n }\n\n writeInt16BE(value: number, offset?: number | undefined) {\n this.buffer.writeInt16BE(value, offset);\n return this;\n }\n\n writeUInt8(value: number, offset?: number | undefined) {\n this.buffer.writeUInt8(value, offset);\n return this;\n }\n}\n\nexport const dumpBuffer = (data: Buffer) =>\n \"0x\" +\n data\n .toString(\"hex\")\n .replace(/(.)(.)/g, \"$1$2 \")\n .split(\" \")\n .filter((s) => s != undefined && s.length > 0)\n .join(\",0x\");\n\nexport function buffer2ArrayBuffer(buf: Buffer) {\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\nexport class BitStream {\n private position = 0;\n private bitsPending = 0;\n\n constructor(public uint8Array: Buffer) {}\n\n writeBits(bits: number, value: number): BitStream {\n if (bits == 0) {\n return this;\n }\n value &= 0xffffffff >>> (32 - bits);\n let bitsConsumed;\n if (this.bitsPending > 0) {\n if (this.bitsPending > bits) {\n this.uint8Array[this.position - 1] |=\n value << (this.bitsPending - bits);\n bitsConsumed = bits;\n this.bitsPending -= bits;\n } else if (this.bitsPending == bits) {\n this.uint8Array[this.position - 1] |= value;\n bitsConsumed = bits;\n this.bitsPending = 0;\n } else {\n this.uint8Array[this.position - 1] |=\n value >> (bits - this.bitsPending);\n // ???\n bitsConsumed = this.bitsPending;\n this.bitsPending = 0;\n }\n } else {\n bitsConsumed = Math.min(8, bits);\n this.bitsPending = 8 - bitsConsumed;\n this.uint8Array[this.position++] =\n (value >> (bits - bitsConsumed)) << this.bitsPending;\n }\n bits -= bitsConsumed;\n if (bits > 0) {\n this.writeBits(bits, value);\n }\n\n return this;\n }\n\n readBits(bits: number, bitBuffer?: number): any {\n if (typeof bitBuffer == \"undefined\") {\n bitBuffer = 0;\n }\n if (bits == 0) {\n return bitBuffer;\n }\n let partial: number;\n let bitsConsumed: number;\n if (this.bitsPending > 0) {\n const byte =\n this.uint8Array[this.position - 1] & (0xff >> (8 - this.bitsPending));\n bitsConsumed = Math.min(this.bitsPending, bits);\n this.bitsPending -= bitsConsumed;\n partial = byte >> this.bitsPending;\n } else {\n bitsConsumed = Math.min(8, bits);\n this.bitsPending = 8 - bitsConsumed;\n partial = this.uint8Array[this.position++] >> this.bitsPending;\n }\n bits -= bitsConsumed;\n bitBuffer = (bitBuffer << bitsConsumed) | partial;\n return bits > 0 ? this.readBits(bits, bitBuffer) : bitBuffer;\n }\n\n seekTo(bitPos: number) {\n this.position = (bitPos / 8) | 0;\n this.bitsPending = bitPos % 8;\n if (this.bitsPending > 0) {\n this.bitsPending = 8 - this.bitsPending;\n this.position++;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../../../common/src/binary.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomBytes } from \"crypto\";\nimport { jspack } from \"jspack\";\n\nexport function random16() {\n return jspack.Unpack(\"!H\", randomBytes(2))[0];\n}\n\nexport function random32() {\n return jspack.Unpack(\"!L\", randomBytes(4))[0];\n}\n\nexport function bufferXor(a: Buffer, b: Buffer): Buffer {\n if (a.length !== b.length) {\n throw new TypeError(\n \"[webrtc-stun] You can not XOR buffers which length are different\",\n );\n }\n\n const length = a.length;\n const buffer = Buffer.allocUnsafe(length);\n\n for (let i = 0; i < length; i++) {\n buffer[i] = a[i] ^ b[i];\n }\n\n return buffer;\n}\n\nexport function bufferArrayXor(arr: Buffer[]): Buffer {\n const length = [...arr]\n .sort((a, b) => a.length - b.length)\n .reverse()[0].length;\n const xored = Buffer.allocUnsafe(length);\n\n for (let i = 0; i < length; i++) {\n xored[i] = 0;\n arr.forEach((buffer) => {\n xored[i] ^= buffer[i] ?? 0;\n });\n }\n\n return xored;\n}\n\nexport class BitWriter {\n value = 0;\n\n constructor(private bitLength: number) {}\n\n set(size: number, startIndex: number, value: number) {\n value &= (1 << size) - 1;\n this.value |= value << (this.bitLength - size - startIndex);\n\n return this;\n }\n\n get buffer() {\n const length = Math.ceil(this.bitLength / 8);\n const buf = Buffer.alloc(length);\n buf.writeUIntBE(this.value, 0, length);\n return buf;\n }\n}\n\nexport class BitWriter2 {\n private _value = 0n;\n offset = 0n;\n\n /**\n * 各valueがオクテットを跨いではならない\n */\n constructor(\n /**Max 32bit */\n private bitLength: number,\n ) {\n if (bitLength > 32) {\n throw new Error();\n }\n }\n\n set(value: number, size: number = 1) {\n let value_b = BigInt(value);\n const size_b = BigInt(size);\n\n value_b &= (1n << size_b) - 1n;\n this._value |= value_b << (BigInt(this.bitLength) - size_b - this.offset);\n this.offset += size_b;\n return this;\n }\n\n get value() {\n return Number(this._value);\n }\n\n get buffer() {\n const length = Math.ceil(this.bitLength / 8);\n const buf = Buffer.alloc(length);\n buf.writeUIntBE(this.value, 0, length);\n return buf;\n }\n}\n\nexport function getBit(bits: number, startIndex: number, length: number = 1) {\n let bin = bits.toString(2).split(\"\");\n bin = [...Array(8 - bin.length).fill(\"0\"), ...bin];\n const s = bin.slice(startIndex, startIndex + length).join(\"\");\n const v = parseInt(s, 2);\n return v;\n}\n\nexport function paddingByte(bits: number) {\n const dec = bits.toString(2).split(\"\");\n return [...[...Array(8 - dec.length)].map(() => \"0\"), ...dec].join(\"\");\n}\n\nexport function paddingBits(bits: number, expectLength: number) {\n const dec = bits.toString(2);\n return [...[...Array(expectLength - dec.length)].map(() => \"0\"), ...dec].join(\n \"\",\n );\n}\n\nexport function bufferWriter(bytes: number[], values: (number | bigint)[]) {\n return createBufferWriter(bytes)(values);\n}\n\nexport function createBufferWriter(bytes: number[], singleBuffer?: boolean) {\n const length = bytes.reduce((acc, cur) => acc + cur, 0);\n const reuseBuffer = singleBuffer ? Buffer.alloc(length) : undefined;\n\n return (values: (number | bigint)[]) => {\n const buf = reuseBuffer || Buffer.alloc(length);\n let offset = 0;\n\n values.forEach((v, i) => {\n const size = bytes[i];\n if (size === 8) buf.writeBigUInt64BE(v as bigint, offset);\n else buf.writeUIntBE(v as number, offset, size);\n offset += size;\n });\n return buf;\n };\n}\n\nexport function bufferWriterLE(bytes: number[], values: (number | bigint)[]) {\n const length = bytes.reduce((acc, cur) => acc + cur, 0);\n const buf = Buffer.alloc(length);\n let offset = 0;\n\n values.forEach((v, i) => {\n const size = bytes[i];\n if (size === 8) buf.writeBigUInt64LE(v as bigint, offset);\n else buf.writeUIntLE(v as number, offset, size);\n\n offset += size;\n });\n return buf;\n}\n\nexport function bufferReader(buf: Buffer, bytes: number[]) {\n let offset = 0;\n return bytes.map((v) => {\n let read: number | bigint;\n if (v === 8) {\n read = buf.readBigUInt64BE(offset);\n } else {\n read = buf.readUIntBE(offset, v);\n }\n\n offset += v;\n\n return read as any;\n });\n}\n\nexport class BufferChain {\n buffer: Buffer;\n\n constructor(size: number) {\n this.buffer = Buffer.alloc(size);\n }\n\n writeInt16BE(value: number, offset?: number | undefined) {\n this.buffer.writeInt16BE(value, offset);\n return this;\n }\n\n writeUInt8(value: number, offset?: number | undefined) {\n this.buffer.writeUInt8(value, offset);\n return this;\n }\n}\n\nexport const dumpBuffer = (data: Buffer) =>\n \"0x\" +\n data\n .toString(\"hex\")\n .replace(/(.)(.)/g, \"$1$2 \")\n .split(\" \")\n .filter((s) => s != undefined && s.length > 0)\n .join(\",0x\");\n\nexport function buffer2ArrayBuffer(buf: Buffer) {\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n}\n\nexport class BitStream {\n private position = 0;\n private bitsPending = 0;\n\n constructor(public uint8Array: Buffer) {}\n\n writeBits(bits: number, value: number): BitStream {\n if (bits == 0) {\n return this;\n }\n value &= 0xffffffff >>> (32 - bits);\n let bitsConsumed;\n if (this.bitsPending > 0) {\n if (this.bitsPending > bits) {\n this.uint8Array[this.position - 1] |=\n value << (this.bitsPending - bits);\n bitsConsumed = bits;\n this.bitsPending -= bits;\n } else if (this.bitsPending == bits) {\n this.uint8Array[this.position - 1] |= value;\n bitsConsumed = bits;\n this.bitsPending = 0;\n } else {\n this.uint8Array[this.position - 1] |=\n value >> (bits - this.bitsPending);\n // ???\n bitsConsumed = this.bitsPending;\n this.bitsPending = 0;\n }\n } else {\n bitsConsumed = Math.min(8, bits);\n this.bitsPending = 8 - bitsConsumed;\n this.uint8Array[this.position++] =\n (value >> (bits - bitsConsumed)) << this.bitsPending;\n }\n bits -= bitsConsumed;\n if (bits > 0) {\n this.writeBits(bits, value);\n }\n\n return this;\n }\n\n readBits(bits: number, bitBuffer?: number): any {\n if (typeof bitBuffer == \"undefined\") {\n bitBuffer = 0;\n }\n if (bits == 0) {\n return bitBuffer;\n }\n let partial: number;\n let bitsConsumed: number;\n if (this.bitsPending > 0) {\n const byte =\n this.uint8Array[this.position - 1] & (0xff >> (8 - this.bitsPending));\n bitsConsumed = Math.min(this.bitsPending, bits);\n this.bitsPending -= bitsConsumed;\n partial = byte >> this.bitsPending;\n } else {\n bitsConsumed = Math.min(8, bits);\n this.bitsPending = 8 - bitsConsumed;\n partial = this.uint8Array[this.position++] >> this.bitsPending;\n }\n bits -= bitsConsumed;\n bitBuffer = (bitBuffer << bitsConsumed) | partial;\n return bits > 0 ? this.readBits(bits, bitBuffer) : bitBuffer;\n }\n\n seekTo(bitPos: number) {\n this.position = (bitPos / 8) | 0;\n this.bitsPending = bitPos % 8;\n if (this.bitsPending > 0) {\n this.bitsPending = 8 - this.bitsPending;\n this.position++;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../common/src/network.ts"],"names":[],"mappings":"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","sourcesContent":["import { createSocket, SocketType } from \"dgram\";\n\nexport type InterfaceAddresses = {\n [K in SocketType]?: string;\n};\n\nexport const interfaceAddress = (\n type: SocketType,\n interfaceAddresses: InterfaceAddresses | undefined,\n) => (interfaceAddresses ? interfaceAddresses[type] : undefined);\n\nexport async function randomPort(\n protocol: SocketType = \"udp4\",\n interfaceAddresses?: InterfaceAddresses,\n) {\n const socket = createSocket(protocol);\n\n setImmediate(() =>\n socket.bind({\n port: 0,\n address: interfaceAddress(protocol, interfaceAddresses),\n }),\n );\n\n await new Promise<void>((r) => {\n socket.once(\"error\", r);\n socket.once(\"listening\", r);\n });\n\n const port = socket.address()?.port;\n await new Promise<void>((r) => socket.close(() => r()));\n return port;\n}\n\nexport async function randomPorts(\n num: number,\n protocol: SocketType = \"udp4\",\n interfaceAddresses?: InterfaceAddresses,\n) {\n return Promise.all(\n [...Array(num)].map(() => randomPort(protocol, interfaceAddresses)),\n );\n}\n\nexport async function findPort(\n min: number,\n max: number,\n protocol: SocketType = \"udp4\",\n interfaceAddresses?: InterfaceAddresses,\n) {\n let port: number | undefined;\n\n for (let i = min; i <= max; i++) {\n const socket = createSocket(protocol);\n\n setImmediate(() =>\n socket.bind({\n port: i,\n address: interfaceAddress(protocol, interfaceAddresses),\n }),\n );\n\n const err = await new Promise<Error | void>((r) => {\n socket.once(\"error\", (e) => r(e));\n socket.once(\"listening\", () => r());\n });\n if (err) {\n await new Promise<void>((r) => socket.close(() => r()));\n continue;\n }\n\n port = socket.address()?.port;\n await new Promise<void>((r) => socket.close(() => r()));\n if (min <= port && port <= max) {\n break;\n }\n }\n\n if (!port) throw new Error(\"port not found\");\n\n return port;\n}\n"]}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../../../common/src/network.ts"],"names":[],"mappings":";;;AAAA,iCAAiD;AAM1C,MAAM,gBAAgB,GAAG,CAC9B,IAAgB,EAChB,kBAAkD,EAClD,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAHpD,QAAA,gBAAgB,oBAGoC;AAE1D,KAAK,UAAU,UAAU,CAC9B,WAAuB,MAAM,EAC7B,kBAAuC;IAEvC,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;IAEtC,YAAY,CAAC,GAAG,EAAE,CAChB,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,CAAC;QACP,OAAO,EAAE,IAAA,wBAAgB,EAAC,QAAQ,EAAE,kBAAkB,CAAC;KACxD,CAAC,CACH,CAAC;IAEF,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC;IACpC,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AArBD,gCAqBC;AAEM,KAAK,UAAU,WAAW,CAC/B,GAAW,EACX,WAAuB,MAAM,EAC7B,kBAAuC;IAEvC,OAAO,OAAO,CAAC,GAAG,CAChB,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AARD,kCAQC;AAEM,KAAK,UAAU,QAAQ,CAC5B,GAAW,EACX,GAAW,EACX,WAAuB,MAAM,EAC7B,kBAAuC;IAEvC,IAAI,IAAwB,CAAC;IAE7B,KAAK,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;QAEtC,YAAY,CAAC,GAAG,EAAE,CAChB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,CAAC;YACP,OAAO,EAAE,IAAA,wBAAgB,EAAC,QAAQ,EAAE,kBAAkB,CAAC;SACxD,CAAC,CACH,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAe,CAAC,CAAC,EAAE,EAAE;YAChD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,SAAS;QACX,CAAC;QAED,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC;QAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YAC/B,MAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAE7C,OAAO,IAAI,CAAC;AACd,CAAC;AArCD,4BAqCC","sourcesContent":["import { SocketType, createSocket } from \"dgram\";\n\nexport type InterfaceAddresses = {\n [K in SocketType]?: string;\n};\n\nexport const interfaceAddress = (\n type: SocketType,\n interfaceAddresses: InterfaceAddresses | undefined,\n) => (interfaceAddresses ? interfaceAddresses[type] : undefined);\n\nexport async function randomPort(\n protocol: SocketType = \"udp4\",\n interfaceAddresses?: InterfaceAddresses,\n) {\n const socket = createSocket(protocol);\n\n setImmediate(() =>\n socket.bind({\n port: 0,\n address: interfaceAddress(protocol, interfaceAddresses),\n }),\n );\n\n await new Promise<void>((r) => {\n socket.once(\"error\", r);\n socket.once(\"listening\", r);\n });\n\n const port = socket.address()?.port;\n await new Promise<void>((r) => socket.close(() => r()));\n return port;\n}\n\nexport async function randomPorts(\n num: number,\n protocol: SocketType = \"udp4\",\n interfaceAddresses?: InterfaceAddresses,\n) {\n return Promise.all(\n [...Array(num)].map(() => randomPort(protocol, interfaceAddresses)),\n );\n}\n\nexport async function findPort(\n min: number,\n max: number,\n protocol: SocketType = \"udp4\",\n interfaceAddresses?: InterfaceAddresses,\n) {\n let port: number | undefined;\n\n for (let i = min; i <= max; i++) {\n const socket = createSocket(protocol);\n\n setImmediate(() =>\n socket.bind({\n port: i,\n address: interfaceAddress(protocol, interfaceAddresses),\n }),\n );\n\n const err = await new Promise<Error | void>((r) => {\n socket.once(\"error\", (e) => r(e));\n socket.once(\"listening\", () => r());\n });\n if (err) {\n await new Promise<void>((r) => socket.close(() => r()));\n continue;\n }\n\n port = socket.address()?.port;\n await new Promise<void>((r) => socket.close(() => r()));\n if (min <= port && port <= max) {\n break;\n }\n }\n\n if (!port) throw new Error(\"port not found\");\n\n return port;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../../common/src/promise.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IAAzB;QACE;;;;mBAIM,EAAE;WAAC;QACT;;;;mBAAU,KAAK;WAAC;QAEhB;;;;mBAAO,CAAI,OAAyB,EAAE,EAAE,CACtC,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oBACjB,IAAI,CAAC,GAAG,EAAE,CAAC;iBACZ;YACH,CAAC,CAAC;WAAC;IAuBP,CAAC;IArBS,KAAK,CAAC,GAAG;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAChB;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACpB;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;SACZ;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;SACtB;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AArCD,oCAqCC","sourcesContent":["export class PromiseQueue {\n queue: {\n promise: () => Promise<unknown>;\n done: (...args: any[]) => void;\n failed: (...args: any[]) => void;\n }[] = [];\n running = false;\n\n push = <T>(promise: () => Promise<T>) =>\n new Promise<T>((r, f) => {\n this.queue.push({ promise, done: r, failed: f });\n if (!this.running) {\n this.run();\n }\n });\n\n private async run() {\n const task = this.queue.shift();\n if (task) {\n this.running = true;\n\n try {\n const res = await task.promise();\n task.done(res);\n } catch (error) {\n task.failed(error);\n }\n\n this.run();\n } else {\n this.running = false;\n }\n }\n\n cancel() {\n this.queue = [];\n }\n}\n"]}
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../../../../common/src/promise.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IAAzB;QACE;;;;mBAIM,EAAE;WAAC;QACT;;;;mBAAU,KAAK;WAAC;QAEhB;;;;mBAAO,CAAI,OAAyB,EAAE,EAAE,CACtC,IAAI,OAAO,CAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,CAAC;YACH,CAAC,CAAC;WAAC;IAuBP,CAAC;IArBS,KAAK,CAAC,GAAG;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF;AArCD,oCAqCC","sourcesContent":["export class PromiseQueue {\n queue: {\n promise: () => Promise<unknown>;\n done: (...args: any[]) => void;\n failed: (...args: any[]) => void;\n }[] = [];\n running = false;\n\n push = <T>(promise: () => Promise<T>) =>\n new Promise<T>((r, f) => {\n this.queue.push({ promise, done: r, failed: f });\n if (!this.running) {\n this.run();\n }\n });\n\n private async run() {\n const task = this.queue.shift();\n if (task) {\n this.running = true;\n\n try {\n const res = await task.promise();\n task.done(res);\n } catch (error) {\n task.failed(error);\n }\n\n this.run();\n } else {\n this.running = false;\n }\n }\n\n cancel() {\n this.queue = [];\n }\n}\n"]}
@@ -32,3 +32,11 @@ export declare const SignatureScheme: {
32
32
  readonly ecdsa_secp256r1_sha256: 1027;
33
33
  };
34
34
  export type SignatureSchemes = (typeof SignatureScheme)[keyof typeof SignatureScheme];
35
+ export declare const certificateTypes: number[];
36
+ export declare const signatures: ({
37
+ hash: 4;
38
+ signature: 1;
39
+ } | {
40
+ hash: 4;
41
+ signature: 3;
42
+ })[];
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SignatureScheme = exports.CurveType = exports.NamedCurveAlgorithmList = exports.NamedCurveAlgorithm = exports.CipherSuiteList = exports.CipherSuite = exports.HashAlgorithm = exports.SignatureAlgorithm = void 0;
3
+ exports.signatures = exports.certificateTypes = exports.SignatureScheme = exports.CurveType = exports.NamedCurveAlgorithmList = exports.NamedCurveAlgorithm = exports.CipherSuiteList = exports.CipherSuite = exports.HashAlgorithm = exports.SignatureAlgorithm = void 0;
4
4
  exports.SignatureAlgorithm = {
5
5
  rsa_1: 1,
6
6
  ecdsa_3: 3,
@@ -9,7 +9,7 @@ exports.HashAlgorithm = {
9
9
  sha256_4: 4,
10
10
  };
11
11
  exports.CipherSuite = {
12
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_49195: 0xc02b,
12
+ TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_49195: 0xc02b, //49195,
13
13
  TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256_49199: 0xc02f, //49199
14
14
  };
15
15
  exports.CipherSuiteList = Object.values(exports.CipherSuite);
@@ -23,4 +23,12 @@ exports.SignatureScheme = {
23
23
  rsa_pkcs1_sha256: 0x0401,
24
24
  ecdsa_secp256r1_sha256: 0x0403,
25
25
  };
26
+ exports.certificateTypes = [
27
+ 1, // clientCertificateTypeRSASign
28
+ 64, // clientCertificateTypeECDSASign
29
+ ];
30
+ exports.signatures = [
31
+ { hash: exports.HashAlgorithm.sha256_4, signature: exports.SignatureAlgorithm.rsa_1 },
32
+ { hash: exports.HashAlgorithm.sha256_4, signature: exports.SignatureAlgorithm.ecdsa_3 },
33
+ ];
26
34
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAChC,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;CACF,CAAC;AAIE,QAAA,aAAa,GAAG;IAC3B,QAAQ,EAAE,CAAC;CACH,CAAC;AAQE,QAAA,WAAW,GAAG;IACzB,6CAA6C,EAAE,MAAM;IACrD,2CAA2C,EAAE,MAAM,EAAE,OAAO;CACpD,CAAC;AAEE,QAAA,eAAe,GAAmB,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC,CAAC;AAE7D,QAAA,mBAAmB,GAAG;IACjC,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,EAAE;CACR,CAAC;AAGE,QAAA,uBAAuB,GAClC,MAAM,CAAC,MAAM,CAAC,2BAAmB,CAAC,CAAC;AAExB,QAAA,SAAS,GAAG,EAAE,aAAa,EAAE,CAAC,EAAW,CAAC;AAG1C,QAAA,eAAe,GAAG;IAC7B,gBAAgB,EAAE,MAAM;IACxB,sBAAsB,EAAE,MAAM;CACtB,CAAC","sourcesContent":["export const SignatureAlgorithm = {\n rsa_1: 1,\n ecdsa_3: 3,\n} as const;\nexport type SignatureAlgorithms =\n (typeof SignatureAlgorithm)[keyof typeof SignatureAlgorithm];\n\nexport const HashAlgorithm = {\n sha256_4: 4,\n} as const;\nexport type HashAlgorithms = (typeof HashAlgorithm)[keyof typeof HashAlgorithm];\n\nexport type SignatureHash = {\n hash: HashAlgorithms;\n signature: SignatureAlgorithms;\n};\n\nexport const CipherSuite = {\n TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_49195: 0xc02b, //49195,\n TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256_49199: 0xc02f, //49199\n} as const;\nexport type CipherSuites = (typeof CipherSuite)[keyof typeof CipherSuite];\nexport const CipherSuiteList: CipherSuites[] = Object.values(CipherSuite);\n\nexport const NamedCurveAlgorithm = {\n x25519_29: 29,\n secp256r1_23: 23,\n} as const;\nexport type NamedCurveAlgorithms =\n (typeof NamedCurveAlgorithm)[keyof typeof NamedCurveAlgorithm];\nexport const NamedCurveAlgorithmList: NamedCurveAlgorithms[] =\n Object.values(NamedCurveAlgorithm);\n\nexport const CurveType = { named_curve_3: 3 } as const;\nexport type CurveTypes = (typeof CurveType)[keyof typeof CurveType];\n\nexport const SignatureScheme = {\n rsa_pkcs1_sha256: 0x0401,\n ecdsa_secp256r1_sha256: 0x0403,\n} as const;\nexport type SignatureSchemes =\n (typeof SignatureScheme)[keyof typeof SignatureScheme];\n"]}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAChC,KAAK,EAAE,CAAC;IACR,OAAO,EAAE,CAAC;CACF,CAAC;AAIE,QAAA,aAAa,GAAG;IAC3B,QAAQ,EAAE,CAAC;CACH,CAAC;AAQE,QAAA,WAAW,GAAG;IACzB,6CAA6C,EAAE,MAAM,EAAE,QAAQ;IAC/D,2CAA2C,EAAE,MAAM,EAAE,OAAO;CACpD,CAAC;AAEE,QAAA,eAAe,GAAmB,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC,CAAC;AAE7D,QAAA,mBAAmB,GAAG;IACjC,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,EAAE;CACR,CAAC;AAGE,QAAA,uBAAuB,GAClC,MAAM,CAAC,MAAM,CAAC,2BAAmB,CAAC,CAAC;AAExB,QAAA,SAAS,GAAG,EAAE,aAAa,EAAE,CAAC,EAAW,CAAC;AAG1C,QAAA,eAAe,GAAG;IAC7B,gBAAgB,EAAE,MAAM;IACxB,sBAAsB,EAAE,MAAM;CACtB,CAAC;AAIE,QAAA,gBAAgB,GAAG;IAC9B,CAAC,EAAE,+BAA+B;IAClC,EAAE,EAAE,iCAAiC;CACtC,CAAC;AAEW,QAAA,UAAU,GAAG;IACxB,EAAE,IAAI,EAAE,qBAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,0BAAkB,CAAC,KAAK,EAAE;IACrE,EAAE,IAAI,EAAE,qBAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,0BAAkB,CAAC,OAAO,EAAE;CACxE,CAAC","sourcesContent":["export const SignatureAlgorithm = {\n rsa_1: 1,\n ecdsa_3: 3,\n} as const;\nexport type SignatureAlgorithms =\n (typeof SignatureAlgorithm)[keyof typeof SignatureAlgorithm];\n\nexport const HashAlgorithm = {\n sha256_4: 4,\n} as const;\nexport type HashAlgorithms = (typeof HashAlgorithm)[keyof typeof HashAlgorithm];\n\nexport type SignatureHash = {\n hash: HashAlgorithms;\n signature: SignatureAlgorithms;\n};\n\nexport const CipherSuite = {\n TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_49195: 0xc02b, //49195,\n TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256_49199: 0xc02f, //49199\n} as const;\nexport type CipherSuites = (typeof CipherSuite)[keyof typeof CipherSuite];\nexport const CipherSuiteList: CipherSuites[] = Object.values(CipherSuite);\n\nexport const NamedCurveAlgorithm = {\n x25519_29: 29,\n secp256r1_23: 23,\n} as const;\nexport type NamedCurveAlgorithms =\n (typeof NamedCurveAlgorithm)[keyof typeof NamedCurveAlgorithm];\nexport const NamedCurveAlgorithmList: NamedCurveAlgorithms[] =\n Object.values(NamedCurveAlgorithm);\n\nexport const CurveType = { named_curve_3: 3 } as const;\nexport type CurveTypes = (typeof CurveType)[keyof typeof CurveType];\n\nexport const SignatureScheme = {\n rsa_pkcs1_sha256: 0x0401,\n ecdsa_secp256r1_sha256: 0x0403,\n} as const;\nexport type SignatureSchemes =\n (typeof SignatureScheme)[keyof typeof SignatureScheme];\n\nexport const certificateTypes = [\n 1, // clientCertificateTypeRSASign\n 64, // clientCertificateTypeECDSASign\n];\n\nexport const signatures = [\n { hash: HashAlgorithm.sha256_4, signature: SignatureAlgorithm.rsa_1 },\n { hash: HashAlgorithm.sha256_4, signature: SignatureAlgorithm.ecdsa_3 },\n];\n"]}
@@ -23,22 +23,22 @@ const cipherSuites = {
23
23
  TLS_PSK_WITH_CHACHA20_POLY1305_SHA256: 0xccab,
24
24
  };
25
25
  const AEAD_AES_128_GCM = {
26
- K_LEN: 16,
27
- N_MIN: 12,
28
- N_MAX: 12,
29
- P_MAX: 2 ** 36 - 31,
26
+ K_LEN: 16, // Length of a key.
27
+ N_MIN: 12, // Min nonce length.
28
+ N_MAX: 12, // Max nonce length.
29
+ P_MAX: 2 ** 36 - 31, // Max length of a plaintext.
30
30
  // Max safe int in js is 2 ** 53. So, use this value
31
31
  // instead of 2 ** 61 as described in rfc5116.
32
- A_MAX: 2 ** 53 - 1,
32
+ A_MAX: 2 ** 53 - 1, // Max length of an additional data.
33
33
  C_MAX: 2 ** 36 - 15, // Cipher text length.
34
34
  };
35
35
  const AEAD_AES_256_GCM = {
36
- K_LEN: 32,
37
- N_MIN: 12,
38
- N_MAX: 12,
39
- P_MAX: 2 ** 36 - 31,
36
+ K_LEN: 32, // Length of a key.
37
+ N_MIN: 12, // Min nonce length.
38
+ N_MAX: 12, // Max nonce length.
39
+ P_MAX: 2 ** 36 - 31, // Max length of a plaintext.
40
40
  // Note: see above.
41
- A_MAX: 2 ** 53 - 1,
41
+ A_MAX: 2 ** 53 - 1, // Max length of an additional data.
42
42
  C_MAX: 2 ** 36 - 15, // Cipher text length.
43
43
  };
44
44
  const RSA_KEY_EXCHANGE = (0, key_exchange_1.createRSAKeyExchange)();
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/create.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n createECDHEECDSAKeyExchange,\n createECDHEPSKKeyExchange,\n createECDHERSAKeyExchange,\n createPSKKeyExchange,\n createRSAKeyExchange,\n KeyExchange,\n} from \"./key-exchange\";\nimport AEADCipher from \"./suites/aead\";\n\nconst cipherSuites = {\n TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: 0xc02b,\n TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: 0xc02c,\n TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: 0xc02f,\n TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: 0xc030,\n TLS_RSA_WITH_AES_128_GCM_SHA256: 0x009c,\n TLS_RSA_WITH_AES_256_GCM_SHA384: 0x009d,\n TLS_PSK_WITH_AES_128_GCM_SHA256: 0x00a8,\n TLS_PSK_WITH_AES_256_GCM_SHA384: 0x00a9,\n TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256: 0xd001,\n TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384: 0xd002,\n TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256: 0xccac,\n TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: 0xcca9,\n TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: 0xcca8,\n TLS_PSK_WITH_CHACHA20_POLY1305_SHA256: 0xccab,\n};\n\nconst AEAD_AES_128_GCM = {\n K_LEN: 16, // Length of a key.\n N_MIN: 12, // Min nonce length.\n N_MAX: 12, // Max nonce length.\n P_MAX: 2 ** 36 - 31, // Max length of a plaintext.\n\n // Max safe int in js is 2 ** 53. So, use this value\n // instead of 2 ** 61 as described in rfc5116.\n A_MAX: 2 ** 53 - 1, // Max length of an additional data.\n C_MAX: 2 ** 36 - 15, // Cipher text length.\n};\n\nconst AEAD_AES_256_GCM = {\n K_LEN: 32, // Length of a key.\n N_MIN: 12, // Min nonce length.\n N_MAX: 12, // Max nonce length.\n P_MAX: 2 ** 36 - 31, // Max length of a plaintext.\n\n // Note: see above.\n A_MAX: 2 ** 53 - 1, // Max length of an additional data.\n C_MAX: 2 ** 36 - 15, // Cipher text length.\n};\n\nconst RSA_KEY_EXCHANGE = createRSAKeyExchange();\nconst ECDHE_RSA_KEY_EXCHANGE = createECDHERSAKeyExchange();\nconst ECDHE_ECDSA_KEY_EXCHANGE = createECDHEECDSAKeyExchange();\nconst PSK_KEY_EXCHANGE = createPSKKeyExchange();\nconst ECDHE_PSK_KEY_EXCHANGE = createECDHEPSKKeyExchange();\n\n/**\n * Convert cipher value to cipher instance.\n * @param {number} cipher\n */\nexport function createCipher(cipher: number) {\n switch (cipher) {\n case cipherSuites.TLS_RSA_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_RSA_WITH_AES_128_GCM_SHA256,\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n RSA_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n );\n case cipherSuites.TLS_RSA_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_RSA_WITH_AES_256_GCM_SHA384,\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n RSA_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n ECDHE_RSA_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n );\n case cipherSuites.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n ECDHE_RSA_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n ECDHE_ECDSA_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n );\n case cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n ECDHE_ECDSA_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_PSK_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_PSK_WITH_AES_128_GCM_SHA256,\n \"TLS_PSK_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n PSK_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n \"sha256\",\n );\n case cipherSuites.TLS_PSK_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_PSK_WITH_AES_256_GCM_SHA384,\n \"TLS_PSK_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n PSK_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,\n \"TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n ECDHE_PSK_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n \"sha256\",\n );\n case cipherSuites.TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384,\n \"TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n ECDHE_PSK_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n default:\n break;\n }\n\n return null as any as AEADCipher;\n}\n\n/**\n * @param {number} id An internal id of cipher suite.\n * @param {string} name A valid cipher suite name.\n * @param {string} block A valid nodejs cipher name.\n * @param {KeyExchange} kx Key exchange type.\n * @param {Object} constants Cipher specific constants.\n * @param {string} hash\n * @returns {AEADCipher}\n */\nexport function createAEADCipher(\n id: number,\n name: string,\n block: string,\n kx: KeyExchange,\n constants: { K_LEN: number; N_MAX: number },\n hash = \"sha256\",\n) {\n const cipher = new AEADCipher();\n\n cipher.id = id;\n cipher.name = name;\n cipher.blockAlgorithm = block;\n cipher.kx = kx;\n cipher.hashAlgorithm = hash;\n\n cipher.keyLength = constants.K_LEN;\n cipher.nonceLength = constants.N_MAX;\n\n // RFC5288, sec. 3\n cipher.nonceImplicitLength = 4;\n cipher.nonceExplicitLength = 8;\n\n cipher.ivLength = cipher.nonceImplicitLength;\n\n cipher.authTagLength = 16;\n\n return cipher;\n}\n"]}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/create.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n KeyExchange,\n createECDHEECDSAKeyExchange,\n createECDHEPSKKeyExchange,\n createECDHERSAKeyExchange,\n createPSKKeyExchange,\n createRSAKeyExchange,\n} from \"./key-exchange\";\nimport AEADCipher from \"./suites/aead\";\n\nconst cipherSuites = {\n TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256: 0xc02b,\n TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384: 0xc02c,\n TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256: 0xc02f,\n TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384: 0xc030,\n TLS_RSA_WITH_AES_128_GCM_SHA256: 0x009c,\n TLS_RSA_WITH_AES_256_GCM_SHA384: 0x009d,\n TLS_PSK_WITH_AES_128_GCM_SHA256: 0x00a8,\n TLS_PSK_WITH_AES_256_GCM_SHA384: 0x00a9,\n TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256: 0xd001,\n TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384: 0xd002,\n TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256: 0xccac,\n TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256: 0xcca9,\n TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256: 0xcca8,\n TLS_PSK_WITH_CHACHA20_POLY1305_SHA256: 0xccab,\n};\n\nconst AEAD_AES_128_GCM = {\n K_LEN: 16, // Length of a key.\n N_MIN: 12, // Min nonce length.\n N_MAX: 12, // Max nonce length.\n P_MAX: 2 ** 36 - 31, // Max length of a plaintext.\n\n // Max safe int in js is 2 ** 53. So, use this value\n // instead of 2 ** 61 as described in rfc5116.\n A_MAX: 2 ** 53 - 1, // Max length of an additional data.\n C_MAX: 2 ** 36 - 15, // Cipher text length.\n};\n\nconst AEAD_AES_256_GCM = {\n K_LEN: 32, // Length of a key.\n N_MIN: 12, // Min nonce length.\n N_MAX: 12, // Max nonce length.\n P_MAX: 2 ** 36 - 31, // Max length of a plaintext.\n\n // Note: see above.\n A_MAX: 2 ** 53 - 1, // Max length of an additional data.\n C_MAX: 2 ** 36 - 15, // Cipher text length.\n};\n\nconst RSA_KEY_EXCHANGE = createRSAKeyExchange();\nconst ECDHE_RSA_KEY_EXCHANGE = createECDHERSAKeyExchange();\nconst ECDHE_ECDSA_KEY_EXCHANGE = createECDHEECDSAKeyExchange();\nconst PSK_KEY_EXCHANGE = createPSKKeyExchange();\nconst ECDHE_PSK_KEY_EXCHANGE = createECDHEPSKKeyExchange();\n\n/**\n * Convert cipher value to cipher instance.\n * @param {number} cipher\n */\nexport function createCipher(cipher: number) {\n switch (cipher) {\n case cipherSuites.TLS_RSA_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_RSA_WITH_AES_128_GCM_SHA256,\n \"TLS_RSA_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n RSA_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n );\n case cipherSuites.TLS_RSA_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_RSA_WITH_AES_256_GCM_SHA384,\n \"TLS_RSA_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n RSA_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,\n \"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n ECDHE_RSA_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n );\n case cipherSuites.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,\n \"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n ECDHE_RSA_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,\n \"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n ECDHE_ECDSA_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n );\n case cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,\n \"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n ECDHE_ECDSA_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_PSK_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_PSK_WITH_AES_128_GCM_SHA256,\n \"TLS_PSK_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n PSK_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n \"sha256\",\n );\n case cipherSuites.TLS_PSK_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_PSK_WITH_AES_256_GCM_SHA384,\n \"TLS_PSK_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n PSK_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n case cipherSuites.TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256,\n \"TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256\",\n \"aes-128-gcm\",\n ECDHE_PSK_KEY_EXCHANGE,\n AEAD_AES_128_GCM,\n \"sha256\",\n );\n case cipherSuites.TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384:\n return createAEADCipher(\n cipherSuites.TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384,\n \"TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384\",\n \"aes-256-gcm\",\n ECDHE_PSK_KEY_EXCHANGE,\n AEAD_AES_256_GCM,\n \"sha384\",\n );\n default:\n break;\n }\n\n return null as any as AEADCipher;\n}\n\n/**\n * @param {number} id An internal id of cipher suite.\n * @param {string} name A valid cipher suite name.\n * @param {string} block A valid nodejs cipher name.\n * @param {KeyExchange} kx Key exchange type.\n * @param {Object} constants Cipher specific constants.\n * @param {string} hash\n * @returns {AEADCipher}\n */\nexport function createAEADCipher(\n id: number,\n name: string,\n block: string,\n kx: KeyExchange,\n constants: { K_LEN: number; N_MAX: number },\n hash = \"sha256\",\n) {\n const cipher = new AEADCipher();\n\n cipher.id = id;\n cipher.name = name;\n cipher.blockAlgorithm = block;\n cipher.kx = kx;\n cipher.hashAlgorithm = hash;\n\n cipher.keyLength = constants.K_LEN;\n cipher.nonceLength = constants.N_MAX;\n\n // RFC5288, sec. 3\n cipher.nonceImplicitLength = 4;\n cipher.nonceExplicitLength = 8;\n\n cipher.ivLength = cipher.nonceImplicitLength;\n\n cipher.authTagLength = 16;\n\n return cipher;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ export declare const p256Keypair: () => {
3
+ privateKey: Buffer;
4
+ publicKey: Buffer;
5
+ };
6
+ export declare const p256PreMasterSecret: ({ publicKey, privateKey, }: {
7
+ publicKey: Buffer;
8
+ privateKey: Buffer;
9
+ }) => Buffer;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.p256PreMasterSecret = exports.p256Keypair = void 0;
4
+ const p256_1 = require("@noble/curves/p256");
5
+ const p256Keypair = () => {
6
+ const priv = p256_1.p256.utils.randomPrivateKey();
7
+ const pub = p256_1.p256.getPublicKey(priv, false);
8
+ const privateKey = Buffer.from(priv);
9
+ const publicKey = Buffer.from(pub);
10
+ return {
11
+ privateKey,
12
+ publicKey,
13
+ };
14
+ };
15
+ exports.p256Keypair = p256Keypair;
16
+ const p256PreMasterSecret = ({ publicKey, privateKey, }) => {
17
+ const res = p256_1.p256.getSharedSecret(privateKey, publicKey);
18
+ const secret = Buffer.from(res).subarray(1);
19
+ return secret;
20
+ };
21
+ exports.p256PreMasterSecret = p256PreMasterSecret;
22
+ //# sourceMappingURL=ec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ec.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/ec.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAEnC,MAAM,WAAW,GAAG,GAA8C,EAAE;IACzE,MAAM,IAAI,GAAG,WAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,WAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEnC,OAAO;QACL,UAAU;QACV,SAAS;KACV,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,WAAW,eAUtB;AAEK,MAAM,mBAAmB,GAAG,CAAC,EAClC,SAAS,EACT,UAAU,GAIX,EAAU,EAAE;IACX,MAAM,GAAG,GAAG,WAAI,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAXW,QAAA,mBAAmB,uBAW9B","sourcesContent":["import { p256 } from \"@noble/curves/p256\";\n\nexport const p256Keypair = (): { privateKey: Buffer; publicKey: Buffer } => {\n const priv = p256.utils.randomPrivateKey();\n const pub = p256.getPublicKey(priv, false);\n const privateKey = Buffer.from(priv);\n const publicKey = Buffer.from(pub);\n\n return {\n privateKey,\n publicKey,\n };\n};\n\nexport const p256PreMasterSecret = ({\n publicKey,\n privateKey,\n}: {\n publicKey: Buffer;\n privateKey: Buffer;\n}): Buffer => {\n const res = p256.getSharedSecret(privateKey, publicKey);\n const secret = Buffer.from(res).subarray(1);\n\n return secret;\n};\n"]}
@@ -1,39 +1,16 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
6
  exports.generateKeyPair = void 0;
27
- const elliptic_1 = require("elliptic");
28
- const nacl = __importStar(require("tweetnacl"));
7
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
29
8
  const const_1 = require("./const");
9
+ const ec_1 = require("./ec");
30
10
  function generateKeyPair(namedCurve) {
31
11
  switch (namedCurve) {
32
12
  case const_1.NamedCurveAlgorithm.secp256r1_23: {
33
- const elliptic = new elliptic_1.ec("p256");
34
- const key = elliptic.genKeyPair();
35
- const privateKey = key.getPrivate().toBuffer("be");
36
- const publicKey = Buffer.from(key.getPublic().encode("array", false));
13
+ const { privateKey, publicKey } = (0, ec_1.p256Keypair)();
37
14
  return {
38
15
  curve: namedCurve,
39
16
  privateKey,
@@ -41,7 +18,7 @@ function generateKeyPair(namedCurve) {
41
18
  };
42
19
  }
43
20
  case const_1.NamedCurveAlgorithm.x25519_29: {
44
- const keys = nacl.box.keyPair();
21
+ const keys = tweetnacl_1.default.box.keyPair();
45
22
  return {
46
23
  curve: namedCurve,
47
24
  privateKey: Buffer.from(keys.secretKey.buffer),
@@ -1 +1 @@
1
- {"version":3,"file":"namedCurve.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/namedCurve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA8B;AAC9B,gDAAkC;AAElC,mCAAoE;AAQpE,SAAgB,eAAe,CAC7B,UAAgC;IAEhC,QAAQ,UAAU,EAAE;QAClB,KAAK,2BAAmB,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,aAAE,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAEtE,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,UAAU;gBACV,SAAS;aACV,CAAC;SACH;QACD,KAAK,2BAAmB,CAAC,SAAS,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEhC,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAC9C,CAAC;SACH;QACD;YACE,MAAM,IAAI,KAAK,EAAE,CAAC;KACrB;AACH,CAAC;AA5BD,0CA4BC","sourcesContent":["import { ec } from \"elliptic\";\nimport * as nacl from \"tweetnacl\";\n\nimport { NamedCurveAlgorithm, NamedCurveAlgorithms } from \"./const\";\n\nexport interface NamedCurveKeyPair {\n curve: NamedCurveAlgorithms;\n publicKey: Buffer;\n privateKey: Buffer;\n}\n\nexport function generateKeyPair(\n namedCurve: NamedCurveAlgorithms,\n): NamedCurveKeyPair {\n switch (namedCurve) {\n case NamedCurveAlgorithm.secp256r1_23: {\n const elliptic = new ec(\"p256\");\n const key = elliptic.genKeyPair();\n const privateKey = key.getPrivate().toBuffer(\"be\");\n const publicKey = Buffer.from(key.getPublic().encode(\"array\", false));\n\n return {\n curve: namedCurve,\n privateKey,\n publicKey,\n };\n }\n case NamedCurveAlgorithm.x25519_29: {\n const keys = nacl.box.keyPair();\n\n return {\n curve: namedCurve,\n privateKey: Buffer.from(keys.secretKey.buffer),\n publicKey: Buffer.from(keys.publicKey.buffer),\n };\n }\n default:\n throw new Error();\n }\n}\n"]}
1
+ {"version":3,"file":"namedCurve.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/namedCurve.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAE7B,mCAAoE;AACpE,6BAAmC;AAQnC,SAAgB,eAAe,CAC7B,UAAgC;IAEhC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,2BAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YACtC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,gBAAW,GAAE,CAAC;YAEhD,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,UAAU;gBACV,SAAS;aACV,CAAC;QACJ,CAAC;QACD,KAAK,2BAAmB,CAAC,SAAS,CAAC,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,mBAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAEhC,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;aAC9C,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAzBD,0CAyBC","sourcesContent":["import nacl from \"tweetnacl\";\n\nimport { NamedCurveAlgorithm, NamedCurveAlgorithms } from \"./const\";\nimport { p256Keypair } from \"./ec\";\n\nexport interface NamedCurveKeyPair {\n curve: NamedCurveAlgorithms;\n publicKey: Buffer;\n privateKey: Buffer;\n}\n\nexport function generateKeyPair(\n namedCurve: NamedCurveAlgorithms,\n): NamedCurveKeyPair {\n switch (namedCurve) {\n case NamedCurveAlgorithm.secp256r1_23: {\n const { privateKey, publicKey } = p256Keypair();\n\n return {\n curve: namedCurve,\n privateKey,\n publicKey,\n };\n }\n case NamedCurveAlgorithm.x25519_29: {\n const keys = nacl.box.keyPair();\n\n return {\n curve: namedCurve,\n privateKey: Buffer.from(keys.secretKey.buffer),\n publicKey: Buffer.from(keys.publicKey.buffer),\n };\n }\n default:\n throw new Error();\n }\n}\n"]}
@@ -1,45 +1,20 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
6
  exports.prfEncryptionKeys = exports.prfVerifyDataServer = exports.prfVerifyDataClient = exports.prfVerifyData = exports.hash = exports.exportKeyingMaterial = exports.prfExtendedMasterSecret = exports.prfMasterSecret = exports.prfPHash = exports.hmac = exports.prfPreMasterSecret = void 0;
27
- const binary_data_1 = require("binary-data");
28
7
  const crypto_1 = require("crypto");
29
- const elliptic_1 = require("elliptic");
30
- const nacl = __importStar(require("tweetnacl"));
8
+ const binary_data_1 = require("binary-data");
9
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
31
10
  const const_1 = require("./const");
11
+ const ec_1 = require("./ec");
32
12
  function prfPreMasterSecret(publicKey, privateKey, curve) {
33
13
  switch (curve) {
34
14
  case const_1.NamedCurveAlgorithm.secp256r1_23:
35
- const elliptic = new elliptic_1.ec("p256"); // aka secp256r1
36
- const pub = elliptic.keyFromPublic(publicKey).getPublic();
37
- const priv = elliptic.keyFromPrivate(privateKey).getPrivate();
38
- const res = pub.mul(priv);
39
- const secret = Buffer.from(res.encode("array", false)).slice(1, 33);
40
- return secret;
15
+ return (0, ec_1.p256PreMasterSecret)({ publicKey, privateKey });
41
16
  case const_1.NamedCurveAlgorithm.x25519_29:
42
- return Buffer.from(nacl.scalarMult(privateKey, publicKey));
17
+ return Buffer.from(tweetnacl_1.default.scalarMult(privateKey, publicKey));
43
18
  default:
44
19
  throw new Error();
45
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prf.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/prf.ts"],"names":[],"mappings":"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","sourcesContent":["import { createDecode } from \"binary-data\";\nimport { createHash, createHmac } from \"crypto\";\nimport { ec } from \"elliptic\";\nimport * as nacl from \"tweetnacl\";\n\nimport { NamedCurveAlgorithm, NamedCurveAlgorithms } from \"./const\";\n\nexport function prfPreMasterSecret(\n publicKey: Buffer,\n privateKey: Buffer,\n curve: NamedCurveAlgorithms,\n) {\n switch (curve) {\n case NamedCurveAlgorithm.secp256r1_23:\n const elliptic = new ec(\"p256\"); // aka secp256r1\n const pub = elliptic.keyFromPublic(publicKey).getPublic();\n const priv = elliptic.keyFromPrivate(privateKey).getPrivate();\n const res = pub.mul(priv);\n const secret = Buffer.from(res.encode(\"array\", false)).slice(1, 33);\n return secret;\n case NamedCurveAlgorithm.x25519_29:\n return Buffer.from(nacl.scalarMult(privateKey, publicKey));\n default:\n throw new Error();\n }\n}\n\nexport function hmac(algorithm: string, secret: Buffer, data: Buffer) {\n const hash = createHmac(algorithm, secret);\n hash.update(data);\n return hash.digest();\n}\n\nexport function prfPHash(\n secret: Buffer,\n seed: Buffer,\n requestedLegth: number,\n algorithm = \"sha256\",\n) {\n const totalLength = requestedLegth;\n const bufs: Buffer[] = [];\n let Ai = seed; // A0\n\n do {\n Ai = hmac(algorithm, secret, Ai); // A(i) = HMAC(secret, A(i-1))\n const output = hmac(algorithm, secret, Buffer.concat([Ai, seed]));\n\n bufs.push(output);\n requestedLegth -= output.length; // eslint-disable-line no-param-reassign\n } while (requestedLegth > 0);\n\n return Buffer.concat(bufs, totalLength);\n}\n\nexport function prfMasterSecret(\n preMasterSecret: Buffer,\n clientRandom: Buffer,\n serverRandom: Buffer,\n) {\n const seed = Buffer.concat([\n Buffer.from(\"master secret\"),\n clientRandom,\n serverRandom,\n ]);\n return prfPHash(preMasterSecret, seed, 48);\n}\n\nexport function prfExtendedMasterSecret(\n preMasterSecret: Buffer,\n handshakes: Buffer,\n) {\n const sessionHash = hash(\"sha256\", handshakes);\n const label = \"extended master secret\";\n return prfPHash(\n preMasterSecret,\n Buffer.concat([Buffer.from(label), sessionHash]),\n 48,\n );\n}\n\nexport function exportKeyingMaterial(\n label: string,\n length: number,\n masterSecret: Buffer,\n localRandom: Buffer,\n remoteRandom: Buffer,\n isClient: boolean,\n) {\n const clientRandom = isClient ? localRandom : remoteRandom;\n const serverRandom = isClient ? remoteRandom : localRandom;\n const seed = Buffer.concat([Buffer.from(label), clientRandom, serverRandom]);\n return prfPHash(masterSecret, seed, length);\n}\n\nexport function hash(algorithm: string, data: Buffer) {\n return createHash(algorithm).update(data).digest();\n}\n\nexport function prfVerifyData(\n masterSecret: Buffer,\n handshakes: Buffer,\n label: string,\n size = 12,\n) {\n const bytes = hash(\"sha256\", handshakes);\n return prfPHash(\n masterSecret,\n Buffer.concat([Buffer.from(label), bytes]),\n size,\n );\n}\n\nexport function prfVerifyDataClient(masterSecret: Buffer, handshakes: Buffer) {\n return prfVerifyData(masterSecret, handshakes, \"client finished\");\n}\n\nexport function prfVerifyDataServer(masterSecret: Buffer, handshakes: Buffer) {\n return prfVerifyData(masterSecret, handshakes, \"server finished\");\n}\n\nexport function prfEncryptionKeys(\n masterSecret: Buffer,\n clientRandom: Buffer,\n serverRandom: Buffer,\n prfKeyLen: number,\n prfIvLen: number,\n prfNonceLen: number,\n algorithm = \"sha256\",\n) {\n const size = prfKeyLen * 2 + prfIvLen * 2;\n const secret = masterSecret;\n const seed = Buffer.concat([serverRandom, clientRandom]);\n const keyBlock = prfPHash(\n secret,\n Buffer.concat([Buffer.from(\"key expansion\"), seed]),\n size,\n algorithm,\n );\n const stream = createDecode(keyBlock);\n\n const clientWriteKey = stream.readBuffer(prfKeyLen);\n const serverWriteKey = stream.readBuffer(prfKeyLen);\n\n const clientNonceImplicit = stream.readBuffer(prfIvLen);\n const serverNonceImplicit = stream.readBuffer(prfIvLen);\n\n const clientNonce = Buffer.alloc(prfNonceLen, 0);\n const serverNonce = Buffer.alloc(prfNonceLen, 0);\n\n clientNonceImplicit.copy(clientNonce, 0);\n serverNonceImplicit.copy(serverNonce, 0);\n\n return { clientWriteKey, serverWriteKey, clientNonce, serverNonce };\n}\n"]}
1
+ {"version":3,"file":"prf.js","sourceRoot":"","sources":["../../../../../dtls/src/cipher/prf.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash, createHmac } from \"crypto\";\nimport { createDecode } from \"binary-data\";\nimport nacl from \"tweetnacl\";\n\nimport { NamedCurveAlgorithm, NamedCurveAlgorithms } from \"./const\";\nimport { p256PreMasterSecret } from \"./ec\";\n\nexport function prfPreMasterSecret(\n publicKey: Buffer,\n privateKey: Buffer,\n curve: NamedCurveAlgorithms,\n) {\n switch (curve) {\n case NamedCurveAlgorithm.secp256r1_23:\n return p256PreMasterSecret({ publicKey, privateKey });\n case NamedCurveAlgorithm.x25519_29:\n return Buffer.from(nacl.scalarMult(privateKey, publicKey));\n default:\n throw new Error();\n }\n}\n\nexport function hmac(algorithm: string, secret: Buffer, data: Buffer) {\n const hash = createHmac(algorithm, secret);\n hash.update(data);\n return hash.digest();\n}\n\nexport function prfPHash(\n secret: Buffer,\n seed: Buffer,\n requestedLegth: number,\n algorithm = \"sha256\",\n) {\n const totalLength = requestedLegth;\n const bufs: Buffer[] = [];\n let Ai = seed; // A0\n\n do {\n Ai = hmac(algorithm, secret, Ai); // A(i) = HMAC(secret, A(i-1))\n const output = hmac(algorithm, secret, Buffer.concat([Ai, seed]));\n\n bufs.push(output);\n requestedLegth -= output.length; // eslint-disable-line no-param-reassign\n } while (requestedLegth > 0);\n\n return Buffer.concat(bufs, totalLength);\n}\n\nexport function prfMasterSecret(\n preMasterSecret: Buffer,\n clientRandom: Buffer,\n serverRandom: Buffer,\n) {\n const seed = Buffer.concat([\n Buffer.from(\"master secret\"),\n clientRandom,\n serverRandom,\n ]);\n return prfPHash(preMasterSecret, seed, 48);\n}\n\nexport function prfExtendedMasterSecret(\n preMasterSecret: Buffer,\n handshakes: Buffer,\n) {\n const sessionHash = hash(\"sha256\", handshakes);\n const label = \"extended master secret\";\n return prfPHash(\n preMasterSecret,\n Buffer.concat([Buffer.from(label), sessionHash]),\n 48,\n );\n}\n\nexport function exportKeyingMaterial(\n label: string,\n length: number,\n masterSecret: Buffer,\n localRandom: Buffer,\n remoteRandom: Buffer,\n isClient: boolean,\n) {\n const clientRandom = isClient ? localRandom : remoteRandom;\n const serverRandom = isClient ? remoteRandom : localRandom;\n const seed = Buffer.concat([Buffer.from(label), clientRandom, serverRandom]);\n return prfPHash(masterSecret, seed, length);\n}\n\nexport function hash(algorithm: string, data: Buffer) {\n return createHash(algorithm).update(data).digest();\n}\n\nexport function prfVerifyData(\n masterSecret: Buffer,\n handshakes: Buffer,\n label: string,\n size = 12,\n) {\n const bytes = hash(\"sha256\", handshakes);\n return prfPHash(\n masterSecret,\n Buffer.concat([Buffer.from(label), bytes]),\n size,\n );\n}\n\nexport function prfVerifyDataClient(masterSecret: Buffer, handshakes: Buffer) {\n return prfVerifyData(masterSecret, handshakes, \"client finished\");\n}\n\nexport function prfVerifyDataServer(masterSecret: Buffer, handshakes: Buffer) {\n return prfVerifyData(masterSecret, handshakes, \"server finished\");\n}\n\nexport function prfEncryptionKeys(\n masterSecret: Buffer,\n clientRandom: Buffer,\n serverRandom: Buffer,\n prfKeyLen: number,\n prfIvLen: number,\n prfNonceLen: number,\n algorithm = \"sha256\",\n) {\n const size = prfKeyLen * 2 + prfIvLen * 2;\n const secret = masterSecret;\n const seed = Buffer.concat([serverRandom, clientRandom]);\n const keyBlock = prfPHash(\n secret,\n Buffer.concat([Buffer.from(\"key expansion\"), seed]),\n size,\n algorithm,\n );\n const stream = createDecode(keyBlock);\n\n const clientWriteKey = stream.readBuffer(prfKeyLen);\n const serverWriteKey = stream.readBuffer(prfKeyLen);\n\n const clientNonceImplicit = stream.readBuffer(prfIvLen);\n const serverNonceImplicit = stream.readBuffer(prfIvLen);\n\n const clientNonce = Buffer.alloc(prfNonceLen, 0);\n const serverNonce = Buffer.alloc(prfNonceLen, 0);\n\n clientNonceImplicit.copy(clientNonce, 0);\n serverNonceImplicit.copy(serverNonce, 0);\n\n return { clientWriteKey, serverWriteKey, clientNonce, serverNonce };\n}\n"]}
@@ -15,7 +15,7 @@ export default class AEADCipher extends Cipher {
15
15
  clientNonce?: Buffer;
16
16
  serverNonce?: Buffer;
17
17
  constructor();
18
- get summary(): {};
18
+ get summary(): any;
19
19
  init(masterSecret: Buffer, serverRandom: Buffer, clientRandom: Buffer): void;
20
20
  /**
21
21
  * Encrypt message.
@@ -1 +1 @@
1
- {"version":3,"file":"aead.js","sourceRoot":"","sources":["../../../../../../dtls/src/cipher/suites/aead.ts"],"names":[],"mappings":"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","sourcesContent":["import * as crypto from \"crypto\";\nimport debug from \"debug\";\n\nimport { dumpBuffer, getObjectSummary } from \"../../helper\";\nimport { prfEncryptionKeys } from \"../prf\";\nimport Cipher, { CipherHeader, SessionType, SessionTypes } from \"./abstract\";\nconst {\n createDecode,\n encode,\n types: { uint8, uint16be, uint48be },\n} = require(\"binary-data\");\n\nconst ContentType = uint8;\nconst ProtocolVersion = uint16be;\n\nconst AEADAdditionalData = {\n epoch: uint16be,\n sequence: uint48be,\n type: ContentType,\n version: ProtocolVersion,\n length: uint16be,\n};\n\nconst err = debug(\n \"werift-dtls : packages/dtls/src/cipher/suites/aead.ts : err\",\n);\n\n/**\n * This class implements AEAD cipher family.\n */\nexport default class AEADCipher extends Cipher {\n keyLength = 0;\n nonceLength = 0;\n ivLength = 0;\n authTagLength = 0;\n\n nonceImplicitLength = 0;\n nonceExplicitLength = 0;\n\n clientWriteKey?: Buffer;\n serverWriteKey?: Buffer;\n\n clientNonce?: Buffer;\n serverNonce?: Buffer;\n\n constructor() {\n super();\n }\n\n get summary() {\n return getObjectSummary(this);\n }\n\n init(masterSecret: Buffer, serverRandom: Buffer, clientRandom: Buffer) {\n const keys = prfEncryptionKeys(\n masterSecret,\n clientRandom,\n serverRandom,\n this.keyLength,\n this.ivLength,\n this.nonceLength,\n this.hashAlgorithm,\n );\n\n this.clientWriteKey = keys.clientWriteKey;\n this.serverWriteKey = keys.serverWriteKey;\n this.clientNonce = keys.clientNonce;\n this.serverNonce = keys.serverNonce;\n }\n\n /**\n * Encrypt message.\n */\n encrypt(type: SessionTypes, data: Buffer, header: CipherHeader) {\n const isClient = type === SessionType.CLIENT;\n const iv = isClient ? this.clientNonce : this.serverNonce;\n const writeKey = isClient ? this.clientWriteKey : this.serverWriteKey;\n if (!iv || !writeKey) throw new Error();\n\n iv.writeUInt16BE(header.epoch, this.nonceImplicitLength);\n iv.writeUIntBE(header.sequenceNumber, this.nonceImplicitLength + 2, 6);\n\n const explicitNonce = iv.slice(this.nonceImplicitLength);\n\n const additionalData = {\n epoch: header.epoch,\n sequence: header.sequenceNumber,\n type: header.type,\n version: header.version,\n length: data.length,\n };\n\n const additionalBuffer = encode(additionalData, AEADAdditionalData).slice();\n\n const cipher = crypto.createCipheriv(\n this.blockAlgorithm as crypto.CipherCCMTypes,\n writeKey,\n iv,\n {\n authTagLength: this.authTagLength,\n },\n );\n\n cipher.setAAD(additionalBuffer, {\n plaintextLength: data.length,\n });\n\n const headPart = cipher.update(data);\n const finalPart = cipher.final();\n const authTag = cipher.getAuthTag();\n\n return Buffer.concat([explicitNonce, headPart, finalPart, authTag]);\n }\n\n /**\n * Decrypt message.\n */\n decrypt(type: SessionTypes, data: Buffer, header: CipherHeader) {\n const isClient = type === SessionType.CLIENT;\n const iv = isClient ? this.serverNonce : this.clientNonce;\n const writeKey = isClient ? this.serverWriteKey : this.clientWriteKey;\n if (!iv || !writeKey) throw new Error();\n\n const final = createDecode(data);\n\n const explicitNonce = final.readBuffer(this.nonceExplicitLength);\n explicitNonce.copy(iv, this.nonceImplicitLength);\n\n const encrypted = final.readBuffer(final.length - this.authTagLength);\n const authTag = final.readBuffer(this.authTagLength);\n\n const additionalData = {\n epoch: header.epoch,\n sequence: header.sequenceNumber,\n type: header.type,\n version: header.version,\n length: encrypted.length,\n };\n\n const additionalBuffer = encode(additionalData, AEADAdditionalData).slice();\n\n const decipher = crypto.createDecipheriv(\n this.blockAlgorithm as crypto.CipherCCMTypes,\n writeKey,\n iv,\n {\n authTagLength: this.authTagLength,\n },\n );\n\n decipher.setAuthTag(authTag);\n decipher.setAAD(additionalBuffer, {\n plaintextLength: encrypted.length,\n });\n\n const headPart = decipher.update(encrypted);\n try {\n const finalPart = decipher.final();\n return finalPart.length > 0\n ? Buffer.concat([headPart, finalPart])\n : headPart;\n } catch (error) {\n err(\n \"decrypt failed\",\n error,\n type,\n dumpBuffer(data),\n header,\n this.summary,\n );\n throw error;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"aead.js","sourceRoot":"","sources":["../../../../../../dtls/src/cipher/suites/aead.ts"],"names":[],"mappings":"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","sourcesContent":["import * as crypto from \"crypto\";\nimport debug from \"debug\";\n\nimport { dumpBuffer, getObjectSummary } from \"../../helper\";\nimport { prfEncryptionKeys } from \"../prf\";\nimport Cipher, { CipherHeader, SessionType, SessionTypes } from \"./abstract\";\nconst {\n createDecode,\n encode,\n types: { uint8, uint16be, uint48be },\n} = require(\"binary-data\");\n\nconst ContentType = uint8;\nconst ProtocolVersion = uint16be;\n\nconst AEADAdditionalData = {\n epoch: uint16be,\n sequence: uint48be,\n type: ContentType,\n version: ProtocolVersion,\n length: uint16be,\n};\n\nconst err = debug(\n \"werift-dtls : packages/dtls/src/cipher/suites/aead.ts : err\",\n);\n\n/**\n * This class implements AEAD cipher family.\n */\nexport default class AEADCipher extends Cipher {\n keyLength = 0;\n nonceLength = 0;\n ivLength = 0;\n authTagLength = 0;\n\n nonceImplicitLength = 0;\n nonceExplicitLength = 0;\n\n clientWriteKey?: Buffer;\n serverWriteKey?: Buffer;\n\n clientNonce?: Buffer;\n serverNonce?: Buffer;\n\n constructor() {\n super();\n }\n\n get summary() {\n return getObjectSummary(this);\n }\n\n init(masterSecret: Buffer, serverRandom: Buffer, clientRandom: Buffer) {\n const keys = prfEncryptionKeys(\n masterSecret,\n clientRandom,\n serverRandom,\n this.keyLength,\n this.ivLength,\n this.nonceLength,\n this.hashAlgorithm,\n );\n\n this.clientWriteKey = keys.clientWriteKey;\n this.serverWriteKey = keys.serverWriteKey;\n this.clientNonce = keys.clientNonce;\n this.serverNonce = keys.serverNonce;\n }\n\n /**\n * Encrypt message.\n */\n encrypt(type: SessionTypes, data: Buffer, header: CipherHeader) {\n const isClient = type === SessionType.CLIENT;\n const iv = isClient ? this.clientNonce : this.serverNonce;\n const writeKey = isClient ? this.clientWriteKey : this.serverWriteKey;\n if (!iv || !writeKey) throw new Error();\n\n iv.writeUInt16BE(header.epoch, this.nonceImplicitLength);\n iv.writeUIntBE(header.sequenceNumber, this.nonceImplicitLength + 2, 6);\n\n const explicitNonce = iv.slice(this.nonceImplicitLength);\n\n const additionalData = {\n epoch: header.epoch,\n sequence: header.sequenceNumber,\n type: header.type,\n version: header.version,\n length: data.length,\n };\n\n const additionalBuffer = encode(additionalData, AEADAdditionalData).slice();\n\n const cipher = crypto.createCipheriv(\n this.blockAlgorithm as crypto.CipherCCMTypes,\n writeKey,\n iv,\n {\n authTagLength: this.authTagLength,\n },\n );\n\n cipher.setAAD(additionalBuffer, {\n plaintextLength: data.length,\n });\n\n const headPart = cipher.update(data);\n const finalPart = cipher.final();\n const authTag = cipher.getAuthTag();\n\n return Buffer.concat([explicitNonce, headPart, finalPart, authTag]);\n }\n\n /**\n * Decrypt message.\n */\n decrypt(type: SessionTypes, data: Buffer, header: CipherHeader) {\n const isClient = type === SessionType.CLIENT;\n const iv = isClient ? this.serverNonce : this.clientNonce;\n const writeKey = isClient ? this.serverWriteKey : this.clientWriteKey;\n if (!iv || !writeKey) throw new Error();\n\n const final = createDecode(data);\n\n const explicitNonce = final.readBuffer(this.nonceExplicitLength);\n explicitNonce.copy(iv, this.nonceImplicitLength);\n\n const encrypted = final.readBuffer(final.length - this.authTagLength);\n const authTag = final.readBuffer(this.authTagLength);\n\n const additionalData = {\n epoch: header.epoch,\n sequence: header.sequenceNumber,\n type: header.type,\n version: header.version,\n length: encrypted.length,\n };\n\n const additionalBuffer = encode(additionalData, AEADAdditionalData).slice();\n\n const decipher = crypto.createDecipheriv(\n this.blockAlgorithm as crypto.CipherCCMTypes,\n writeKey,\n iv,\n {\n authTagLength: this.authTagLength,\n },\n );\n\n decipher.setAuthTag(authTag);\n decipher.setAAD(additionalBuffer, {\n plaintextLength: encrypted.length,\n });\n\n const headPart = decipher.update(encrypted);\n try {\n const finalPart = decipher.final();\n return finalPart.length > 0\n ? Buffer.concat([headPart, finalPart])\n : headPart;\n } catch (error) {\n err(\n \"decrypt failed\",\n error,\n type,\n dumpBuffer(data),\n header,\n this.summary,\n );\n throw error;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../dtls/src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import debug from \"debug\";\n\nimport { SessionType } from \"./cipher/suites/abstract\";\nimport { Flight1 } from \"./flight/client/flight1\";\nimport { Flight3 } from \"./flight/client/flight3\";\nimport { Flight5 } from \"./flight/client/flight5\";\nimport { HandshakeType } from \"./handshake/const\";\nimport { ServerHelloVerifyRequest } from \"./handshake/message/server/helloVerifyRequest\";\nimport { FragmentedHandshake } from \"./record/message/fragment\";\nimport { DtlsSocket, Options } from \"./socket\";\n\nconst log = debug(\"werift-dtls : packages/dtls/src/client.ts : log\");\n\nexport class DtlsClient extends DtlsSocket {\n constructor(options: Options) {\n super(options, SessionType.CLIENT);\n this.onHandleHandshakes = this.handleHandshakes;\n log(this.dtls.sessionId, \"start client\");\n }\n\n async connect() {\n await new Flight1(this.transport, this.dtls, this.cipher).exec(\n this.extensions,\n );\n }\n\n private flight5?: Flight5;\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 // flight2\n case HandshakeType.hello_verify_request_3:\n {\n const verifyReq = ServerHelloVerifyRequest.deSerialize(\n handshake.fragment,\n );\n await new Flight3(this.transport, this.dtls).exec(verifyReq);\n }\n break;\n // flight 4\n case HandshakeType.server_hello_2:\n {\n if (this.connected) return;\n this.flight5 = new Flight5(\n this.transport,\n this.dtls,\n this.cipher,\n this.srtp,\n );\n this.flight5.handleHandshake(handshake);\n }\n break;\n case HandshakeType.certificate_11:\n case HandshakeType.server_key_exchange_12:\n case HandshakeType.certificate_request_13:\n {\n await this.waitForReady(() => !!this.flight5);\n this.flight5?.handleHandshake(handshake);\n }\n break;\n case HandshakeType.server_hello_done_14:\n {\n await this.waitForReady(() => !!this.flight5);\n this.flight5?.handleHandshake(handshake);\n\n const targets = [\n 11,\n 12,\n this.options.certificateRequest && 13,\n ].filter((n): n is number => typeof n === \"number\");\n await this.waitForReady(() =>\n this.dtls.checkHandshakesExist(targets),\n );\n await this.flight5?.exec();\n }\n break;\n // flight 6\n case HandshakeType.finished_20:\n {\n this.dtls.flight = 7;\n this.connected = true;\n this.onConnect.execute();\n log(this.dtls.sessionId, \"dtls connected\");\n }\n break;\n }\n }\n };\n}\n"]}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../dtls/src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import debug from \"debug\";\n\nimport { SessionType } from \"./cipher/suites/abstract\";\nimport { Flight1 } from \"./flight/client/flight1\";\nimport { Flight3 } from \"./flight/client/flight3\";\nimport { Flight5 } from \"./flight/client/flight5\";\nimport { HandshakeType } from \"./handshake/const\";\nimport { ServerHelloVerifyRequest } from \"./handshake/message/server/helloVerifyRequest\";\nimport { FragmentedHandshake } from \"./record/message/fragment\";\nimport { DtlsSocket, Options } from \"./socket\";\n\nconst log = debug(\"werift-dtls : packages/dtls/src/client.ts : log\");\n\nexport class DtlsClient extends DtlsSocket {\n constructor(options: Options) {\n super(options, SessionType.CLIENT);\n this.onHandleHandshakes = this.handleHandshakes;\n log(this.dtls.sessionId, \"start client\");\n }\n\n async connect() {\n await new Flight1(this.transport, this.dtls, this.cipher).exec(\n this.extensions,\n );\n }\n\n private flight5?: Flight5;\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 // flight2\n case HandshakeType.hello_verify_request_3: {\n const verifyReq = ServerHelloVerifyRequest.deSerialize(\n handshake.fragment,\n );\n await new Flight3(this.transport, this.dtls).exec(verifyReq);\n }\n break;\n // flight 4\n case HandshakeType.server_hello_2: {\n if (this.connected) return;\n this.flight5 = new Flight5(\n this.transport,\n this.dtls,\n this.cipher,\n this.srtp,\n );\n this.flight5.handleHandshake(handshake);\n }\n break;\n case HandshakeType.certificate_11:\n case HandshakeType.server_key_exchange_12:\n case HandshakeType.certificate_request_13: {\n await this.waitForReady(() => !!this.flight5);\n this.flight5?.handleHandshake(handshake);\n }\n break;\n case HandshakeType.server_hello_done_14: {\n await this.waitForReady(() => !!this.flight5);\n this.flight5?.handleHandshake(handshake);\n\n const targets = [\n 11,\n 12,\n this.options.certificateRequest && 13,\n ].filter((n): n is number => typeof n === \"number\");\n await this.waitForReady(() =>\n this.dtls.checkHandshakesExist(targets),\n );\n await this.flight5?.exec();\n }\n break;\n // flight 6\n case HandshakeType.finished_20: {\n this.dtls.flight = 7;\n this.connected = true;\n this.onConnect.execute();\n log(this.dtls.sessionId, \"dtls connected\");\n }\n break;\n }\n }\n };\n}\n"]}
@@ -28,11 +28,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
28
28
  var _a;
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
30
  exports.CipherContext = void 0;
31
+ const crypto_1 = __importStar(require("crypto"));
31
32
  const x509_1 = require("@fidm/x509");
32
33
  const webcrypto_1 = require("@peculiar/webcrypto");
33
34
  const x509 = __importStar(require("@peculiar/x509"));
34
35
  const binary_data_1 = require("binary-data");
35
- const crypto_1 = __importStar(require("crypto"));
36
36
  const addYears_1 = __importDefault(require("date-fns/addYears"));
37
37
  const const_1 = require("../cipher/const");
38
38
  const prf_1 = require("../cipher/prf");
@@ -197,6 +197,7 @@ class CipherContext {
197
197
  return Buffer.concat([clientRandom, serverRandom, serverParams, publicKey]);
198
198
  }
199
199
  }
200
+ exports.CipherContext = CipherContext;
200
201
  _a = CipherContext;
201
202
  /**
202
203
  *
@@ -267,5 +268,4 @@ Object.defineProperty(CipherContext, "createSelfSignedCertificateWithKey", {
267
268
  return { certPem, keyPem, signatureHash };
268
269
  }
269
270
  });
270
- exports.CipherContext = CipherContext;
271
271
  //# sourceMappingURL=cipher.js.map