| 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..bb6d6536f47d8fce1d4ee9510d7d19dc3465330f
|
| --- /dev/null
|
| +++ b/device/u2f/u2f_message.h
|
| @@ -0,0 +1,65 @@
|
| +// 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 class Type : uint8_t {
|
| + 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;
|
| +
|
| + static scoped_refptr<U2fMessage> Create(
|
| + const char channel_id[U2fPacket::kChannelIdSize],
|
| + const Type type,
|
| + const std::vector<uint8_t>& data);
|
| +
|
| + scoped_refptr<net::IOBufferWithSize> GetNextPacket();
|
| + size_t NumPackets();
|
| +
|
| + std::list<scoped_refptr<U2fPacket>>::const_iterator begin();
|
| + std::list<scoped_refptr<U2fPacket>>::const_iterator end();
|
| +
|
| + private:
|
| + friend class base::RefCountedThreadSafe<U2fMessage>;
|
| + std::list<scoped_refptr<U2fPacket>> packets_;
|
| + U2fMessage(const char channel_id[U2fPacket::kChannelIdSize],
|
| + const Type type,
|
| + const std::vector<uint8_t>& data);
|
| +
|
| + protected:
|
| + virtual ~U2fMessage();
|
| +};
|
| +} // namespace device
|
| +
|
| +#endif // DEVICE_U2F_U2F_MESSAGE_H_
|
|
|