syntax = "proto3"; package moby.filesync.v1; option go_package = "auth"; service Auth{ rpc Credentials(CredentialsRequest) returns (CredentialsResponse); rpc FetchToken(FetchTokenRequest) returns (FetchTokenResponse); rpc GetTokenAuthority(GetTokenAuthorityRequest) returns (GetTokenAuthorityResponse); rpc VerifyTokenAuthority(VerifyTokenAuthorityRequest) returns (VerifyTokenAuthorityResponse); } message CredentialsRequest { string Host = 1; } message CredentialsResponse { string Username = 1; string Secret = 2; } message FetchTokenRequest { string ClientID = 1; string Host = 2; string Realm = 3; string Service = 4; repeated string Scopes = 5; } message FetchTokenResponse { string Token = 1; int64 ExpiresIn = 2; // seconds int64 IssuedAt = 3; // timestamp } message GetTokenAuthorityRequest { string Host = 1; bytes Salt = 2; } message GetTokenAuthorityResponse { bytes PublicKey = 1; } message VerifyTokenAuthorityRequest { string Host = 1; bytes Payload = 2; bytes Salt = 3; } message VerifyTokenAuthorityResponse { bytes Signed = 1; }