Anmelden

View Full Version : SSL_INIT



Hubert
08-06-10, 14:02
Hallo zusammen,

ich muss eine SSL Verbindung zu einem Internet Server aufbauen; ist mein erster Versuch mit SSL. Aber schon beim SSL_INIT fliegt er aus der Kurve und gibt den Fehler "SSL_ERROR_IO" zurück. In der API Beschreibung steht dann lapidar: An error occurred in SSL processing; check the errno value. Wie soll ich das in RPG aber anstellen.


SSLInit_p = %alloc(%size(SSLInit));
SSLInit = *loval;
%str(%addr(c_keyringFile):%len(%trim(zzKeyRingFile ))+1) =
%trim(zzKeyRingFile);
%str(%addr(c_keyringPWD):%len(%trim(zzKeyRingPWD)) +1) =
%trim(zzKeyRingPWD);
sslinit.KeyringFile = %addr(c_KeyringFile);
sslinit.KeyringPWD = %addr(c_KeyringPWD);
sslinit.cipherList = %addr(SSLCipherList);
sslinit.cipherElem = %size(SSLCipherList);

rc = SSL_Init(p_SSLInit);

Hat jemand Erfahrung, woran das liegen könnte?

Danke

Hubert

Pikachu
08-06-10, 14:09
errno müßtest du so wie hier beschrieben (http://www.scottklement.com/rpg/socktut/errorhandling.html) herausbekommen können.

Hubert
08-06-10, 19:55
Danke, das war ein klasse Link. Jetzt hab ich zwar eine Fehlermeldung, die aber wenig aussagekräftig ist:

Die für ein Argument angegebene Adresse ist nicht korrekt.

Jetzt bin ich leider ganau so schlau wie vorher. Hat da noch jemand einen Tip?

AS400.lehrling
08-06-10, 23:18
Danke, das war ein klasse Link. Jetzt hab ich zwar eine Fehlermeldung, die aber wenig aussagekräftig ist:

Die für ein Argument angegebene Adresse ist nicht korrekt.

Jetzt bin ich leider ganau so schlau wie vorher. Hat da noch jemand einen Tip?

Eventuell passt ja die ssl Version oder Variante nicht zusammen.

Sind den alle notwendigen Ports verfügbar ?

Gruß AS400.lehrling

Fuerchau
09-06-10, 08:30
Ich denke, das hat eher mit der Prozedurdeklaration zu tun.
Die Art der übergebenen Parameter sind möglicherweise falsch.

Hubert
09-06-10, 08:55
Ich habe jetzt eine Information gefunden, dass SSL_INIT_Application statt SSL_INIT benutzt werden sollte. Ein Beispiel dazu habe ich auch gefunden und angepasst.


SSLInitApp_p = %alloc(%size(SSLInitApp));
SSLInitApp = *loval;
%str(%addr(c_sslAppID):%len(%trim(ssl_App_Name))) =
%trim(SSL_App_Name);
SSLInitApp.AppID = %addr(c_sslAppID);
SSLInitApp.AppIDLen = %scan(X'00':c_sslAppID) - 1;
SSLInitApp.lclCert = *Null;
SSLInitApp.lclCertLen = 0;
SSLInitApp.CipherList = %addr(SSLCipherList);
SSLInitApp.CipherElem = 11;
SSLInitApp.SessType = 0;
SSLInitApp.reserved1 = 0;
SSLInitApp.protocol = 0;
SSLInitApp.TimeOut = 0;
rc = SSL_Init_Application(%addr(SSLInitApp_p));
if rc <> 0;
// handle error!
Msg = %str(strerror(errno));
die(%editc(rc:'P') + ' ' + Msg);
endif;

Dann bekomme ich den Fehler zurück:


Der für das Argument angegebene Wert ist nicht korrekt.

Leider wird nicht angegeben, welches Argument. Sieht jemand was offensichtlich Falsches?