@@ -10,15 +10,27 @@ const { StreamMessage } = MessageLayer
1010type PublisherKeyExhangeAPI = ReturnType < typeof PublisherKeyExhange >
1111
1212export default function Encrypt ( client : StreamrClient ) {
13- const publisherKeyExchange = PublisherKeyExhange ( client , {
14- groupKeys : {
15- ...client . options . groupKeys ,
13+ let publisherKeyExchange : ReturnType < typeof PublisherKeyExhange >
14+
15+ function getPublisherKeyExchange ( ) {
16+ if ( ! publisherKeyExchange ) {
17+ publisherKeyExchange = PublisherKeyExhange ( client , {
18+ groupKeys : {
19+ ...client . options . groupKeys ,
20+ }
21+ } )
1622 }
17- } )
23+ return publisherKeyExchange
24+ }
25+
1826 async function encrypt ( streamMessage : MessageLayer . StreamMessage , stream : Stream ) {
27+ if ( ! client . canEncrypt ( ) ) {
28+ return
29+ }
30+
1931 if (
20- ! publisherKeyExchange . hasAnyGroupKey ( stream . id )
21- && ! stream . requireEncryptedData
32+ ! stream . requireEncryptedData
33+ && ! getPublisherKeyExchange ( ) . hasAnyGroupKey ( stream . id )
2234 ) {
2335 // not needed
2436 return
@@ -27,19 +39,23 @@ export default function Encrypt(client: StreamrClient) {
2739 if ( streamMessage . messageType !== StreamMessage . MESSAGE_TYPES . MESSAGE ) {
2840 return
2941 }
30- const groupKey = await publisherKeyExchange . useGroupKey ( stream . id )
42+ const groupKey = await getPublisherKeyExchange ( ) . useGroupKey ( stream . id )
3143 await EncryptionUtil . encryptStreamMessage ( streamMessage , groupKey )
3244 }
3345
3446 return Object . assign ( encrypt , {
3547 setNextGroupKey ( ...args : Parameters < PublisherKeyExhangeAPI [ 'setNextGroupKey' ] > ) {
36- return publisherKeyExchange . setNextGroupKey ( ...args )
48+ return getPublisherKeyExchange ( ) . setNextGroupKey ( ...args )
3749 } ,
3850 rotateGroupKey ( ...args : Parameters < PublisherKeyExhangeAPI [ 'rotateGroupKey' ] > ) {
39- return publisherKeyExchange . rotateGroupKey ( ...args )
51+ return getPublisherKeyExchange ( ) . rotateGroupKey ( ...args )
52+ } ,
53+ start ( ) {
54+ return getPublisherKeyExchange ( ) . start ( )
4055 } ,
4156 stop ( ) {
42- return publisherKeyExchange . stop ( )
57+ if ( ! publisherKeyExchange ) { return Promise . resolve ( ) }
58+ return getPublisherKeyExchange ( ) . stop ( )
4359 }
4460 } )
4561}
0 commit comments