trezor-link
Version:
Trezor Link for browser
31 lines (21 loc) • 989 B
Flow
/* @flow */
;
// Module for loading the protobuf description from serialized description
import * as ProtoBuf from "protobufjs-old-fixed-webpack";
import {Messages} from "./messages.js";
import {protocolToJSON} from "./to_json.js";
import * as compiledConfigProto from "./config_proto_compiled.js";
// Parse configure data (it has to be already verified)
export function parseConfigure(data: Buffer): Messages {
const configBuilder = compiledConfigProto[`Configuration`];
const loadedConfig = configBuilder.decode(data);
const validUntil = loadedConfig.valid_until;
const timeNow = Math.floor(Date.now() / 1000);
if (timeNow >= validUntil) {
throw new Error(`Config too old; ` + timeNow + ` >= ` + validUntil);
}
const wireProtocol = loadedConfig.wire_protocol;
const protocolJSON = protocolToJSON(wireProtocol.toRaw());
const protobufMessages = ProtoBuf.newBuilder({})[`import`](protocolJSON).build();
return new Messages(protobufMessages);
}