syntax = "proto2";

/**
 * Configuration format for SafeWISE plugin
 */

// Sugar for easier handling in Java
option java_package = "io.coinwise.safewise.lib.protobuf";
option java_outer_classname = "SafeWISEConfig";

import "google/protobuf/descriptor.proto";

/**
 * Device Descriptor used in Configuration
 */
message DeviceDescriptor {
	optional uint32 vendor_id = 1;		// USB vendor ID
	optional uint32 product_id = 2;		// USB product ID
	optional string serial_number = 3;	// USB serial number
	optional string path = 4;		// USB device path
}

/**
 * Plugin Configuration
 */
message Configuration {
	repeated string whitelist_urls = 1;				// allowed URLs for plugin
	repeated string blacklist_urls = 2;				// forbidden URLs for plugin
	required google.protobuf.FileDescriptorSet wire_protocol = 3;	// compiled specification of write protocol (serialized using "protoc -o")
	repeated DeviceDescriptor known_devices = 4;			// descriptors of allowed devices
	optional uint32 valid_until = 5;				// expiration timestamp
}
