Verwende SSL mit Delphi, aber immer noch mit einer einzigen exe

8

Wir verwenden Indy und wir brauchen SSL eMail-Unterstützung in unserer App, aber wir müssen unsere Anwendung in einer einzigen .Exe haben.

Wir wissen, dass der standardmäßige Indy-Handler die DLLs im Pfad benötigt. Das Extrahieren der Dlls aus einer der EXE-Ressourcen wäre der letzte Ausweg.

Irgendwelche besseren Ideen?

    
John Thomas 19.11.2009, 09:29
quelle

8 Antworten

8

Probieren Sie SSLBlackBox .

    
Ondrej Kelle 19.11.2009 11:01
quelle
4

TOndrey hat dir eine gute Antwort gegeben. Ich benutze auch SecureBlackBox. Sie können einige andere Komponenten von Drittanbietern in Betracht ziehen:

Mihaela 19.11.2009 14:14
quelle
3

Beachten Sie Folgendes: Wenn Sie in Ihrer ausführbaren Datei SSL / TLS-Unterstützung hinzufügen, wird möglicherweise für den Export eingeschränkt . Wenn Sie in den USA sind, könnte dies bedeuten, dass Ihre Bewerbung nicht an Personen außerhalb der USA verkauft oder abgegeben werden kann. Aus diesem Grund sind diese DLLs nicht Teil von Indy oder Delphi selbst.

Die von Delphi verwendeten Bibliotheken sind tatsächlich kompilierte DLLs aus dem OpenSSL -Projekt. Aber wenn Sie gute Kenntnisse von C haben, sollten Sie in der Lage sein, die Quelle zu .obj-Dateien zu kompilieren und sie stattdessen mit Ihrem Delphi-Code zu verknüpfen. Sie müssten wahrscheinlich auch einen Teil des Indy-Codes ändern. Natürlich hätten andere das auch tun können, aber das macht den Export dieser Indy-Komponenten (oder sogar Delphi selbst) aufgrund dieser Exportbeschränkungen komplexer.

Lustigerweise ist der Quellcode durch die erste Änderung geschützt, die es Ihnen im Grunde erlaubt, den Code in einem Buch auszudrucken und dann an eine Schurken-Nation zu senden. Während wenn Sie es in digitaler Form (kompiliert oder nicht) senden würden, dann begehen Sie eine Straftat und müssen wahrscheinlich vorsichtig sein, wenn Sie die Seife in der Dusche für mindestens ein Jahr abholen ... Niemand hat das behauptet Gesetze machen Sinn. Sie können nur ein Schmerz im [Piep] sein ...

Andere SSL-Lösungen arbeiten nicht mit den Indy-Komponenten zusammen, was bedeutet, dass Sie einen Teil Ihres Codes neu schreiben müssen, um diese anderen Lösungen zu unterstützen.

Dieser Link gibt an, wie Sie eine DLL aus dem Speicher laden können, so dass Sie sie nicht benötigen es auf der Festplatte. Es ist eine alternative Lösung, die ich nicht ausprobiert habe. Ich glaube nicht, dass es funktioniert, da die beiden DLLs voneinander abhängen, aber es könnte einen Versuch wert sein ...     
Wim ten Brink 19.11.2009 13:12
quelle
2

Ist die Anforderung "Single EXE" für Verteilungszwecke oder muss es auch eine einzelne Exe-Datei sein, wenn auf dem Computer des Clients ausgeführt wird?

Wenn es nur für Verteilungszwecke ist, können Sie die DLL-Dateien an das Ende Ihrer EXE-Datei anhängen und dann - wenn das Programm startet - sie aus der EXE-Datei extrahieren und lokal als .DLL-Dateien speichern das:

%Vor%

Quick'n'Dirty, nicht richtig formatiert, etc., sollte Ihnen aber die Grundidee geben.

    
HeartWare 19.11.2009 12:14
quelle
2

Haben Sie versucht, die OpenSLL-Quelle selbst zu kompilieren und die Objektdateien in Delphi zu importieren?

Empfohlenes Lesen: Verwenden von C-Objektdateien in Delphi - erklärt, wie man ein Programm erstellt, das keine a benötigt DLL, und kann in einem Stück bereitgestellt werden

    
Lars 18.09.2013 08:14
quelle
1

Ich benutze Microsofts CAPICOM für SSl3 und es löste meine Bedürfnisse ... Es ist frei verteilbar aber eingestellt

Wenn Sie andere Komponenten ausprobieren, sollten Sie sich SYNAPSE anschauen (unter Ссылка ) (ich benutze es auch), es kann mit StreamSec arbeiten ( und andere), um E-Mails über SSL zu senden. Es ist kostenlos und einfach zu arbeiten.

    
Guy 19.11.2009 16:57
quelle
0

Const

%Vor%

...

%Vor%

    
Ravaut123 19.11.2009 12:38
quelle
0

Es ist möglich, diese DLLs als Ressourcen in die ausführbare Datei des Programms einzuschließen und sie entweder in Dateien zu exportieren oder sie sogar zu verwenden, ohne sie vorher zu exportieren, indem Sie den Code verschieben und die Eingangspunkte im Speicher durchsuchen. Ich habe irgendwo Code, um das letztere zu machen ...

    
dummzeuch 19.11.2009 17:27
quelle

Tags und Links