// Perform a genuine check. error is fails. complete on success. import Transport from "@ledgerhq/hw-transport"; import type { DeviceInfo, SocketEvent } from "@ledgerhq/types-live"; import { Observable, from } from "rxjs"; import { switchMap } from "rxjs/operators"; import ManagerAPI from "../manager/api"; import { getProviderId } from "../manager"; export default (transport: Transport, deviceInfo: DeviceInfo): Observable => from(ManagerAPI.getDeviceVersion(deviceInfo.targetId, getProviderId(deviceInfo))).pipe( switchMap(deviceVersion => from( ManagerAPI.getCurrentFirmware({ deviceId: deviceVersion.id, version: deviceInfo.version, provider: getProviderId(deviceInfo), }), ), ), switchMap(firmware => ManagerAPI.genuineCheck(transport, { targetId: deviceInfo.targetId, perso: firmware.perso, }), ), );