DTLS patch
Haiyang Yin <[email protected]> Sat, 30 May 2015 13:19:53 -0400
| Newsgroups | gmane.comp.lang.erlang.patches |
|---|---|
| Message-ID | <CAEVsv9Wy3V8AokejZ6VhigMWxXjTKjNCzL4wkSMjNQjq7vm+3Q@mail.gmail.com> |
--f46d043c070014fff505174fcd49 Content-Type: multipart/alternative; boundary=f46d043c070014ffef05174fcd47 --f46d043c070014ffef05174fcd47 Content-Type: text/plain; charset=UTF-8 Hello, We have a server application needs DTLS protocol support. But the current OTP release still has an incomplete DTLS implementation. So we create this patch to include DTLS implementation based on current well-designed ssl architecture (which we don't consider this as a new feature, just a patch). What we have added are: 1. DTLS transport layer on top of gen_udp 2. DTLS flight retransmission and timeout mechanism 3. DTLS record fragmentation/defragmentation handling It looks good that the patch can work with OpenSSL 1.0.2a release. If no one is working on dtls now, we would like to have this patch to be reviewed. Following is the repository contains the patch: https://github.com/haiyang-yin/otp To fetch the patch, refer to following git commands: git clone https://github.com/haiyang-yin/otp.git git checkout dtls_patch Here is code review location: https://github.com/haiyang-yin/otp/compare/maint...haiyang-yin:dtls_patch There are two demo programs to show how dtls client/server works in the attachments. Feel free to let me know if further information is needed. Thank you, /Haiyang --f46d043c070014ffef05174fcd47 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Hello,<div><br></div><div>We have a server application nee= ds DTLS protocol support. But the current OTP release still has an incomple= te DTLS implementation. So we create this patch to include DTLS implementat= ion based on current well-designed ssl architecture (which we don't con= sider this as a new feature, just a patch). What we have added are:</div><d= iv><br></div><div>1. DTLS transport layer on top of gen_udp</div><div>2. DT= LS flight retransmission and timeout mechanism</div><div>3. DTLS record fra= gmentation/defragmentation handling</div><div><br></div><div>It looks good = that the patch can work with OpenSSL 1.0.2a release. If no one is working o= n dtls now, we would like to have this patch to be reviewed.</div><div><br>= </div><div>Following is the repository contains the patch:</div><div><br></= div><div><a href=3D"https://github.com/haiyang-yin/otp">https://github.com/= haiyang-yin/otp</a><br></div><div><br></div><div>To fetch the patch, refer = to following git commands:</div><div><br></div><div>git clone <a href=3D"ht= tps://github.com/haiyang-yin/otp.git">https://github.com/haiyang-yin/otp.gi= t</a></div><div>git checkout dtls_patch</div><div><br></div><div>Here is co= de review location:</div><div><br></div><div><a href=3D"https://github.com/= haiyang-yin/otp/compare/maint...haiyang-yin:dtls_patch">https://github.com/= haiyang-yin/otp/compare/maint...haiyang-yin:dtls_patch</a><br></div><div><b= r></div><div>There are two demo programs to show how dtls client/server wor= ks in the attachments.</div><div><br></div><div>Feel free to let me know if= further information is needed.</div><div><br></div><div>Thank you,</div><d= iv><br></div><div>/Haiyang</div><div><br></div></div> --f46d043c070014ffef05174fcd47-- --f46d043c070014fff505174fcd49 Content-Type: application/octet-stream; name="dumpd_dtls_c.erl" Content-Disposition: attachment; filename="dumpd_dtls_c.erl" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iabaq0xy0 LW1vZHVsZShkdW1wZF9kdGxzX2MpLgotdmVyc2lvbigiMC4xIikuCi1hdXRob3IoImhhaXlhbmcu eWluQHB1cnBsZWh5YWNpbnRoLmNvbSIpLgoKLWV4cG9ydChbc3RhcnQvMSxsaXN0ZW4vM10pLgoK LWRlZmluZShERUZBVUxUX1NTTE9QVFMsIFsKICAgIHt2ZXJpZnksIDF9LAogICAgJXt2ZXJpZnks IDB9LAogICAge2FjdGl2ZSwgZmFsc2V9LAogICAge2NlcnRmaWxlLCAiLi9jbGllbnQucGVtIn0s CiAgICB7a2V5ZmlsZSwgIi4vY2xpZW50X2tleS5wZW0ifSwKICAgIHtjYWNlcnRmaWxlLCAiLi9j YWNlcnQucGVtIn0sCiAgICB7Y2lwaGVycywgW3tlY2RoZV9lY2RzYSxhZXNfMjU2X2NiYyxzaGEz ODR9LAogICAgICAgICAgICAgICB7ZWNkaGVfcnNhLGFlc18yNTZfY2JjLHNoYTM4NH0sCiAgICAg ICAgICAgICAgIHtlY2RoX2VjZHNhLGFlc18yNTZfY2JjLHNoYTM4NH0sCiAgICAgICAgICAgICAg IHtlY2RoX3JzYSxhZXNfMjU2X2NiYyxzaGEzODR9LAogICAgICAgICAgICAgICB7ZGhlX3JzYSxh ZXNfMjU2X2NiYyxzaGEyNTZ9LAogICAgICAgICAgICAgICB7ZGhlX2RzcyxhZXNfMjU2X2NiYyxz aGEyNTZ9LAogICAgICAgICAgICAgICB7cnNhLGFlc18yNTZfY2JjLHNoYTI1Nn0sCiAgICAgICAg ICAgICAgIHtlY2RoZV9lY2RzYSxhZXNfMTI4X2NiYyxzaGEyNTZ9LAogICAgICAgICAgICAgICB7 ZWNkaGVfcnNhLGFlc18xMjhfY2JjLHNoYTI1Nn0sCiAgICAgICAgICAgICAgIHtlY2RoX2VjZHNh LGFlc18xMjhfY2JjLHNoYTI1Nn0sCiAgICAgICAgICAgICAgIHtlY2RoX3JzYSxhZXNfMTI4X2Ni YyxzaGEyNTZ9LAogICAgICAgICAgICAgICB7ZGhlX3JzYSxhZXNfMTI4X2NiYyxzaGEyNTZ9LAog ICAgICAgICAgICAgICB7ZGhlX2RzcyxhZXNfMTI4X2NiYyxzaGEyNTZ9LAogICAgICAgICAgICAg ICB7cnNhLGFlc18xMjhfY2JjLHNoYTI1Nn0sCiAgICAgICAgICAgICAgIHtlY2RoZV9lY2RzYSxh ZXNfMjU2X2NiYyxzaGF9LAogICAgICAgICAgICAgICB7ZWNkaGVfcnNhLGFlc18yNTZfY2JjLHNo YX0sCiAgICAgICAgICAgICAgIHtkaGVfcnNhLGFlc18yNTZfY2JjLHNoYX0sCiAgICAgICAgICAg ICAgIHtkaGVfZHNzLGFlc18yNTZfY2JjLHNoYX0sCiAgICAgICAgICAgICAgIHtlY2RoX2VjZHNh LGFlc18yNTZfY2JjLHNoYX0sCiAgICAgICAgICAgICAgIHtlY2RoX3JzYSxhZXNfMjU2X2NiYyxz aGF9LAogICAgICAgICAgICAgICB7cnNhLGFlc18yNTZfY2JjLHNoYX0sCiAgICAgICAgICAgICAg IHtlY2RoZV9lY2RzYSwnM2Rlc19lZGVfY2JjJyxzaGF9LAogICAgICAgICAgICAgICB7ZWNkaGVf cnNhLCczZGVzX2VkZV9jYmMnLHNoYX0sCiAgICAgICAgICAgICAgIHtkaGVfcnNhLCczZGVzX2Vk ZV9jYmMnLHNoYX0sCiAgICAgICAgICAgICAgIHtkaGVfZHNzLCczZGVzX2VkZV9jYmMnLHNoYX0s CiAgICAgICAgICAgICAgIHtlY2RoX2VjZHNhLCczZGVzX2VkZV9jYmMnLHNoYX1dfSwKICAgIHtz ZWN1cmVfcmVuZWdvdGlhdGUsIHRydWV9LAogICAge2ZhaWxfaWZfbm9fcGVlcl9jZXJ0LCB0cnVl fSwKICAgIHtkZXB0aCwgMn0sCiAgICB7cmV1c2VhZGRyLCB0cnVlfQogICAgXSkuCgolLWRlZmlu ZShURVNUX0FERFIsIHsxMjcsMCwwLDF9KS4KJS1kZWZpbmUoVEVTVF9BRERSLCB7MTkyLDE2OCwx LDExfSkuCi1kZWZpbmUoVEVTVF9QT1JULCA0MDAwKS4KLWRlZmluZShTTkRfVElNRVIsIDIwMDAp LgotZGVmaW5lKFRFU1RfTElORV9EQVQsICJUaGlzIGlzIGEgbG9uZyB0ZXN0IGxvZyBsaW5lIGlu Zm8gdG8gZGVtb25zdHJhdGUgZHRscyB0cmFuc3BvcnQgdHJhZmZpYy4uLi4uLi4uIikuCgpzdGFy dChBZGRyKS0+CiAgICBzc2w6c3RhcnQoKSwKICAgIGxpc3RlbihBZGRyLCA/VEVTVF9QT1JULCA/ REVGQVVMVF9TU0xPUFRTKS4KCmxpc3RlbihDbGllbnRBZGRyLCBDbGllbnRQb3J0LCBPcHRzKSAt PgogICAgY2FzZSBkdGxzOmNvbm5lY3QoQ2xpZW50QWRkciwgQ2xpZW50UG9ydCwgT3B0cykgb2YK ICAgIHtvaywgU29ja2V0fSAtPgogICAgICAgICAgICBpbzpmb3JtYXQoIk5vdyBjb25uZWN0ZWQg dG8gfnA6fnAufm4iLAogICAgICAgICAgICAgICAgICBbQ2xpZW50QWRkciwgQ2xpZW50UG9ydF0p LAogICAgICAgICAgICBwcm9jZXNzX2ZsYWcodHJhcF9leGl0LCB0cnVlKSwKICAgICAgICAgICAg JSUgd2Ugd2lsbCB1c2UgYWN0aXZlIHBvbGwgbWV0aG9kLCBzbyBzZXQgYWN0aXZlIG9wdGlvbiB0 byBmYWxzZQogICAgICAgICAgICBzc2w6c2V0b3B0cyhTb2NrZXQsIFsge2FjdGl2ZSwgZmFsc2V9 IF0pLAogICAgICAgICAgICBzcGF3bl9saW5rKGZ1bigpIC0+IHJlYWRfbG9vcChTb2NrZXQpIGVu ZCksIAogICAgICAgICAgICBUMSA9IGVybGFuZzpzdGFydF90aW1lcig/U05EX1RJTUVSLCBzZWxm KCksIHRpbWVvdXRfZm9yX3NlbmQpLAogICAgICAgICAgICBsb29wKFNvY2tldCwgVDEpOwogICAg e2Vycm9yLCBSZWFzb259IC0+CiAgICAgICAgaW86Zm9ybWF0KCJkdGxzOmxpc3RlbiByZXR1cm5l ZCBlcnJvciBjb2RlIG9mIH5wIiwgW1JlYXNvbl0pCiAgIGVuZC4KCmxvb3AoU29ja2V0LCBTbmRU bXJSZWYpIC0+CiAgICByZWNlaXZlCiAgICAgICAge2Vycm9yLCBSZWFzb259IC0+CiAgICAgICAg ICAgIE1zZyA9IGlvX2xpYjpmb3JtYXQoIkVycm9yLCBzc2w6dHJhbnNwb3J0X2FjY2VwdCByZXR1 cm5lZCB+cCIsIFtSZWFzb25dKSwKICAgICAgICAgICAgZXJyb3JfbG9nZ2VyOmVycm9yX21zZyhN c2cpLAogICAgICAgICAgICBleGl0KE1zZyk7CiAgICAgICAgJXtzc2wsIF8sIERhdGF9IC0+CiAg ICAgICAgJSAgICBpbzpmb3JtYXQoImRhdGEgcmVjZWl2ZWQgfnAufm4iLCBbRGF0YV0pLAogICAg ICAgICUgICAgZHRsc19yZWFkKFNvY2tldCwgU25kVG1yUmVmKTsKICAgICAgICB7dGltZW91dCwg U25kVG1yUmVmLCB0aW1lb3V0X2Zvcl9zZW5kfSAtPgogICAgICAgICAgICBzc2w6c2VuZChTb2Nr ZXQsID9URVNUX0xJTkVfREFUKSwKICAgICAgICAgICAgTmV3VDEgPSBlcmxhbmc6c3RhcnRfdGlt ZXIoP1NORF9USU1FUiwgc2VsZigpLCB0aW1lb3V0X2Zvcl9zZW5kKSwKICAgICAgICAgICAgbG9v cChTb2NrZXQsIE5ld1QxKQogICAgZW5kLgoKcmVhZF9sb29wKFNvY2tldCkgLT4KICAgIGNhc2Ug c3NsOnJlY3YoU29ja2V0LCAwKSBvZgogICAgICAgIHtvaywgRGF0YX0gLT4KICAgICAgICAgICAg aW86Zm9ybWF0KCJTb2NrZXQgcmVjZWl2ZWQgZGF0YS4uLn5ufnB+biIsIFtEYXRhXSksCiAgICAg ICAgICAgIHJlYWRfbG9vcChTb2NrZXQpOwogICAgICAgIHtlcnJvciwgY2xvc2VkfSAtPgogICAg ICAgICAgICBvawogICAgZW5kLgoK --f46d043c070014fff505174fcd49 Content-Type: application/octet-stream; name="dumpd_dtls.erl" Content-Disposition: attachment; filename="dumpd_dtls.erl" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iabaqsm21 LW1vZHVsZShkdW1wZF9kdGxzKS4KLXZlcnNpb24oIjAuMSIpLgotYXV0aG9yKCJoYWl5YW5nLnlp bkBwdXJwbGVoeWFjaW50aC5jb20iKS4KLWV4cG9ydChbc3RhcnQvMCxsaXN0ZW4vMl0pLgoKLWRl ZmluZShERUZBVUxUX1NTTE9QVFMsIFsKICAgICUge3ZlcmlmeSwgMX0sCiAgICB7dmVyaWZ5LCAw fSwKICAgICV7YWN0aXZlLCBvbmNlfSwKICAgIHtjZXJ0ZmlsZSwgIi4vc2VydmVyLnBlbSJ9LAog ICAge2tleWZpbGUsICIuL3NlcnZlcl9rZXkucGVtIn0sCiAgICB7Y2FjZXJ0ZmlsZSwgIi4vY2Fj ZXJ0LnBlbSJ9LAogICAge2NpcGhlcnMsIFt7ZWNkaGVfZWNkc2EsYWVzXzI1Nl9jYmMsc2hhMzg0 fSwKICAgICAgICAgICAgICAge2VjZGhlX3JzYSxhZXNfMjU2X2NiYyxzaGEzODR9LAogICAgICAg ICAgICAgICB7ZWNkaF9lY2RzYSxhZXNfMjU2X2NiYyxzaGEzODR9LAogICAgICAgICAgICAgICB7 ZWNkaF9yc2EsYWVzXzI1Nl9jYmMsc2hhMzg0fSwKICAgICAgICAgICAgICAge2RoZV9yc2EsYWVz XzI1Nl9jYmMsc2hhMjU2fSwKICAgICAgICAgICAgICAge2RoZV9kc3MsYWVzXzI1Nl9jYmMsc2hh MjU2fSwKICAgICAgICAgICAgICAge3JzYSxhZXNfMjU2X2NiYyxzaGEyNTZ9LAogICAgICAgICAg ICAgICB7ZWNkaGVfZWNkc2EsYWVzXzEyOF9jYmMsc2hhMjU2fSwKICAgICAgICAgICAgICAge2Vj ZGhlX3JzYSxhZXNfMTI4X2NiYyxzaGEyNTZ9LAogICAgICAgICAgICAgICB7ZWNkaF9lY2RzYSxh ZXNfMTI4X2NiYyxzaGEyNTZ9LAogICAgICAgICAgICAgICB7ZWNkaF9yc2EsYWVzXzEyOF9jYmMs c2hhMjU2fSwKICAgICAgICAgICAgICAge2RoZV9yc2EsYWVzXzEyOF9jYmMsc2hhMjU2fSwKICAg ICAgICAgICAgICAge2RoZV9kc3MsYWVzXzEyOF9jYmMsc2hhMjU2fSwKICAgICAgICAgICAgICAg e3JzYSxhZXNfMTI4X2NiYyxzaGEyNTZ9LAogICAgICAgICAgICAgICB7ZWNkaGVfZWNkc2EsYWVz XzI1Nl9jYmMsc2hhfSwKICAgICAgICAgICAgICAge2VjZGhlX3JzYSxhZXNfMjU2X2NiYyxzaGF9 LAogICAgICAgICAgICAgICB7ZGhlX3JzYSxhZXNfMjU2X2NiYyxzaGF9LAogICAgICAgICAgICAg ICB7ZGhlX2RzcyxhZXNfMjU2X2NiYyxzaGF9LAogICAgICAgICAgICAgICB7ZWNkaF9lY2RzYSxh ZXNfMjU2X2NiYyxzaGF9LAogICAgICAgICAgICAgICB7ZWNkaF9yc2EsYWVzXzI1Nl9jYmMsc2hh fSwKICAgICAgICAgICAgICAge3JzYSxhZXNfMjU2X2NiYyxzaGF9LAogICAgICAgICAgICAgICB7 ZWNkaGVfZWNkc2EsJzNkZXNfZWRlX2NiYycsc2hhfSwKICAgICAgICAgICAgICAge2VjZGhlX3Jz YSwnM2Rlc19lZGVfY2JjJyxzaGF9LAogICAgICAgICAgICAgICB7ZGhlX3JzYSwnM2Rlc19lZGVf Y2JjJyxzaGF9LAogICAgICAgICAgICAgICB7ZGhlX2RzcywnM2Rlc19lZGVfY2JjJyxzaGF9LAog ICAgICAgICAgICAgICB7ZWNkaF9lY2RzYSwnM2Rlc19lZGVfY2JjJyxzaGF9XX0sCiAgICB7c2Vj dXJlX3JlbmVnb3RpYXRlLCB0cnVlfSwKICAgIHtmYWlsX2lmX25vX3BlZXJfY2VydCwgdHJ1ZX0s CiAgICB7ZGVwdGgsIDJ9LAogICAge3JldXNlYWRkciwgdHJ1ZX0KICAgIF0pLgoKLWRlZmluZShE RUZBVUxUX1BPUlQsIDQwMDApLgoKc3RhcnQoKS0+CiAgICBzc2w6c3RhcnQoKSwKICAgIGxpc3Rl big/REVGQVVMVF9QT1JULCA/REVGQVVMVF9TU0xPUFRTKS4KCmxpc3RlbihQb3J0LCBPcHRzKSAt PgogICAgY2FzZSBkdGxzOmxpc3RlbihQb3J0LCBPcHRzKSBvZgogICAge29rLCBMU29ja2V0fSAt PgogICAgICAgIGR0bHNfYWNjZXB0KExTb2NrZXQpOwogICAge2Vycm9yLCBSZWFzb259IC0+CiAg ICAgICAgaW86Zm9ybWF0KCJkdGxzOmxpc3RlbiByZXR1cm5lZCBlcnJvciBjb2RlIG9mIH5wIiwg W1JlYXNvbl0pCiAgIGVuZC4KCmR0bHNfYWNjZXB0KExTb2NrZXQpIC0+CiAgICBjYXNlIGR0bHM6 YWNjZXB0KExTb2NrZXQpIG9mCiAgICAgICAge29rLCBUU29ja2V0fSAtPgogICAgICAgICAgICAg cHJvY2Vzc19mbGFnKHRyYXBfZXhpdCwgdHJ1ZSksCiAgICAgICAgICAgICBzcGF3bl9saW5rKGZ1 bigpIC0+IGRvX3Rsc19oYW5kc2hha2UoVFNvY2tldCkgZW5kKSwKICAgICAgICAgICAgIGR0bHNf YWNjZXB0KExTb2NrZXQpOwogICAgVHJhbnNwb3J0RXJyIC0+IAogICAgICAgIE1zZyA9IGlvX2xp Yjpmb3JtYXQoIkVycm9yLCBzc2w6dHJhbnNwb3J0X2FjY2VwdCByZXR1cm5lZCB+cCIsIFtUcmFu c3BvcnRFcnJdKSwKICAgICAgICBlcnJvcl9sb2dnZXI6ZXJyb3JfbXNnKE1zZyksCiAgICAgICAg ZXhpdChNc2cpCiAgICBlbmQuCgpkb190bHNfaGFuZHNoYWtlKFNvY2tldCkgLT4KICAgIHtvaywg e0FkZHIsIFBvcnR9fSA9IHNzbDpwZWVybmFtZShTb2NrZXQpLAogICAgY2FzZSBkdGxzOmhhbmRz aGFrZShTb2NrZXQpIG9mCiAgICBvayAtPgogICAgICAgIGlvOmZvcm1hdCgiWyB+cCBdIGRvX3Rs c19oYW5kc2hha2U6IEFkZHIgfnAgUG9ydCB+cCwgc2VsZiB+cC5+biIsIFs/TU9EVUxFLCBBZGRy LCBQb3J0LCBzZWxmKCldKSwKICAgICAgICBwcm9jZXNzX2ZsYWcodHJhcF9leGl0LCB0cnVlKSwK ICAgICAgICBzc2w6Y29udHJvbGxpbmdfcHJvY2VzcyhTb2NrZXQsIHNlbGYoKSksCiAgICAgICAg bG9vcChTb2NrZXQpOwogICAgU3NsRXJyIC0+IAogICAgICAgIE1zZyA9IGlvX2xpYjpmb3JtYXQo IkVycm9yLCBkdGxzOmhhbmRzaGFrZSByZXR1cm5lZCB+cCIsIFtTc2xFcnJdKSwKICAgICAgICBl cnJvcl9sb2dnZXI6ZXJyb3JfbXNnKE1zZyksCiAgICAgICAgZXhpdChNc2cpCiAgICBlbmQuCgol IEVjaG8gYmFjayB3aGF0ZXZlciBkYXRhIHdlIHJlY2VpdmUgb24gU29ja2V0Lgpsb29wKFNvY2tl dCkgLT4KICAgIHJlY2VpdmUKICAgICAgICB7ZXJyb3IsIFJlYXNvbn0gLT4KICAgICAgICAgICAg TXNnID0gaW9fbGliOmZvcm1hdCgiRXJyb3IsIHNzbDp0cmFuc3BvcnRfYWNjZXB0IHJldHVybmVk IH5wIiwgW1JlYXNvbl0pLAogICAgICAgICAgICBlcnJvcl9sb2dnZXI6ZXJyb3JfbXNnKE1zZyks CiAgICAgICAgICAgIGV4aXQoTXNnKTsKICAgICAgICB7c3NsLCBfLCBEYXRhfSAtPgogICAgICAg ICAgICBpbzpmb3JtYXQoIlsgfnAgXWRhdGEgcmVjZWl2ZWQgfnAufm4iLCBbP01PRFVMRSwgRGF0 YV0pLAogICAgICAgICAgICBsb29wKFNvY2tldCk7CiAgICAgICAgICAgICVsb29wKFNvY2tldCwg U25kVG1yUmVmKTsKICAgICAgICBPdGhlciAtPgogICAgICAgICAgICBpbzpmb3JtYXQoIlsgfnAg XSBvdGhlciB+cC5+biIsIFs/TU9EVUxFLCBPdGhlcl0pCiAgICBlbmQuCg== --f46d043c070014fff505174fcd49 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ erlang-patches mailing list [email protected] http://erlang.org/mailman/listinfo/erlang-patches --f46d043c070014fff505174fcd49--