Jump to content

Bug in Perl API?


Recommended Posts

Moin,

 

ich hab' mich heute mal an der Authentifizierung am Stapel versucht.

 

Perl ist die Sprache meiner Wahl.

 

Dabei stellte ich fest, dass die Authentifizierung nicht klappte. Im brickv geht's allerdings.

 

Kurzes rumstöbern in Tinkerforge/IPConnection.pm, Funktion 'authenticate', brachte zu Tage dass das Formatieren des Server-Nonces zur weiteren Verarbeitung Murks ergibt.

 

Jetzt sieht der Teil der Funktion, auf den es mir ankommt, wie folgt aus:

my @serverNonceArray = $self->_brickd_get_authentication_nonce();
#print "ServerNonceArray:\n" . Dumper(@serverNonceArray) . "\n\n";
# Following statement is superfluous, as $serverNonce is never used
#my $serverNonce = \@serverNonceArray;
        # below, we need to dereference...
my $serverNonceBytes = pack('C4', @{$serverNonceArray[0]});
#print "ServerNonceBytes:\n" . Dumper($serverNonceBytes) . "\n\n";
my $clientNonceNumber = $self->{next_authentication_nonce}++;

und funktioniert.

 

Kompletten Patch gerne auf Anfrage, wird aber vermutlich nicht nötig sein :-)

 

Möglicherweise ist die korrekte Kur aber eine Ebene tiefer im API sinnvoller, aber *darein* hab' ich mich nicht begeben...

 

Arno

Link zu diesem Kommentar
Share on other sites

  • 2 weeks later...

Stimmt, da ist ein Bug. Das hat original mal funktioniert, und ja die $serverNonce Variable war schon immer überflüssig. Allerdings wurde danach die Unpack Logik überarbeitet, so dass dann _brickd_get_authentication_nonce() nicht mehr ein Array sondern eine Referenz auf ein Array zurückgegeben hat. Die authenticate Funktion wurde aber daran nicht angepasst.

 

Deine Lösung dazu funktioniert, hier ist meine:

 

https://github.com/Tinkerforge/generators/commit/ce21670b63cc07417e0d3540a57f9f0d53a32fd7

 

Danke für den Hinweis!

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...