1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_WEBAUTHN_ANDROID_CABLE_MODULE_ANDROID_H_
#define CHROME_BROWSER_WEBAUTHN_ANDROID_CABLE_MODULE_ANDROID_H_
#include <optional>
#include "components/sync_device_info/device_info.h"
class PrefRegistrySimple;
class PrefService;
namespace webauthn {
namespace authenticator {
// RegisterForCloudMessages installs a |GCMAppHandler| that handles caBLEv2
// message in the |GCMDriver| connected to the primary profile. This should be
// called during browser startup to ensure that the |GCMAppHandler| is
// registered before any GCM messages are processed. (Otherwise they will be
// dropped.)
void RegisterForCloudMessages();
// GetSyncDataIfRegistered returns a structure containing values to advertise
// in Sync that will let other Chrome instances contact this device to perform
// security key transactions.
syncer::DeviceInfo::PhoneAsASecurityKeyInfo::StatusOrInfo
GetSyncDataIfRegistered();
// RegisterLocalState registers prefs with the local-state represented by
// |registry|.
void RegisterLocalState(PrefRegistrySimple* registry);
namespace internal {
// PaaskInfoFromCBOR parses a CBOR-encoded linking structure from Play Services
// into the structure used by Sync.
std::optional<syncer::DeviceInfo::PhoneAsASecurityKeyInfo> PaaskInfoFromCBOR(
base::span<const uint8_t> cbor);
// CBORFromPaaskInfo does the inverse of `PaaskInfoFromCBOR`.
std::vector<uint8_t> CBORFromPaaskInfo(
const syncer::DeviceInfo::PhoneAsASecurityKeyInfo& paask_info);
// CacheResult will save `result`, if it's not `NotReady`, into `state`. If it
// is `NotReady`, it'll try to load a previously saved result and will return
// that instead.
syncer::DeviceInfo::PhoneAsASecurityKeyInfo::StatusOrInfo CacheResult(
syncer::DeviceInfo::PhoneAsASecurityKeyInfo::StatusOrInfo result,
PrefService* state);
} // namespace internal
} // namespace authenticator
} // namespace webauthn
#endif // CHROME_BROWSER_WEBAUTHN_ANDROID_CABLE_MODULE_ANDROID_H_
|