Update noise implementation for new protocol
This commit is contained in:
parent
c97069375a
commit
e6234b7713
|
@ -49,17 +49,21 @@
|
|||
(lambda (set-peer-session! handle-message)
|
||||
(at acceptor-ref
|
||||
(assert (Resolve (Step (NoiseStepType) service-selector)
|
||||
(object #:name 'noise-initiator
|
||||
(object #:name 'noise-observer
|
||||
[#:asserted (Resolved-accepted responder-session)
|
||||
(at responder-session
|
||||
(assert (Initiator
|
||||
(object #:name 'noise-initiator
|
||||
[#:message m
|
||||
(handle-message m)]))))
|
||||
(set-peer-session! responder-session)
|
||||
#:retracted
|
||||
(stop-current-facet)]
|
||||
[#:message m (handle-message m)])))))))
|
||||
(stop-current-facet)])))))))
|
||||
|
||||
(define (noise-responder #:service-selector service-selector
|
||||
#:static-keypair static-keypair
|
||||
#:export initial-ref
|
||||
#:initiator-session initiator-session
|
||||
#:observer observer
|
||||
#:preshared-keys [psks #f]
|
||||
#:pattern [pattern #f])
|
||||
(noise* #:role 'responder
|
||||
|
@ -69,11 +73,15 @@
|
|||
#:preshared-keys psks
|
||||
#:pattern pattern
|
||||
(lambda (set-peer-session! handle-message)
|
||||
(set-peer-session! initiator-session)
|
||||
(at initiator-session
|
||||
(at observer
|
||||
(assert (Resolved-accepted
|
||||
(object #:name (list 'noise-responder initial-ref initiator-session)
|
||||
[#:message m (handle-message m)])))))))
|
||||
(object #:name (list 'noise-responder initial-ref observer)
|
||||
[#:asserted (Initiator s)
|
||||
(set-peer-session! s)
|
||||
#:retracted
|
||||
(stop-current-facet)]
|
||||
[#:message m
|
||||
(handle-message m)])))))))
|
||||
|
||||
(define (noise* #:role role
|
||||
#:service-selector service-selector
|
||||
|
@ -127,6 +135,7 @@
|
|||
(handshake-step))))))
|
||||
|
||||
(define (set-peer-session! session)
|
||||
(when peer-session (error 'noise* "Double-setting of peer-session"))
|
||||
(set! peer-session session)
|
||||
(when (eq? role 'initiator) (handshake-step)))
|
||||
|
||||
|
@ -134,12 +143,15 @@
|
|||
|
||||
(module+ test
|
||||
(require libsodium)
|
||||
(file-stream-buffer-mode (current-output-port) 'none)
|
||||
|
||||
(when (file-stream-buffer-mode (current-output-port))
|
||||
;; ^ Only try to set it if we get a non-#f answer when we ask for it
|
||||
(file-stream-buffer-mode (current-output-port) 'none))
|
||||
|
||||
(standard-actor-system (ds)
|
||||
(spawn #:name 'test-main
|
||||
(define server-keys (make-crypto-box-keypair))
|
||||
(define server-keys (make-crypto-box-keypair))
|
||||
|
||||
(spawn #:name 'test-responder
|
||||
(define service-object
|
||||
(object [a
|
||||
(printf "service+: ~v\n" a)
|
||||
|
@ -149,12 +161,13 @@
|
|||
(stop-current-facet)]))
|
||||
|
||||
(at ds
|
||||
(during (Resolve (Step (NoiseStepType) 'test-service) $initiator-session)
|
||||
(during (Resolve (Step (NoiseStepType) 'test-service) $observer)
|
||||
(noise-responder #:service-selector 'test-service
|
||||
#:static-keypair server-keys
|
||||
#:initiator-session initiator-session
|
||||
#:export service-object)))
|
||||
#:observer observer
|
||||
#:export service-object))))
|
||||
|
||||
(spawn #:name 'test-initiator
|
||||
(noise-initiator #:service-selector 'test-service
|
||||
#:remote-static-pk (crypto-box-keypair-pk server-keys)
|
||||
#:acceptor-ref ds
|
||||
|
|
Loading…
Reference in New Issue