MCPcopy Create free account
hub / github.com/DOSNetwork/core / decryptPipe

Method decryptPipe

p2p/client.go:255–293  ·  view source on GitHub ↗
(ciphertext chan []byte)

Source from the content-addressed store, hash-verified

253}
254
255func (c *client) decryptPipe(ciphertext chan []byte) (out chan []byte) {
256 out = make(chan []byte)
257
258 go func() {
259 defer close(out)
260 for {
261 var result []byte
262 select {
263 case <-c.ctx.Done():
264 return
265 case text, ok := <-ciphertext:
266 if ok {
267 var block cipher.Block
268 var aesgcm cipher.AEAD
269 var err error
270 if block, err = aes.NewCipher(c.dhKey); err != nil {
271 c.reportError(errors.Errorf("client decryptPipe: %w", err))
272 continue
273 }
274
275 if aesgcm, err = cipher.NewGCM(block); err != nil {
276 c.reportError(errors.Errorf("client decryptPipe: %w", err))
277 continue
278 }
279
280 if result, err = aesgcm.Open(nil, c.dhNonce, text, nil); err != nil {
281 c.reportError(errors.Errorf("client decryptPipe: %w", err))
282 continue
283 }
284 select {
285 case out <- result:
286 case <-c.ctx.Done():
287 }
288 }
289 }
290 }
291 }()
292 return out
293}
294
295func (c *client) dispatch(replyMsg, receivedMsg chan P2PMessage) (out chan p2pRequest) {
296 out = make(chan p2pRequest)

Callers 1

runMethod · 0.95

Calls 1

reportErrorMethod · 0.95

Tested by

no test coverage detected