From: "Martin Boßlet" Date: 2012-03-31T10:48:08+09:00 Subject: Re: Ruby openssl ECC help plz Am 31. März 2012 02:16 schrieb no name : > I am confused on how to properly export public ECC key. I can see it > only if I export both public key and private key with to_text, which is > bad. Otherwise how do I export just the public key? It's a bit tricky in the sense that you need to create a second EC instance which will only be assigned the public key. Unfortunately you can't to the straightforward thing ec.public_key.to_der, but you can do it like this: key = OpenSSL::PKey::EC.new key.group = OpenSSL::PKey::EC::Group.new('prime256v1') key.generate_key pub = OpenSSL::PKey::EC.new(key.group) pub.public_key = key.public_key pem = pub.to_pem # to_der is possible, too, of course gives you the public key encoding: -----BEGIN PUBLIC KEY----- MFkw... -----END PUBLIC KEY----- > #however this produces a 936 bit number and I think my public key should > be #much smaller than this...is converting it to a big number changing > the #bit size and confusing me ? > > > #Pretty sure this is wrong... > > puts key.dh_compute_key(a).bytesize > > #Because I think this generates a ECDH shared secret using the public > key #of someone else (if they ever manage to export it....). But I have > my own #questions about this. Why does it take only one parameter? Ok > the #elliptic curve is already specified with key, and then their public > key, #but how do I specify my private key? You don't have to - you are calling #dh_compute_key on an instance of EC, which consists of both the public key (point) and the private key (integer), and the parameter you pass in is the peer's public key (point). > Also this makes a shared > secret (I #think that is what it is doing) that is under 256 bits but > with my #elliptic curve set at what it is I would think the shared > secret would be #slightly over 256 bits..... Hmm, the result should always be of the same size, it depends on the actual curve what its output size finally will be. Which curve are you using? > also any help to clarify ruby openssl ecc is appreciated the > documentation is extremely lacking and I start to get it figured out but > it is much harder than the using ruby RSA or any of the symmetric > algorithms, and also much less documented (these things are related) Yes, I am aware of that, when I have the time, we'll add more docs!