Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(537)

Issue 2502103002: Add FIDO U2F message and packet classes (Closed)

Created:
4 years, 1 month ago by Casey Piper
Modified:
3 years, 10 months ago
CC:
chromium-reviews
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Add FIDO U2F message and packet classes FIDO U2F defines initialization packets and continuation packets. This adds class definitions for those packets, and for an enclosing message class. The enclosing message class constructs the initialization and continuation packets based on the payload length, queueing them in a list format for consumption by a device connection. BUG=686306 Committed: https://crrev.com/de3a54f157b87492c1d0757e07c918ba1b2a0c17 Cr-Commit-Position: refs/heads/master@{#438925}

Patch Set 1 #

Patch Set 2 : Add FIDO U2F message and packet classes #

Total comments: 28

Patch Set 3 : Add FIDO U2F message and packet classes #

Total comments: 3

Patch Set 4 : Add FIDO U2F message and packet classes #

Total comments: 46

Patch Set 5 : Add FIDO U2F message and packet classes #

Patch Set 6 : Add FIDO U2F message and packet classes #

Patch Set 7 : Adding constructors and fix issues when creating messages and packets from IOBuffers #

Total comments: 26

Patch Set 8 : Change channel id to uint32_t from uint8_t[4] and fix additional review comments #

Total comments: 14

Patch Set 9 : Fix review comments, change constants to constexpr #

Total comments: 7

Patch Set 10 : Remove const from primitives, fix minor comments #

Patch Set 11 : Update logic for rejecting packets that come in with incorrect channel id #

Patch Set 12 : Add basic fuzzer test, and updated constructor for U2fMessage to account for invalid packets #

Total comments: 18

Patch Set 13 : Update fuzzer test to add continuation packets and fix other review comments #

Total comments: 4

Patch Set 14 : Update fuzzer test to use entire provided buffer, check for null continuation packets before derefe… #

Patch Set 15 : Add includes to u2f_packet #

Total comments: 4

Patch Set 16 : Remove excess includes and add forward declarations for IOBuffer #

Patch Set 17 : Add include to fuzzer after forward declaration #

Patch Set 18 : Add //net dependency to fuzzer in BUILD.gn #

Unified diffs Side-by-side diffs Delta from patch set Stats (+777 lines, -0 lines) Patch
M device/BUILD.gn View 2 chunks +2 lines, -0 lines 0 comments Download
A device/u2f/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +31 lines, -0 lines 0 comments Download
A device/u2f/DEPS View 1 chunk +3 lines, -0 lines 0 comments Download
A device/u2f/u2f_message.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +85 lines, -0 lines 0 comments Download
A device/u2f/u2f_message.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +137 lines, -0 lines 0 comments Download
A device/u2f/u2f_message_fuzzer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +36 lines, -0 lines 0 comments Download
A device/u2f/u2f_message_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +203 lines, -0 lines 0 comments Download
A device/u2f/u2f_packet.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +114 lines, -0 lines 0 comments Download
A device/u2f/u2f_packet.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +166 lines, -0 lines 0 comments Download

Messages

