Yuyutsu / pidgin-opensteamworks

Automatically exported from code.google.com/p/pidgin-opensteamworks
0 stars 0 forks source link

steam: password encrypt failed #70

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
(07:24:32) certificate: Successfully verified certificate for steamcommunity.com
(07:24:32) steam: post_or_get_ssl_connect_cb
(07:24:32) steam: executing callback for 
/mobilelogin/getrsakey?username=fakeName
(07:24:32) steam: password encrypt failed
(07:24:32) steam: Encrypted password is (null)
(07:24:32) connection: Connection error on 0x2d8b880 (reason: 5 description: 
Unable to RSA encrypt the password)
(07:24:32) account: Disconnecting account fakeName (0x2502ab0)
(07:24:32) connection: Disconnecting connection 0x2d8b880
(07:24:32) idle: Setting fakeName unidle

I can open https://steamcommunity.com//mobilelogin/getrsakey?username=fakeName 
and get what looks like a key. Did the format change?

{"success":true,"publickey_mod":"AF5D711900473A212C61CF8306E5841D722018DBC8FCE4B
61149036F36882AB384617CCAD1ECEF8291C43D43AF4D113F7B70C8DFA48ABD05FD1D663C2E697A8
634ADC4D522F722397987A95F82E9E0E7E224A61125390966A02F6822D2DA03E3E26A51952188596
A52072FC7632C4E7E8DA66DC18E422A0396F4D8D9A5F200B46072832D120EF60920B3C83E6DFE730
22AE55DAB32ECB40BBC1D17835245C521A0A32034A22B5AD649E70949F8156601839C2B6C9E630E9
AADD63346FF38A151C069A3017504AC0C1D1571A0DB055906780201CDCDB517350715A6EEE7822DE
9223D2D42D099B9F46DA0DD0892E010BA8F6601CEEB015DD3D40EFD4302BD0E03","publickey_ex
p":"010001","timestamp":"122461650000"}

Original issue reported on code.google.com by weedy2...@gmail.com on 15 Nov 2013 at 12:41

GoogleCodeExporter commented 9 years ago
What operating system are you on? What version of libnss do you have installed? 

Original comment by eionrobb on 16 Nov 2013 at 2:55

GoogleCodeExporter commented 9 years ago
I'm getting the same error, i updated the Adium plugin for OSX to use a newer 
version of pidgin-opensteamworks 
https://github.com/tripplet/Adium-Steam-IM

I'm using OSX 10.9 with nss version 13.14.1 installed with homebrew 
(https://github.com/mxcl/homebrew/blob/master/Library/Formula/nss.rb)

Original comment by tobias.t...@gmail.com on 16 Nov 2013 at 6:27

GoogleCodeExporter commented 9 years ago
Same problem on Sabayon Linux x86-64. I also tried to compile it myself, the 
build goes well (a few warnings for unused variables), but I get the same error 
message. libnss is installed as dev-libs/nss-3.15.3.

Original comment by de...@gmx.it on 9 Dec 2013 at 2:30

GoogleCodeExporter commented 9 years ago
Similar error on OpenSUSE 13.1 x86-64, compiled the plugin myself and tried the 
provided .so and both produce "Unable to RSA encrypt the password"

Original comment by Echtol...@gmail.com on 10 Dec 2013 at 9:54

GoogleCodeExporter commented 9 years ago
I'm not sure what is causing the problem with nss, but in the Adium-Steam-IM 
plugin the problem seems to be completly fixed by using openssl instead of nss.

It should be fairly easy to port the modifications in steam_rsa.c back into 
opensteamworks.
https://github.com/tripplet/Adium-Steam-IM/blob/master/opensteamworks/steam-mobi
le/steam_rsa.c

Original comment by tobias.t...@gmail.com on 10 Dec 2013 at 10:37

GoogleCodeExporter commented 9 years ago
@tobias.tangemann unfortunately the use of OpenSSL on anything other than OSX 
isn't GPL-compatible

Original comment by eionrobb on 11 Dec 2013 at 2:52

GoogleCodeExporter commented 9 years ago
I didn't know about this issue. Could you include a exception for openssl as 
stated here: http://en.wikipedia.org/wiki/OpenSSL#Licensing, or what is the 
licensing state of my derived work "Adium-Steam-IM" which includes the GPL 
opensteamworks code?

Original comment by tobias.t...@gmail.com on 11 Dec 2013 at 8:49

GoogleCodeExporter commented 9 years ago
@tobias, unfortunately not as the plugin is a derivative of Pidgin and must 
follow its licence (which doesn't include the exception and probably never 
will).

Original comment by eionrobb on 12 Dec 2013 at 2:19

GoogleCodeExporter commented 9 years ago
I ported the code to polarssl to fix this possible license issue.
The new code should now be GPL compatible.
As an additional bonus polarssl is linked static so it should work under linux 
and windows too.
https://github.com/tripplet/Adium-Steam-IM/blob/master/opensteamworks/steam-mobi
le/steam_rsa.c

Hopefully everything should now be hunky-dory.

Original comment by tobias.t...@gmail.com on 17 Dec 2013 at 3:02

GoogleCodeExporter commented 9 years ago
I'm getting this with spectrum2.  Got any pointers? I don't know where to start.

Original comment by sdfgste...@gmail.com on 3 May 2014 at 11:29

GoogleCodeExporter commented 9 years ago
@tobias I don't suppose you have the .so of your fix?  The current one from 
here still doesn't seem to work, and I can't see how to extract it from the 
Adium OS X package (I need the so for libpurple directly for use with Spectrum.)

Original comment by sdfgste...@gmail.com on 24 Jul 2014 at 5:41

GoogleCodeExporter commented 9 years ago
OSX uses a completely different format (.dylib) which you can not use under 
linux.
In addition I do not compile the complete code only the part which is needed to 
integrate it into Adium (for pidgin you need everything) and I also compile the 
pidgin-opensteamworks directly into the adium plugin, so no separate lib is 
generated.

Original comment by tobias.t...@gmail.com on 25 Jul 2014 at 2:31

GoogleCodeExporter commented 9 years ago
@sdfgste You should start here: 
https://developer.pidgin.im/wiki/CHowTo/BasicPluginHowto and try to compile it 
yourself or ask the project maintainer  eionrobb

Original comment by tobias.t...@gmail.com on 25 Jul 2014 at 2:37

GoogleCodeExporter commented 9 years ago
Ok, I'm on a source distro, but I had to rewrite the package to apply a patch 
to the tarball source (which it fetches) to the svn source.

Now that I've done that, and forced PolarSSL to be defined, I get the following 
when libpurple tries to load the plugin.

plugins:/usr/lib64/purple-2/libsteam.so is not loadable: undefined symbol: 
ctr_drbg_random

From what I can see, that's a polarssl function. Is there something else that's 
looking for this function? libpurple itself?

Original comment by sdfgste...@gmail.com on 25 Jul 2014 at 10:18

GoogleCodeExporter commented 9 years ago
You need to link the polarssl library by adding -lpolarssl to the gcc command 
line in the Makefile.

Hope that helps!

Original comment by alexanderfb on 25 Jul 2014 at 10:23

GoogleCodeExporter commented 9 years ago
What about -I/usr/include/polarssl, will I need that too?

Original comment by sdfgste...@gmail.com on 25 Jul 2014 at 10:36

GoogleCodeExporter commented 9 years ago
Includes are only used during compilation. If you're getting undefined 
reference errors then your object code is already compiled. IOW, it shouldn't 
really make a difference either way.

Original comment by alexanderfb on 25 Jul 2014 at 10:39

GoogleCodeExporter commented 9 years ago
I added -lpolarssl, and I'm getting the same error.  The CFLAGS line looks like 
this:

CFLAGS += -Wall -fPIC -DUSE_POLARSSL_CRYPTO -lpolarssl

The Makefile I'm using is here: http://bpaste.net/show/501489/

Any pointers would be greatly appreciated.

Original comment by sdfgste...@gmail.com on 25 Jul 2014 at 10:51

GoogleCodeExporter commented 9 years ago
This is the Gentoo version, isn't it? Gentoo has the ebuild for 1.4 but 1.4 
doesn't have the PolarSSL code in it yet (you can check this by grepping for 
USE_POLARSSL_CRYPTO in steam_rsa.c). You need to compile the SVN version 
directly from the repo.

The simplest way to do this would be to clone the repo using the "Source" tab 
at the top of this page and then follow the instructions under "Checkout". You 
might need to emerge subversion first. Then compile it (after tweaking the 
Makefile to use -DUSE_POLARSSL_CRYPTO and -lpolarssl) and put the resulting 
libsteam.so in ~/.purple/plugins.

That should do the trick for now.

Original comment by alexanderfb on 25 Jul 2014 at 10:57

GoogleCodeExporter commented 9 years ago
Actually, now that I think of it, if this was the straight Gentoo version, you 
wouldn't be getting as far as the undefined reference errors. Perplexing.

Original comment by alexanderfb on 25 Jul 2014 at 10:58

GoogleCodeExporter commented 9 years ago
Oh! My bad. I just took another look at the Makefile you're using. You need to 
put -lpolarssl in LDFLAGS since it's a linker flag. Sorry I missed that.

Original comment by alexanderfb on 25 Jul 2014 at 10:59

GoogleCodeExporter commented 9 years ago
Yes, it's the Gentoo version.  However what I spent most of the evening doing 
was writing an ebuild that patched the differences between the 1.4 and the svn 
versions.  I also incorporated the Makefile patch as well.

https://github.com/sdfg2/sdfg-overlay/tree/master/x11-plugins/pidgin-opensteamwo
rks is the ebuild in my overlay.

I moved -lpolarssl to LDFLAGS (as you can see), but I'm still getting the same 
error.

Original comment by sdfgste...@gmail.com on 25 Jul 2014 at 11:04

GoogleCodeExporter commented 9 years ago
This might be an argument order thing with gcc. Try putting it in LIBS instead.

Original comment by alexanderfb on 25 Jul 2014 at 11:09

GoogleCodeExporter commented 9 years ago
Same again :(

Original comment by sdfgste...@gmail.com on 25 Jul 2014 at 11:11

GoogleCodeExporter commented 9 years ago
Can you try doing an ldd on the library you created and pasting the list of 
linked libraries?

ldd /usr/lib/pidgin/libsteam.so ?

Original comment by alexanderfb on 25 Jul 2014 at 11:15

GoogleCodeExporter commented 9 years ago
linux-vdso.so.1 (0x00007ffff35ff000)
libc.so.6 => /lib64/libc.so.6 (0x00007fe1533a4000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe153980000)

So it's not linked, right?

(I totally meant to go down this road earlier, sorry, should have thought of it)

Original comment by sdfgste...@gmail.com on 25 Jul 2014 at 11:17

GoogleCodeExporter commented 9 years ago
That's it? Yeah, it's not linked. It must be something simple I'm missing since 
I'm tired and preoccupied.

For reference, here's my libsteam.so's links:

    linux-vdso.so.1 (0x00007fff781ff000)
    libjson-glib-1.0.so.0 => /usr/lib64/libjson-glib-1.0.so.0 (0x00007f66a81ba000)
    libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007f66a7e54000)
    libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007f66a7c02000)
    libpurple.so.0 => /usr/lib64/libpurple.so.0 (0x00007f66a78cd000)
    libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f66a75a1000)
    libssl3.so => /usr/lib64/libssl3.so (0x00007f66a7355000)
    libsmime3.so => /usr/lib64/libsmime3.so (0x00007f66a7127000)
    libnss3.so => /usr/lib64/libnss3.so (0x00007f66a6de8000)
    libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007f66a6bbb000)
    libplds4.so => /usr/lib64/libplds4.so (0x00007f66a69b7000)
    libplc4.so => /usr/lib64/libplc4.so (0x00007f66a67b2000)
    libnspr4.so => /usr/lib64/libnspr4.so (0x00007f66a6572000)
    libpolarssl.so.0 => /usr/lib64/libpolarssl.so.0 (0x00007f66a631b000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f66a60fe000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f66a5d4d000)
    libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007f66a5b49000)
    libz.so.1 => /lib64/libz.so.1 (0x00007f66a5933000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f66a571b000)
    libffi.so.6 => /usr/lib64/libffi.so.6 (0x00007f66a5512000)
    libdbus-glib-1.so.2 => /usr/lib64/libdbus-glib-1.so.2 (0x00007f66a52ea000)
    libdbus-1.so.3 => /usr/lib64/libdbus-1.so.3 (0x00007f66a50ac000)
    libgstfarsight-0.10.so.0 => /usr/lib64/libgstfarsight-0.10.so.0 (0x00007f66a4e97000)
    libgstinterfaces-0.10.so.0 => /usr/lib64/libgstinterfaces-0.10.so.0 (0x00007f66a4c84000)
    libgstreamer-0.10.so.0 => /usr/lib64/libgstreamer-0.10.so.0 (0x00007f66a4999000)
    libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f66a4631000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f66a4333000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f66a412e000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f66a3f26000)
    /lib64/ld-linux-x86-64.so.2 (0x00000034c8200000)
    libgstbase-0.10.so.0 => /usr/lib64/libgstbase-0.10.so.0 (0x00007f66a3ccf000)
    libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f66a3acd000)
    libicuuc.so.52 => /usr/lib64/libicuuc.so.52 (0x00007f66a3753000)
    liblzma.so.5 => /lib64/liblzma.so.5 (0x00007f66a3530000)
    libicudata.so.52 => /usr/lib64/libicudata.so.52 (0x00007f66a1cc2000)
    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/libstdc++.so.6 (0x00007f66a19bb000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f66a17a5000)

