// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "cryptohome/fido/authenticator_data.h"

#include <gtest/gtest.h>

#include <vector>

#include <stdint.h>

namespace cryptohome {
namespace fido_device {

// A valid registration operation response.
constexpr uint8_t kValidMakeCredentialResponse[] = {
    // clang-format off
0xA3,                                            // map(3)
0x63,                                            // text(3)
0x66, 0x6D, 0x74,                                // "fmt"
0x66,                                            // text(6)
0x70, 0x61, 0x63, 0x6B, 0x65, 0x64,              // "packed"
0x67,                                            // text(7)
0x61, 0x74, 0x74, 0x53, 0x74, 0x6D, 0x74,        // "attStmt"
0xA3,                                            // map(3)
0x63,                                            // text(3)
0x61, 0x6C, 0x67,                                // "alg"
0x26,                                            // negative(6)
0x63,                                            // text(3)
0x73, 0x69, 0x67,                                // "sig"
0x58, 0x48,                                      // bytes(72)
0x30, 0x46, 0x02, 0x21, 0x00, 0xFC, 0x4A, 0x35,
0xBF, 0x20, 0x4C, 0xE4, 0x9F, 0x24, 0xF2, 0x9C,
0x88, 0xC6, 0xCC, 0xD7, 0x13, 0x5B, 0x92, 0xA7,
0xDB, 0x6E, 0xF2, 0x3A, 0xB2, 0xD4, 0xD6, 0xAE,
0x20, 0x32, 0xA7, 0xD6, 0xAD, 0x02, 0x21, 0x00,
0xC8, 0x54, 0x4D, 0x03, 0x0E, 0x64, 0x3E, 0xE6,
0x0D, 0x1F, 0xCE, 0xC3, 0x23, 0x43, 0x9D, 0x31,
0x7B, 0x77, 0xB8, 0x51, 0x40, 0x03, 0xC1, 0xE2,
0x3E, 0x16, 0xD9, 0x3F, 0x22, 0x86, 0xD2, 0xB5,  // ...
0x63,                                            // text(3)
0x78, 0x35, 0x63,                                // "x5c"
0x81,                                            // array(1)
0x59, 0x02, 0xC0,                                // bytes(704)
0x30, 0x82, 0x02, 0xBC, 0x30, 0x82, 0x01, 0xA4,
0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x04, 0x03,
0xAD, 0xF0, 0x12, 0x30, 0x0D, 0x06, 0x09, 0x2A,
0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B,
0x05, 0x00, 0x30, 0x2E, 0x31, 0x2C, 0x30, 0x2A,
0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x23, 0x59,
0x75, 0x62, 0x69, 0x63, 0x6F, 0x20, 0x55, 0x32,
0x46, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43,
0x41, 0x20, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6C,
0x20, 0x34, 0x35, 0x37, 0x32, 0x30, 0x30, 0x36,
0x33, 0x31, 0x30, 0x20, 0x17, 0x0D, 0x31, 0x34,
0x30, 0x38, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30,
0x30, 0x30, 0x5A, 0x18, 0x0F, 0x32, 0x30, 0x35,
0x30, 0x30, 0x39, 0x30, 0x34, 0x30, 0x30, 0x30,
0x30, 0x30, 0x30, 0x5A, 0x30, 0x6D, 0x31, 0x0B,
0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
0x02, 0x53, 0x45, 0x31, 0x12, 0x30, 0x10, 0x06,
0x03, 0x55, 0x04, 0x0A, 0x0C, 0x09, 0x59, 0x75,
0x62, 0x69, 0x63, 0x6F, 0x20, 0x41, 0x42, 0x31,
0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0B,
0x0C, 0x19, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6E,
0x74, 0x69, 0x63, 0x61, 0x74, 0x6F, 0x72, 0x20,
0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74,
0x69, 0x6F, 0x6E, 0x31, 0x26, 0x30, 0x24, 0x06,
0x03, 0x55, 0x04, 0x03, 0x0C, 0x1D, 0x59, 0x75,
0x62, 0x69, 0x63, 0x6F, 0x20, 0x55, 0x32, 0x46,
0x20, 0x45, 0x45, 0x20, 0x53, 0x65, 0x72, 0x69,
0x61, 0x6C, 0x20, 0x36, 0x31, 0x37, 0x33, 0x30,
0x38, 0x33, 0x34, 0x30, 0x59, 0x30, 0x13, 0x06,
0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01,
0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03,
0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x19, 0x9E,
0x87, 0x9C, 0x16, 0x2D, 0xB7, 0xDC, 0x39, 0xEE,
0x4A, 0x42, 0xA0, 0x46, 0x16, 0xA5, 0xB3, 0x09,
0xFE, 0xCA, 0x09, 0x2F, 0x76, 0xBE, 0x09, 0x48,
0xF9, 0x6D, 0x6E, 0x95, 0xCA, 0xE4, 0xCC, 0x65,
0xCD, 0x54, 0xA0, 0x59, 0xCF, 0xBD, 0xC7, 0xC9,
0xB3, 0x1B, 0x2B, 0x1D, 0x6C, 0x18, 0x44, 0x79,
0xC2, 0xC0, 0x61, 0xF4, 0x18, 0xAA, 0x95, 0x4B,
0x59, 0x6A, 0x2C, 0x1C, 0xFA, 0x17, 0xA3, 0x6C,
0x30, 0x6A, 0x30, 0x22, 0x06, 0x09, 0x2B, 0x06,
0x01, 0x04, 0x01, 0x82, 0xC4, 0x0A, 0x02, 0x04,
0x15, 0x31, 0x2E, 0x33, 0x2E, 0x36, 0x2E, 0x31,
0x2E, 0x34, 0x2E, 0x31, 0x2E, 0x34, 0x31, 0x34,
0x38, 0x32, 0x2E, 0x31, 0x2E, 0x37, 0x30, 0x13,
0x06, 0x0B, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82,
0xE5, 0x1C, 0x02, 0x01, 0x01, 0x04, 0x04, 0x03,
0x02, 0x04, 0x30, 0x30, 0x21, 0x06, 0x0B, 0x2B,
0x06, 0x01, 0x04, 0x01, 0x82, 0xE5, 0x1C, 0x01,
0x01, 0x04, 0x04, 0x12, 0x04, 0x10, 0xFA, 0x2B,
0x99, 0xDC, 0x9E, 0x39, 0x42, 0x57, 0x8F, 0x92,
0x4A, 0x30, 0xD2, 0x3C, 0x41, 0x18, 0x30, 0x0C,
0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF,
0x04, 0x02, 0x30, 0x00, 0x30, 0x0D, 0x06, 0x09,
0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01,
0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00,
0x28, 0xEB, 0xB3, 0x67, 0xFE, 0xD1, 0xD8, 0xF0,
0xE2, 0x89, 0xEB, 0xCA, 0x9F, 0xF6, 0xD8, 0x07,
0x57, 0xC6, 0x0E, 0x9A, 0xE5, 0x7C, 0xB1, 0x72,
0x8C, 0x9B, 0x1C, 0x38, 0xCA, 0xBB, 0xBD, 0x84,
0xD9, 0x23, 0x7D, 0xA8, 0x31, 0xAC, 0x21, 0x94,
0x9F, 0x0F, 0x2D, 0xFC, 0x0C, 0x31, 0x6B, 0xFD,
0xB1, 0x75, 0xB3, 0x6E, 0x63, 0xA2, 0x2B, 0xBB,
0x58, 0x0E, 0xAD, 0xCA, 0x52, 0x80, 0xD0, 0x79,
0x84, 0x0E, 0x5A, 0x1E, 0x25, 0x72, 0x62, 0x5A,
0x3B, 0xFB, 0x87, 0x60, 0x33, 0xDB, 0xFB, 0x22,
0xA9, 0x69, 0xC9, 0x38, 0xB8, 0x9C, 0xE1, 0x71,
0x35, 0x94, 0x00, 0xA1, 0x25, 0x2D, 0x97, 0x02,
0xA9, 0x12, 0x93, 0xD5, 0x45, 0x19, 0xE9, 0x60,
0xDD, 0x22, 0xCE, 0x8A, 0x27, 0xEB, 0x05, 0xEB,
0x7E, 0x79, 0xB7, 0x50, 0xC0, 0x02, 0xFE, 0xD9,
0x01, 0x6B, 0x71, 0x1E, 0xC9, 0xAD, 0x74, 0x50,
0x1B, 0xD9, 0x14, 0xCB, 0xBE, 0x8E, 0xD9, 0x57,
0x12, 0x81, 0xB7, 0x4F, 0x44, 0xEB, 0x07, 0x7C,
0xE6, 0x1E, 0xCB, 0x06, 0xAB, 0x85, 0xA9, 0x72,
0x55, 0x26, 0x7E, 0xE8, 0xE3, 0x98, 0x2B, 0xF4,
0x3F, 0x0C, 0xB2, 0x1A, 0x38, 0x2D, 0x23, 0x5E,
0xB9, 0xE4, 0xCE, 0x6D, 0xB2, 0x98, 0xC4, 0x05,
0x42, 0x50, 0x40, 0x23, 0x2B, 0x2B, 0x61, 0xE1,
0x0C, 0xD7, 0x0C, 0x62, 0x15, 0xBC, 0x03, 0xB7,
0xE9, 0x40, 0x71, 0xB7, 0x0E, 0x12, 0xD1, 0xC4,
0x7F, 0x96, 0x65, 0x5A, 0x2E, 0xF9, 0x9D, 0x4C,
0xE5, 0x5A, 0x7F, 0x1B, 0x4B, 0x1F, 0xF9, 0x14,
0xEE, 0x13, 0x6D, 0x9E, 0x61, 0x20, 0x47, 0x14,
0x88, 0x64, 0x69, 0x88, 0x80, 0x44, 0x31, 0x16,
0x65, 0x38, 0x89, 0xB8, 0x64, 0x86, 0xD9, 0xC9,
0xC9, 0xFF, 0xBC, 0x93, 0x85, 0x45, 0x35, 0x69,
0xB3, 0x45, 0x74, 0x4B, 0x8C, 0xA0, 0xB4, 0x37,  // ...
0x68,                                            // text(8)
0x61, 0x75, 0x74, 0x68, 0x44, 0x61, 0x74, 0x61,  // "authData"
0x58, 0xC4,                                      // bytes(196)
0xC4, 0x6C, 0xEF, 0x82, 0xAD, 0x1B, 0x54, 0x64,
0x77, 0x59, 0x1D, 0x00, 0x8B, 0x08, 0x75, 0x9E,
0xC3, 0xE6, 0xD2, 0xEC, 0xB4, 0xF3, 0x94, 0x74,
0xBF, 0xEA, 0x69, 0x69, 0x92, 0x5D, 0x03, 0xB7,
0x41, 0x00, 0x00, 0x00, 0x06, 0xFA, 0x2B, 0x99,
0xDC, 0x9E, 0x39, 0x42, 0x57, 0x8F, 0x92, 0x4A,
0x30, 0xD2, 0x3C, 0x41, 0x18, 0x00, 0x40, 0xFA,
0x6A, 0x13, 0x57, 0x66, 0x88, 0x59, 0x2B, 0x91,
0xAE, 0x53, 0x17, 0x87, 0xD4, 0x50, 0xB3, 0x02,
0x67, 0x7F, 0x70, 0x48, 0x8D, 0x83, 0xA1, 0xD1,
0xF2, 0x11, 0xE2, 0x6E, 0x46, 0xF7, 0xED, 0x41,
0x5C, 0x68, 0xF5, 0xBD, 0x1E, 0xC1, 0x54, 0x86,
0xA9, 0x7D, 0x85, 0xCB, 0x0A, 0x6C, 0xEB, 0x3E,
0xF1, 0xFC, 0xFD, 0x76, 0x73, 0xBD, 0xB0, 0x61,
0x4B, 0x89, 0x39, 0xA0, 0x9E, 0x2D, 0x7B, 0xA5,
0x01, 0x02, 0x03, 0x26, 0x20, 0x01, 0x21, 0x58,
0x20, 0xF8, 0xE3, 0x9C, 0xD2, 0x04, 0x84, 0x28,
0xAC, 0x06, 0x9B, 0xB4, 0x98, 0x63, 0x4F, 0x47,
0xD1, 0x38, 0xDD, 0x48, 0xD5, 0x6D, 0xC1, 0x86,
0xF5, 0xE9, 0x3A, 0x10, 0xAD, 0xD8, 0x4F, 0xCE,
0x42, 0x22, 0x58, 0x20, 0xC0, 0xD3, 0x05, 0x7E,
0x9F, 0xBB, 0x4D, 0xDA, 0xE4, 0x01, 0x80, 0x23,
0x61, 0x81, 0xFE, 0xBB, 0x45, 0xBB, 0xBC, 0xB6,
0x92, 0x15, 0x47, 0x7A, 0x94, 0xB9, 0xE4, 0x1F,
0x39, 0xAF, 0xC1, 0xF5                           // ...
    // clang-format on
};

TEST(ParserTest, MakeCredentialResponseTest) {
  std::vector<uint8_t> input(std::begin(kValidMakeCredentialResponse),
                             std::end(kValidMakeCredentialResponse));
  auto attested_credential_data =
      AuthenticatorData::ParseMakeCredentialResponse(input);
  EXPECT_TRUE(attested_credential_data.has_value());
}

}  // namespace fido_device
}  // namespace cryptohome
