// Copyright 2017 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_FIDO_FIDO_ATTESTATION_STATEMENT_H_ #define DEVICE_FIDO_FIDO_ATTESTATION_STATEMENT_H_ #include #include #include #include "base/component_export.h" #include "base/containers/span.h" #include "base/macros.h" #include "components/cbor/cbor_values.h" #include "device/fido/attestation_statement.h" namespace device { // https://www.w3.org/TR/2017/WD-webauthn-20170505/#fido-u2f-attestation class COMPONENT_EXPORT(DEVICE_FIDO) FidoAttestationStatement : public AttestationStatement { public: static std::unique_ptr CreateFromU2fRegisterResponse(base::span u2f_data); FidoAttestationStatement(std::vector signature, std::vector> x509_certificates); ~FidoAttestationStatement() override; // AttestationStatement overrides // Produces a map in the following format: // { "x5c": [ x509_certs bytes ], "sig": signature bytes ] } cbor::CBORValue::MapValue GetAsCBORMap() const override; bool IsAttestationCertificateInappropriatelyIdentifying() override; private: const std::vector signature_; const std::vector> x509_certificates_; DISALLOW_COPY_AND_ASSIGN(FidoAttestationStatement); }; } // namespace device #endif // DEVICE_FIDO_FIDO_ATTESTATION_STATEMENT_H_