No Documentation on Particle's use of the CoAP Protocol

There is no documentation on Particle’s use of the CoAP Protocol. I would like to know if there is any documentation on Particle’s use of the CoAP protocol. I looked on the Particle docs but I didn’t find anything. Does Particle use a custom implementation of the CoAP protocol such as using a custom RFC? Why did Particle decide to change the CoAP protocol to use tcp instead of udp(the default option)?

Most people don’t need to dig that far down in, so I’m not sure there is documentation for it, but I’d start here:

1 Like

Thanks but it still doesn’t answer my question of why did Particle decide to change the CoAP protocol to use tcp instead of udp(the default option)?

My plan is to fuzz the protocol so the more information I have the better I can fuzz the protocol. If I find any bugs I will report them to Particle. Though that answer my question why did Particle decide to change the CoAP protocol to use tcp instead of udp(the default option)? It would be nice if Particle had some documentation like this http://tools.ietf.org/html/rfc7252 . It doesn’t matter how good you make the protocol without good documentation it’s no good.

  • Particle should add more documentation
  • Keep the documentation of the protocol the same
  • I don’t care

0 voters

TCP was chosen because it was the right tool for the job to provide a reliable communications channel between the device and the cloud.

I don’t understand how knowing why a decision was made (i.e. to use TCP) will change how you fuzz the protocol. UDP is only a recommended binding - CoAP can run on top of many transports. If TCP were the default, you’d still fuzz it in the same way.

Apart from the initial handshake, you’ll have little luck fuzzing the protocol since it’s encrypted so only random bit manipulations make any sense, unless you plan to also fuzz things before encryption and after decryption on the client and server side.

The documentation for the handshake is here - https://github.com/spark/spark-protocol/blob/master/js/lib/Handshake.js#L28

1 Like

I was just wondering. Dumb fuzzing it is!