Original comment by alexanderfb on 25 Jul 2014 at 11:22

GoogleCodeExporter commented 9 years ago
So it's not even linked to the other normal stuff, never mind polarssl :(

No idea how to fix this.

Original comment by sdfgste...@gmail.com on 26 Jul 2014 at 11:47

GoogleCodeExporter commented 9 years ago
Now that I'm more awake, I took another look at your patch 
(https://github.com/sdfg2/sdfg-overlay/blob/master/x11-plugins/pidgin-opensteamw
orks/files/pidgin-opensteamworks-1.4-r1.patch).

On line 36, the -lpolarssl is *inside* the parentheses defining the shell call 
to pkg-config. This passes -lpolarssl to pkg-config as a shell argument which 
probably confuses it as it's not a valid pkg-config argument. Try putting the 
-lpolarssl *outside* the closing paren:

! LIBS += $(shell $(PKG_CONFIG) --libs glib-2.0 json-glib-1.0 purple nss 
polarssl) -lpolarssl

Original comment by alexanderfb on 26 Jul 2014 at 1:19

GoogleCodeExporter commented 9 years ago
Well, progress, of some description.  Now it's undefined symbol: 
json_object_get_boolean_member.  ldd says it's now got libpolarssl and libz 
linked, along with the first three.  So I'm guessing there's a lot else that's 
not linked.

I don't get why it's not linked to the other things though, none of the 
Makefiles I've looked at have a huge list of -l statements.  Is it a wider 
configuration issue due to emerge?

Original comment by sdfgste...@gmail.com on 26 Jul 2014 at 1:26

GoogleCodeExporter commented 9 years ago
You could try seeing what you get from pkg-config --libs glib-2.0 json-glib-1.0 
purple nss polarssl

Original comment by alexanderfb on 26 Jul 2014 at 1:28

GoogleCodeExporter commented 9 years ago
Ah, got it now.  polarssl isn't a library in pkg-config, so the pkg-config 
returned an error.  I would have expected it to return what it could, but meh.

All works now!  Thank you for those pointers, they will come in handy in other 
ebuilds I just know I'll be faced with :-D

Now to tidy up the package.

Original comment by sdfgste...@gmail.com on 26 Jul 2014 at 1:37

GoogleCodeExporter commented 9 years ago
Glad to help. And hopefully this exchange on the tracker will exhaust 
solutions/outline a process for future searchers trying to solve the same issue.

Original comment by alexanderfb on 26 Jul 2014 at 1:41