Jump to content

Bug in Perl API?


arnol

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 to comment
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 to comment
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...