Total messages: 71 (39 generated)
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/20001/device/u2f/BUILD.gn File device/u2f/BUILD.gn (right): https://codereview.chromium.org/2502103002/diff/20001/device/u2f/BUILD.gn#newcode18 device/u2f/BUILD.gn:18: "//components/device_event_log", Unused. https://codereview.chromium.org/2502103002/diff/20001/device/u2f/BUILD.gn#newcode19 device/u2f/BUILD.gn:19: "//device/base", Unused. https://codereview.chromium.org/2502103002/diff/20001/device/u2f/BUILD.gn#newcode24 device/u2f/BUILD.gn:24: static_library("test_support") ...
4 years ago (2016-11-23 22:21:51 UTC) #3
Casey Piper
https://codereview.chromium.org/2502103002/diff/20001/device/u2f/BUILD.gn File device/u2f/BUILD.gn (right): https://codereview.chromium.org/2502103002/diff/20001/device/u2f/BUILD.gn#newcode18 device/u2f/BUILD.gn:18: "//components/device_event_log", On 2016/11/23 22:21:50, Reilly Grant wrote: > Unused. ...
4 years ago (2016-11-29 22:11:15 UTC) #4
Casey Piper
https://codereview.chromium.org/2502103002/diff/40001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/40001/device/u2f/u2f_message.cc#newcode12 device/u2f/u2f_message.cc:12: const char channel_id[U2fPacket::kChannelIdSize], Should I change all char's to ...
4 years ago (2016-11-29 22:17:56 UTC) #5
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/40001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/40001/device/u2f/u2f_message.cc#newcode12 device/u2f/u2f_message.cc:12: const char channel_id[U2fPacket::kChannelIdSize], On 2016/11/29 at 22:17:56, piper wrote: ...
4 years ago (2016-11-29 22:51:48 UTC) #6
Casey Piper
https://codereview.chromium.org/2502103002/diff/40001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/40001/device/u2f/u2f_message.cc#newcode12 device/u2f/u2f_message.cc:12: const char channel_id[U2fPacket::kChannelIdSize], On 2016/11/29 22:51:48, Reilly Grant wrote: ...
4 years ago (2016-11-30 17:37:04 UTC) #7
juanlang (chromium.org)
Looking good, Casey! I always have comments, so here are mine. https://codereview.chromium.org/2502103002/diff/60001/device/u2f/u2f_message.h File device/u2f/u2f_message.h (right): ...
4 years ago (2016-11-30 19:41:33 UTC) #9
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/60001/device/u2f/u2f_message.h File device/u2f/u2f_message.h (right): https://codereview.chromium.org/2502103002/diff/60001/device/u2f/u2f_message.h#newcode58 device/u2f/u2f_message.h:58: const std::vector<uint8_t>& data); Keep these definitions in order with ...
4 years ago (2016-11-30 20:53:47 UTC) #10
Casey Piper
https://codereview.chromium.org/2502103002/diff/60001/device/u2f/u2f_message.h File device/u2f/u2f_message.h (right): https://codereview.chromium.org/2502103002/diff/60001/device/u2f/u2f_message.h#newcode19 device/u2f/u2f_message.h:19: CMD_ATR = 0x82, On 2016/11/30 19:41:32, juanlang (chromium.org) wrote: ...
4 years ago (2016-11-30 22:05:47 UTC) #11
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/60001/device/u2f/u2f_message_unittest.cc File device/u2f/u2f_message_unittest.cc (right): https://codereview.chromium.org/2502103002/diff/60001/device/u2f/u2f_message_unittest.cc#newcode47 device/u2f/u2f_message_unittest.cc:47: ASSERT_EQ(init_packet->GetBuffer()->data()[index++], (char)cmd); On 2016/11/30 at 22:05:46, piper wrote: > ...
4 years ago (2016-11-30 22:18:53 UTC) #12
juanlang (chromium.org)
Hi Casey, some more comments to help my understanding. Thanks! https://codereview.chromium.org/2502103002/diff/120001/device/u2f/u2f_message.h File device/u2f/u2f_message.h (right): https://codereview.chromium.org/2502103002/diff/120001/device/u2f/u2f_message.h#newcode28 ...
4 years ago (2016-12-07 18:29:26 UTC) #13
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/120001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/120001/device/u2f/u2f_message.cc#newcode129 device/u2f/u2f_message.cc:129: it != end(); ++it) { Since this is internal ...
4 years ago (2016-12-07 22:33:48 UTC) #14
Casey Piper
https://codereview.chromium.org/2502103002/diff/120001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/120001/device/u2f/u2f_message.cc#newcode129 device/u2f/u2f_message.cc:129: it != end(); ++it) { On 2016/12/07 22:33:48, Reilly ...
4 years ago (2016-12-09 00:15:54 UTC) #15
juanlang (chromium.org)
lgtm for FIDO stuff.
4 years ago (2016-12-09 00:46:38 UTC) #16
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/140001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/140001/device/u2f/u2f_message.cc#newcode119 device/u2f/u2f_message.cc:119: return remaining_size_ == 0; This method is never called ...
4 years ago (2016-12-09 01:19:43 UTC) #17
Casey Piper
https://codereview.chromium.org/2502103002/diff/140001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/140001/device/u2f/u2f_message.cc#newcode119 device/u2f/u2f_message.cc:119: return remaining_size_ == 0; On 2016/12/09 01:19:43, Reilly Grant ...
4 years ago (2016-12-09 18:56:50 UTC) #18
Reilly Grant (use Gerrit)
I suggest writing a fuzzer for this packet parsing code similar to this one: https://cs.chromium.org/chromium/src/device/usb/usb_descriptors_fuzzer.cc ...
4 years ago (2016-12-09 20:55:20 UTC) #19
Casey Piper
https://codereview.chromium.org/2502103002/diff/160001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/160001/device/u2f/u2f_message.cc#newcode32 device/u2f/u2f_message.cc:32: : packets_(), remaining_size_(0), channel_id_() { On 2016/12/09 20:55:20, Reilly ...
4 years ago (2016-12-09 21:43:38 UTC) #20
Casey Piper
https://codereview.chromium.org/2502103002/diff/160001/device/u2f/u2f_message.cc File device/u2f/u2f_message.cc (right): https://codereview.chromium.org/2502103002/diff/160001/device/u2f/u2f_message.cc#newcode102 device/u2f/u2f_message.cc:102: U2fContinuationPacket::CreateFromSerializedData(buf, &remaining_size_); On 2016/12/09 21:43:38, piper wrote: > On ...
4 years ago (2016-12-09 21:49:14 UTC) #21
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/220001/device/u2f/BUILD.gn File device/u2f/BUILD.gn (right): https://codereview.chromium.org/2502103002/diff/220001/device/u2f/BUILD.gn#newcode29 device/u2f/BUILD.gn:29: libfuzzer_options = [ "max_len=65" ] Set this higher so ...
4 years ago (2016-12-10 00:02:45 UTC) #22
Casey Piper
https://codereview.chromium.org/2502103002/diff/220001/device/u2f/BUILD.gn File device/u2f/BUILD.gn (right): https://codereview.chromium.org/2502103002/diff/220001/device/u2f/BUILD.gn#newcode29 device/u2f/BUILD.gn:29: libfuzzer_options = [ "max_len=65" ] On 2016/12/10 00:02:44, Reilly ...
4 years ago (2016-12-10 01:38:03 UTC) #23
Reilly Grant (use Gerrit)
https://codereview.chromium.org/2502103002/diff/240001/device/u2f/u2f_message_fuzzer.cc File device/u2f/u2f_message_fuzzer.cc (right): https://codereview.chromium.org/2502103002/diff/240001/device/u2f/u2f_message_fuzzer.cc#newcode22 device/u2f/u2f_message_fuzzer.cc:22: while (remaining_buffer > packet_size) { This means we never ...
4 years ago (2016-12-10 01:52:02 UTC) #24
Casey Piper
https://codereview.chromium.org/2502103002/diff/240001/device/u2f/u2f_message_fuzzer.cc File device/u2f/u2f_message_fuzzer.cc (right): https://codereview.chromium.org/2502103002/diff/240001/device/u2f/u2f_message_fuzzer.cc#newcode22 device/u2f/u2f_message_fuzzer.cc:22: while (remaining_buffer > packet_size) { On 2016/12/10 01:52:02, Reilly ...
4 years ago (2016-12-12 18:01:42 UTC) #25
Reilly Grant (use Gerrit)
lgtm
4 years ago (2016-12-12 18:37:55 UTC) #26
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2502103002/280001
4 years ago (2016-12-12 23:40:49 UTC) #40
commit-bot: I haz the power
Try jobs failed on following builders: chromium_presubmit on master.tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presubmit/builds/324242)
4 years ago (2016-12-13 00:13:18 UTC) #42
pauljensen
net/base DEPS lgtm https://codereview.chromium.org/2502103002/diff/280001/device/u2f/u2f_message.h File device/u2f/u2f_message.h (right): https://codereview.chromium.org/2502103002/diff/280001/device/u2f/u2f_message.h#newcode12 device/u2f/u2f_message.h:12: #include "device/u2f/u2f_packet.h" namespace net { class ...
4 years ago (2016-12-15 01:59:22 UTC) #45
Casey Piper
https://codereview.chromium.org/2502103002/diff/280001/device/u2f/u2f_message.h File device/u2f/u2f_message.h (right): https://codereview.chromium.org/2502103002/diff/280001/device/u2f/u2f_message.h#newcode12 device/u2f/u2f_message.h:12: #include "device/u2f/u2f_packet.h" On 2016/12/15 01:59:22, pauljensen wrote: > namespace ...
4 years ago (2016-12-15 18:34:17 UTC) #46
Casey Piper
4 years ago (2016-12-15 18:34:20 UTC) #47
pauljensen
net/base DEPS still lgtm
4 years ago (2016-12-15 19:18:55 UTC) #56
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2502103002/340001
4 years ago (2016-12-15 21:12:54 UTC) #63
commit-bot: I haz the power
Committed patchset #18 (id:340001)
4 years ago (2016-12-15 21:21:27 UTC) #66
commit-bot: I haz the power
4 years ago (2016-12-15 21:23:38 UTC) #68
Message was sent while issue was closed.
Patchset 18 (id:??) landed as
https://crrev.com/de3a54f157b87492c1d0757e07c918ba1b2a0c17
Cr-Commit-Position: refs/heads/master@{#438925}

Powered by Google App Engine
This is Rietveld 408576698