dcmtls: extensions de sécurité pour la bibliothèque réseau
Ce module contient des classes qui implémentent la communication réseau DICOM encapsulée dans une connexion Transport Layer Security (TLS), conforme à l'extension DICOM "Security Enhancements One" (anciennement Supplement 31). Ce module nécessite la bibliothèque externe OpenSSL.
Les principales classes d'interface sont :
Fichiers
Les fichiers suivants apportent des informations complémentaires :
- gestion des certificats et des autorités de certification dans dcmtls
- fichier ciphers.txt
- fichier randseed.txt
Exemples
L'exemple suivant montre un fragment de code qui active TLS pour une application requérante d'association (requestor). Le code complet d'initialisation du réseau n'est pas présenté ici et la plupart du code de vérification des erreurs est omis par souci de concision.
T_ASC_Network *net; // code d'initialisation réseau non présenté,
T_ASC_Parameters *params; // nous supposons simplement que ces pointeurs sont valides
DcmTLSTransportLayer::initializeOpenSSL(); // initialise la bibliothèque OpenSSL
// create TLS object that initializes the random generator through a file
// "random.dat" containing random data (1 kByte is sufficient).
DcmTLSTransportLayer *tLayer = new DcmTLSTransportLayer(
NET_REQUESTOR, "random.dat");
if (tLayer->setPrivateKeyFile("privkey.pem", SSL_FILETYPE_PEM).bad())
{
cerr << "unable to load private key" << endl;
return;
}
if (tLayer->setCertificateFile("certificate.pem", SSL_FILETYPE_PEM).bad())
{
cerr << "unable to load certificate" << endl;
return;
}
// enable the ciphersuites for the BCP 195 RFC 8996 secure transport profile
tLayer->setTLSProfile(TSP_Profile_BCP_195_RFC_8996);
tLayer->activateCipherSuites();
// accept any certificate from the remote site (not recommended)
tLayer->setCertificateVerification(DCV_ignoreCertificate);
// register and activate TLS layer
ASC_setTransportLayer(net, tLayer, 1);
ASC_setTransportLayerType(params, 1);