syntax = "proto3";
package prodvider;
option go_package = "code.hackerspace.pl/hscloud/cluster/prodvider/proto";

message AuthenticateRequest {
    string username = 1;
    string password = 2;
}

message AuthenticateResponse {
    enum Result {
        RESULT_INVALID = 0;
        RESULT_AUTHENTICATED = 1;
        RESULT_INVALID_CREDENTIALS = 2;
    }
    Result result = 1;
    KubernetesKeys kubernetes_keys = 2;
    HSPKIKeys hspki_keys = 3;
    CockroachDBKeys crdb_keys = 4;
}

message KubernetesKeys {
    string cluster = 1;
    bytes ca = 2;
    bytes cert = 3;
    bytes key = 4;
}

message HSPKIKeys {
    bytes ca = 1;
    bytes cert = 2;
    bytes key = 3;
    string principal = 4;
}

message CockroachDBKeys {
    message Cluster {
        string name = 1;
        bytes ca = 2;
        bytes cert = 3;
        bytes key = 4;
        string username = 5;
    }
    repeated Cluster clusters = 2;
}

service Prodvider {
    rpc Authenticate(AuthenticateRequest) returns (AuthenticateResponse);
}
