PPL6-Icon Patrick's Programming Library Version 6.4.21 - Dokumentation
ppl6::CSSL Klassenreferenz

SSL-Verschlüsselung. Mehr ...

Öffentliche Typen

enum  SSL_METHOD {
  SSLv2 = 1, SSLv2client, SSLv2server, SSLv3,
  SSLv3client, SSLv3server, TLSv1, TLSv1client,
  TLSv1server, SSLv23, SSLv23client, SSLv23server,
  TLSv1_1, TLSv1_1client, TLSv1_1server, TLSv1_2,
  TLSv1_2client, TLSv1_2server, TLS, TLSclient,
  TLSserver, DTLSv1, DTLSv1client, DTLSv1server
}
 

Öffentliche Methoden

 CSSL ()
 
 ~CSSL ()
 
void * GetSSLContext ()
 
int Init (int method=0)
 
int IsInit ()
 
int LoadCertificate (const char *certificate, const char *privatekey=NULL, const char *password=NULL)
 
int LoadTrustedCAfromFile (const char *filename)
 
int LoadTrustedCAfromPath (const char *path)
 
void * NewSSL ()
 
int SetCipherList (const char *cipherlist)
 
int SetTmpDHParam (const CString &dh_param_file)
 
int Shutdown ()
 

Private Methoden

void Clear ()
 
void * RegisterSocket (CTCPSocket *socket)
 
int ReleaseSocket (CTCPSocket *socket, void *data)
 

Private Attribute

void * ctx
 
void * first_ref
 
void * last_ref
 
CMutex Mutex
 
int references
 

Freundbeziehungen

class CTCPSocket
 

Ausführliche Beschreibung

SSL-Schnittstelle.

Beispiel: TCP-Server mit SSL-Verschlüsselung
// Socket_Example3
// Zunächst leitet wir eine eigene Klasse von CTCPSocket ab, in der wir
// nur die virtuelle Funktion ReceiveConnect implementieren:
class MySocket : public ppl6::CTCPSocket
{
public:
// Eine SSL-Klasse instanziieren
virtual int ReceiveConnect(CTCPSocket *socket, const char *host, int port);
};
// Implementation der Funktion
int MySocket::ReceiveConnect(CTCPSocket *socket, const char *host, int port)
{
// SSL für diese Verbindung initialisieren
if (!socket->SSL_Init(&ssl)) {
return 0;
}
// Und starten
if (!socket->SSL_Init_Server()) {
return 0;
}
// Wir schalten den Socket auf Non-Blocking
socket->SetBlocking(false);
// Auf SSL-Handshake warten
if (!socket->SSL_WaitForAccept(10)) { // 10-Sekunden Timeout
socket->SetBlocking(true);
return 0;
}
// Ab hier haben wir eine verschlüsselte Verbindung
// Speicher für die eingehenden Datenpakete allokieren
char *buffer=(char*)malloc(100);
int bytes;
// Endlosschleife, die erst bei Auftreten eines Fehlers beendet wird, z.B.
// infolge einer Verbindungstrennung
while (1) {
// Auf Daten warten, maximal aber 100 Millisekunden
if (socket->WaitForIncomingData(0,10000)) {
// Daten lesen
if (!socket->ReadOnce(buffer,100)) {
// Es ist ein Fehler aufgetreten
break;
}
// Wieviel Bytes haben wir bekommen?
bytes=socket->GetBytesRead();
// Datenpaket zurückschicken
if (!socket->Write(buffer,bytes)) {
// Es ist ein Fehler aufgetreten
break;
}
}
}
free(buffer);
return 0;
}
int main(int argc, char **argv)
{
if (!ppl6::SSL_Init()) { // OpenSSL initialisieren
return 0;
}
// Instanz von MySocket definieren
MySocket Socket;
// SSL-Klasse darin mit SSLv3 als Methode initialisieren
if (!Socket.ssl.Init(ppl6::CSSL::SSLv3)) {
return 0;
}
// Zertifikat für den Server laden
if (!Socket.ssl.LoadCertificate("mein_zertifikat.pem","mein_schluessel.key","MeinPassword")) {
return 0;
}
printf ("Starte Server auf localhost:9020\n");
// Server auf "localhost" und Port 9020 binden
if (!Socket.Bind("localhost",9020)) {
return 0;
}
// Auf Verbindungen warten
if (!Socket.Listen()) {
return 0;
}
}
// EOF

Dokumentation der Aufzählungstypen

Aufzählungswerte
SSLv2 
SSLv2client 
SSLv2server 
SSLv3 
SSLv3client 
SSLv3server 
TLSv1 
TLSv1client 
TLSv1server 
SSLv23 
SSLv23client 
SSLv23server 
TLSv1_1 
TLSv1_1client 
TLSv1_1server 
TLSv1_2 
TLSv1_2client 
TLSv1_2server 
TLS 
TLSclient 
TLSserver 
DTLSv1 
DTLSv1client 
DTLSv1server 

Beschreibung der Konstruktoren und Destruktoren

ppl6::CSSL::CSSL ( )
ppl6::CSSL::~CSSL ( )

Dokumentation der Elementfunktionen

void ppl6::CSSL::Clear ( )
private
void * ppl6::CSSL::GetSSLContext ( )
int ppl6::CSSL::Init ( int  method = 0)
int ppl6::CSSL::IsInit ( )
int ppl6::CSSL::LoadCertificate ( const char *  certificate,
const char *  privatekey = NULL,
const char *  password = NULL 
)
int ppl6::CSSL::LoadTrustedCAfromFile ( const char *  filename)
int ppl6::CSSL::LoadTrustedCAfromPath ( const char *  path)
void * ppl6::CSSL::NewSSL ( )
void * ppl6::CSSL::RegisterSocket ( CTCPSocket socket)
private
int ppl6::CSSL::ReleaseSocket ( CTCPSocket socket,
void *  data 
)
private
int ppl6::CSSL::SetCipherList ( const char *  cipherlist)
int ppl6::CSSL::SetTmpDHParam ( const CString dh_param_file)
int ppl6::CSSL::Shutdown ( )

Freundbeziehungen und Funktionsdokumentation

friend class CTCPSocket
friend

Dokumentation der Datenelemente

void* ppl6::CSSL::ctx
private
void* ppl6::CSSL::first_ref
private
void * ppl6::CSSL::last_ref
private
CMutex ppl6::CSSL::Mutex
private
int ppl6::CSSL::references
private

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: