Chromium Code Reviews| Index: device/u2f/u2f_message.h |
| diff --git a/device/u2f/u2f_message.h b/device/u2f/u2f_message.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d5c80927a5c53e54376f1b6899d3062917e40a44 |
| --- /dev/null |
| +++ b/device/u2f/u2f_message.h |
| @@ -0,0 +1,58 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef DEVICE_U2F_U2F_MESSAGE_H_ |
| +#define DEVICE_U2F_U2F_MESSAGE_H_ |
| + |
| +#include <list> |
| +#include <vector> |
| +#include "base/macros.h" |
| +#include "device/u2f/u2f_packet.h" |
| + |
| +namespace device { |
| + |
| +class U2fMessage : public base::RefCountedThreadSafe<U2fMessage> { |
| + public: |
| + enum u2f_message_type : char { |
|
Reilly Grant (use Gerrit)
2016/11/23 22:21:50
Use an enum class named Type.
I'd rather we use u
Casey Piper
2016/11/29 22:11:15
Done.
|
| + CMD_PING = 0x81, |
| + CMD_ATR = 0x82, |
| + CMD_APDU = 0x83, |
| + CMD_LOCK = 0x84, |
| + CMD_SYSINFO = 0x85, |
| + CMD_INIT = 0x86, |
| + CMD_PROMPT = 0x87, |
| + CMD_WINK = 0x88, |
| + CMD_BLE_UID = 0xb5, |
| + CMD_USB_TEST = 0xb9, |
| + CMD_DFU = 0xba, |
| + CMD_SYNC = 0xbc, |
| + CMD_ERROR = 0xbf, |
| + }; |
| + |
| + static const size_t kInitPacketHeader = 7; |
| + static const size_t kContPacketHeader = 5; |
| + static const size_t kInitPacketDataSize = 57; |
| + static const size_t kContPacketDataSize = 59; |
| + |
| + // Messages are limited to an init packet and 128 cont packets |
| + // Maximum payload length therefore is 64-7 + 128 * (64-5) = 7609 bytes |
| + static const size_t kMaxMessageSize = 7609; |
| + |
| + U2fMessage(const char channel_id[U2fPacket::kChannelIdSize], |
| + const u2f_message_type type, |
| + const std::vector<char> data); |
|
Reilly Grant (use Gerrit)
2016/11/23 22:21:50
Use std::vector<uint8_t> for byte strings.
Casey Piper
2016/11/29 22:11:15
Done.
|
| + |
| + scoped_refptr<net::IOBufferWithSize> GetNextPacket(); |
| + size_t NumPackets(); |
| + |
| + private: |
| + friend class base::RefCountedThreadSafe<U2fMessage>; |
| + std::list<scoped_refptr<U2fPacket>> packets_; |
| + |
| + protected: |
| + virtual ~U2fMessage(); |
| +}; |
| +} |
|
Reilly Grant (use Gerrit)
2016/11/23 22:21:51
} // namespace device
Casey Piper
2016/11/29 22:11:15
Done.
|
| + |
| +#endif // DEVICE_U2F_U2F_MESSAGE_H_ |