Wie hier beschrieben Ссылка
Ich habe keine Zeit, dies von Grund auf neu zu schreiben.
Gefragt und nicht beantwortet Ссылка
DIE FRAGE IST:
Ich suche nach einem kompilierbaren funktionierenden Quellcode, der MS SSPI implementiert (wie oben im Thread erwähnt), prozedural nicht OOP bevorzugt.
Ich habe mir das Codeprojektbeispiel hier angesehen:
Aber das ist C # OOP. Konvertieren in C ++ - Code ist nicht trivial.
OpenSSL
SChannel-Aufrufe folgen den GSS-API-Standards. Es gibt natürlich einige Alternativen - OpenSSL zum Beispiel. Dieses Paket ist eine vollständige und gründliche Implementierung des Protokolls und für jemanden, der mit UNIX nur zu vertraut ist, ist dies zweifellos die beste Wahl. Das Paket war ursprünglich auf die UNIX-Community ausgerichtet und zum Kompilieren ist es auf die Perl-Laufzeit angewiesen. Daher ist eine gewisse Lernkurve für Windows-Entwickler erforderlich, die nie mit UNIX-Systemen gearbeitet haben.
Abgesehen davon macht OpenSLL einige Dinge, die nicht dem Standard entsprechen
Nikolai, Haben viel kompilierbaren Quellcode mitgeführt (www.coastrd.com) Ich hatte gehofft, jemanden zu finden, der bereit ist, das Gleiche zu tun.
Dieses SSPI SChannel SMTPS-Beispiel sollte in Visual Studio 2008 kompiliert und ausgeführt werden wie
SChannel ist die Microsoft-Implementierung der GSS-API, die das SSL / TLS-Protokoll umschließt.
Vorteile der Verwendung von SChannel:
Der Code sollte eine Sitzung erzeugen, die wie folgt aussieht:
----- SSPI initialisiert
----- WinSock initialisiert
----- Anmeldeinformationen initialisiert
----- Verbunden mit Server
70 Bytes von Handshake-Daten gesendet
974 Bytes von Handshake-Daten empfangen
182 Bytes von Handshake-Daten gesendet
43 Bytes von Handshake-Daten empfangen
Handshake war erfolgreich
----- Client Handshake durchgeführt
----- Authentifizierte Server-Anmeldeinformationen
Server-Betreff: C = US, S = Kalifornien, L = Mountain View, O = Google Inc., CN = smtp.gmail.com
Serveraussteller: C = ZA, S = Westkap, L = Kapstadt, O = Thawte Consulting, OU = Zertifizierungsdiensteabteilung, CN = Thawte Premium Server CA, E = [email protected]
----- Zertifikatskette angezeigt ----- Server Zertifikat verifiziert ----- Server Zertifikat Kontext freigegeben
Protokoll: TLS1
Chiffre: RC4
Verschlüsselungsstärke: 128
Hash: MD5
Hash-Stärke: 128
Schlüsselaustausch: RSA
Schlüsselaustauschstärke: 1024
----- Sichere Verbindungsinfo
64 Byte (verschlüsselte) Anwendungsdaten erhalten
Entschlüsselte Daten: 43 Bytes
220 mx.google.com ESMTP 6sm17740567yyg66
Senden von 7 Bytes Klartext:
EHLO
28 Bytes verschlüsselter Daten, die gesendet wurden
169 Bytes (verschlüsselte) Anwendungsdaten empfangen
Entschlüsselte Daten: 148 Bytes
250-mx.google.com zu Ihren Diensten, [22.33.111.222]
250-GRÖßE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 PIPELINING
Senden von 7 Bytes Klartext:
BEENDEN
28 Bytes verschlüsselter Daten, die gesendet wurden
69 Byte (verschlüsselte) Anwendungsdaten empfangen
Entschlüsselte Daten: 48 Bytes
221 2.0.0 schließende Verbindung 6sm17740567yyg66
----- SMTP-Sitzung abgeschlossen
Senden Schließen Benachrichtigen
23 Bytes von Handshake-Daten gesendet
----- Disconnected vom Server
----- Reinigung beginnen
----- Alles erledigt -----
Wiederholen Sie nach mir: "Ich möchte OpenSSL ".
verwendenDieses Problem ist viel zu ernst und viel zu leicht, um es zu vermasseln, jedes Mal, wenn Sie es lösen wollen, selbst zu rollen. Wenn Sie ein Problem mit OpenSSL haben, versuchen Sie, dies durch Dialog und Patches zu OpenSSL zu beheben.
(Niemand ist immun, um es zu vermasseln, nicht einmal Microsoft oder tatsächlich OpenSSL. Verwenden Sie etwas, dessen Quelle Sie überprüfen können und das bei Problemen gepatcht wird. Verwenden Sie OpenSSL.)
Vielleicht ist dieser Link ein guter Ausgangspunkt. Es enthält tatsächlich funktionierenden Beispielcode mit MS SSPI (obwohl es sehr MSVC-spezifisch aussieht, aber ok, seine Fenster nur sowieso). Ignoriere einfach die OpenSSL-Beispiele ;-)
Wie viel würden Sie für einen solchen kompilierbaren Quellcode bezahlen? Oder hast du erwartet, dass jemand es dir gibt? OpenSSL Jungs haben es schon getan. Es ist Gott-hässlich, aber der Preis ist richtig.