On 6 September 2013 07:22, Jonas Andersson <jonasanderssonm...@gmail.com> wrote: > Hi, > > Thanks for your response. > I'm sure that I only have the x-coordinate and when I reed up on ecc, it > seems to be possible to verify the signature by only using this > x-coordinate. > Is there a way to do this with OpenSSL? >
In order to verify a signature you must have a copy of the public key. The public key is a point on the curve. Points on the curve can be communicated either in uncompressed format (providing both the x and y co-ordinates), or in compressed format (providing the x co-ordinate and the least significant bit of y). OpenSSL supports both of these. Without the y bit you do not have a full public key, and there is no support for verifying a signature without this bit in OpenSSL (and I would be surprised if there was in any other library either). I am not aware of any standards which supply the x-coord without the y bit. However, if you don't have the y-bit it could still be possible to verify the signature....the y-bit can only have two possible values at the end of the day!! Therefore you would have to try both values and see if either of them verify. Not a very nice solution though. Matt > Br, > Jonas > > > > 2013/9/3 Matt Caswell <fr...@baggins.org> >> >> On 3 September 2013 15:16, Jonas Andersson <jonasanderssonm...@gmail.com> >> wrote: >> > Hi all, >> > >> > Is there a way to verify a signature with ECDSA_do_verify having only >> > the >> > x-coordinate (in public key) available? >> >> Are you sure you *only* have the x-coord and not a point in compressed >> format? The difference being that with compressed format you get an >> octet at the front specifying which of the two possible y values to >> use (the y bit) followed by the full octets for the x coordinate. >> >> If you have it in compressed format as an octet string there are >> functions to load it. You need to make sure that the point conversion >> form for the curve is POINT_CONVERSION_COMPRESSED. You can set this >> using EC_GROUP_set_point_conversion_form (not sure off the top of my >> head what the default is for this). You can then load your compressed >> point using EC_POINT_oct2point. >> >> Alternatively you can use EC_POINT_set_compressed_coordinates_GFp or >> EC_POINT_set_compressed_coordinates_GF2m (for prime curves or binary >> curves as appropriate). >> >> Hope that helps, >> >> Matt >> ______________________________________________________________________ >> OpenSSL Project http://www.openssl.org >> User Support Mailing List openssl-users@openssl.org >> Automated List Manager majord...@openssl.org > > ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org