Compare commits

...

2 Commits

2 changed files with 14 additions and 4 deletions

View File

@ -29,7 +29,10 @@
(for/list [(i (in-range 0 len chunk-size))]
(subbytes bs i (min (+ i chunk-size) len))))
(define (fragment bs [f values])
(define (fragment bs0 padding [f values])
(define bs (if (zero? padding)
bs0
(bytes-append bs0 (make-bytes (modulo (- (bytes-length bs0)) padding) #x80))))
(if (> (bytes-length bs) PACKET-LIMIT)
(Packet-fragmented (map f (chunk-bytes bs PACKET-LIMIT)))
(Packet-complete (f bs))))
@ -39,13 +42,15 @@
#:acceptor-ref acceptor-ref
#:import import-handler
#:preshared-keys [psks #f]
#:pattern [pattern #f])
#:pattern [pattern #f]
#:padding [padding 0])
(noise* #:role 'initiator
#:service-selector service-selector
#:remote-static-pk remote-static-pk
#:import import-handler
#:preshared-keys psks
#:pattern pattern
#:padding padding
(lambda (set-peer-session! handle-message)
(at acceptor-ref
(assert (Resolve (Step (NoiseStepType) service-selector)
@ -65,13 +70,15 @@
#:export initial-ref
#:observer observer
#:preshared-keys [psks #f]
#:pattern [pattern #f])
#:pattern [pattern #f]
#:padding [padding 0])
(noise* #:role 'responder
#:service-selector service-selector
#:static-keypair static-keypair
#:export initial-ref
#:preshared-keys psks
#:pattern pattern
#:padding padding
(lambda (set-peer-session! handle-message)
(at observer
(assert (Resolved-accepted
@ -91,6 +98,7 @@
#:import [import-handler #f]
#:preshared-keys [psks #f]
#:pattern [pattern #f]
#:padding [padding 0]
f)
(define H (Noise-*-25519_ChaChaPoly_BLAKE2s
(or pattern "NK")
@ -108,7 +116,7 @@
(define (start-relay css)
(set!-values (encrypt! decrypt!) (css->procedures css))
(run-relay #:packet-writer (lambda (bs) (send! peer-session (fragment bs encrypt!)))
(run-relay #:packet-writer (lambda (bs) (send! peer-session (fragment bs padding encrypt!)))
#:setup-inputs (lambda (tr)
(set! relay tr)
(for [(m (in-list (reverse buffered-inputs-rev)))]

View File

@ -111,6 +111,8 @@
[(? eof-object?)
(when (positive? start-pos)
(set-tunnel-relay-read-buffer! tr (subbytes buffer start-pos)))]
[#f
(read-more)]
[packet
(accept-packet tr packet)
(read-more)]))))))