syntax = "proto3";

package detectors;

option go_package = "github.com/trufflesecurity/trufflehog/v3/pkg/pb/detectorspb";

enum DecoderType {
  UNKNOWN = 0;
  PLAIN = 1;
  BASE64 = 2;
  UTF16 = 3;
  ESCAPED_UNICODE = 4;
  HTML = 5;
}

message Result {
  int64 source_id = 2;
  string redacted = 3;
  bool verified = 4;
  string hash = 5;
  map<string, string> extra_data = 6;
  StructuredData structured_data = 7;
  string hash_v2 = 8;
  DecoderType decoder_type = 9;

  // This field should only be populated if the verification process itself failed in a way that provides no information
  // about the verification status of the candidate secret, such as if the verification request timed out.
  string verification_error_message = 10;

  FalsePositiveInfo false_positive_info = 11;
}

message FalsePositiveInfo {
  bool word_match = 1;
  bool low_entropy = 2;
}

message StructuredData {
  repeated TlsPrivateKey tls_private_key = 1;
  repeated GitHubSSHKey github_ssh_key = 2;
}

message TlsPrivateKey {
  string certificate_fingerprint = 1;
  string verification_url = 2;
  int64 expiration_timestamp = 3;
}

message GitHubSSHKey {
  string user = 1;
  string public_key_fingerprint = 2;
}
