Les Membres Entrants

Le service TRISAMembers est un service expérimental qui fournit un accès supplémentaire et sécurisé au service d’annuaire pour les membres approuvés du réseau TRISA. Seuls les membres du réseau TRISA (c’est-à-dire les membres qui ont reçu des certificats d’identité valides) peuvent accéder aux données détaillées du service d’annuaire concernant le réseau en utilisant ce service. Remarque : une fois validé, ce service sera intégré à la spécification officielle de TRISA.

Le Service TRISAMembers

Cette section décrit les protocol buffers pour la terminaison TRISAMembers, qui peut être trouvée ici. Ce fichier peut être compilé dans le langage de votre choix (exemple pour le Golang). Remarque : Vous devrez télécharger et installer le compilateur du protocol buffer si vous ne l’avez pas encore.

Actuellement, le service TRISAMembers ne comprend qu’une seule RPC — le List RPC. D’autres RPCs expérimentaux et sécurisés pourront être mis à disposition à l’avenir.

service TRISAMembers {
    // List all verified VASP members in the Directory Service.
    rpc List(ListRequest) returns (ListReply) {};
}

Liste des membres vérifiés

Le List RPC renvoie une liste paginée de tous les membres vérifiés de TRISA afin de faciliter la recherche des pairs dans le réseau TRISA. Le RPC reçoit en entrée une requête de type ListRequest et renvoie un ListReply.

ListRequest

La fonction ListRequest peut être utilisée pour gérer la pagination de la demande de liste VASP (VASP - Fournisseur de Services d’Actifs Virtuels). S’il y a plus de résultats que la taille de page spécifiée, la fonction ListReply renvoie un jeton de page qui peut être utilisé pour récupérer la page suivante (tant que les paramètres de la requête originale ne sont pas modifiés, par exemple les filtres ou les paramètres de pagination).

La variable page_size spécifie le nombre de résultats par page et ne peut pas changer entre les requêtes de page ; sa valeur par défaut est 100. La variable page_token spécifie le jeton de page permettant d’extraire la page de résultats suivante.

message ListRequest {
    int32 page_size = 1;
    string page_token = 2;
}

ListReply

Un ListReply renvoie une liste abrégée des détails du VASP, destinée à faciliter les échanges de clés entre pairs ou les recherches plus détaillées dans le service d’annuaire.

Les vasps sont une liste de VASP (voir la déclaration de VASPMember ci-dessous), et si le paramètre next_page_token, est spécifié, il indique qu’une autre page de résultats existe.

message ListReply {
    repeated VASPMember vasps = 1;
    string next_page_token = 2;
}

VASPMember

Un VASPMember contient suffisamment d’informations pour faciliter les échanges d’égal à égal ou des recherches plus détaillées dans le service d’annuaire. Le ListReply contiendra une liste d’aucun, d’un ou de plusieurs VASPMembers.

message VASPMember {
    // Les éléments d'identification unique du VASP dans le service d'annuaire
    string id = 1;
    string registered_directory = 2;
    string common_name = 3;

    // Adresse à laquelle se connecter au VASP distant pour effectuer une demande TRISA
    string endpoint = 4;

    // Détails supplémentaires utilisés pour faciliter les recherches et les correspondances
    string name = 5;
    string website = 6;
    string country = 7;
    trisa.gds.models.v1beta1.BusinessCategory business_category = 8;
    repeated string vasp_categories = 9;
    string verified_on = 10;
}

Connexion via authentification mTLS

Pour utiliser le service TRISAMembers, vous devez vous authentifier à l’aide du protocole mTLS en utilisant les certificats d’identité TRISA qui vous ont été attribués lors de votre inscription.

La documentation gRPC sur l’authentification fournit des exemples de code permettant de se connecter avec mTLS dans différents langages, notamment Java, C++, Golang, Ruby, et Python.

Par exemple, si vous utilisez Golang pour vous connecter au service d’annuaire, vous utiliserez les bibliothèques tls, x509, et credentials pour charger vos certificats d’identité TRISA depuis leur emplacement sécurisé sur votre ordinateur et construire des informations d’identification TLS pour valider mutuellement la connexion avec le serveur. Enfin, vous utiliserez le code compilé des membres protocol buffer pour créer un client de membres. Remarque : les déclarations du protocol buffer sont décrites plus en détail plus haut dans cette page.

import (
    "crypto/tls"
    "crypto/x509"

    members "github.com/trisacrypto/directory/pkg/gds/members/v1alpha1"
    "google.golang.org/grpc/credentials"
)

func (m *MyProfile) Connect() (_ members.TRISAMembersClient, err error){
    config := &tls.Config{
		Certificates: []tls.Certificate{m.Cert}, // m.Cert is your TRISA certificate parsed into a *x509.Certificate
		MinVersion:   tls.VersionTLS12,
		CurvePreferences: []tls.CurveID{
			tls.CurveP521,
			tls.CurveP384,
			tls.CurveP256,
		},
		PreferServerCipherSuites: true,
		CipherSuites: []uint16{
			tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
			tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
			tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
			tls.TLS_RSA_WITH_AES_128_GCM_SHA256,
		},
		ClientAuth: tls.RequireAndVerifyClientCert, // this will ensure an mTLS connection
		ClientCAs:  m.Pool, // m.Pool is a *x509.CertPool that must contain the RA and IA public certs from your TRISA certificate chain
	}

    var creds *credentials.TransportCredentials
    if creds, err = credentials.NewTLS(config); err != nil {
        return nil, err
    }

    var cc *grpc.ClientConn
    if cc, err = grpc.NewClient(m.Endpoint, grpc.WithTransportCredentials(creds)); err != nil {
        return nil, err
    }

    return members.NewTRISAMembersClient(cc), nil
}

Notez qu’il existe actuellement deux répertoires TRISA : le TRISA TestNet, qui permet aux utilisateurs d’expérimenter les interactions TRISA, et le Répertoire VASP, qui est le réseau de production pour les transactions TRISA. Si vous vous êtes inscrit au TestNet et que vous disposez de certificats TestNet, le point de terminaison que vous passerez dans la fonction de numérotation sera members.trisatest.net:443. Alternativement, si vous souhaitez accéder aux membres de l’annuaire VASP et que vous êtes déjà enregistré, vous utiliserez le terminal suivant members.vaspdirectory.net:443.