[openssl-users] i2d and d2i fucntions
Rajeswari K
raji.kotamraju at gmail.com
Thu Feb 12 23:18:15 UTC 2015
Hello Dave,
Am really thankful to you. I am unaware that i2d_EC_PUBKEY() or i2d_xxxxx
function will move the pointer to after the encoded data. Due to which am
seeing unexpected data.
Based on your reply, i tried to print the data from the memory address
which i allocated. Now the data is exactly same as what i inputted through
d2i_PUBKEY().
This resolves my current issue. Once again, thanks alot.
Rajeswari.
On Fri, Feb 13, 2015 at 2:36 AM, Dave Thompson <dthompson at prinpay.com>
wrote:
> > From: openssl-users On Behalf Of Rajeswari K
> > Sent: Thursday, February 12, 2015 00:40
>
> > I have a query on d2i_PUBKEY() and i2d_PUBKEY().
>
> > i have a EC public key in form of character buffer.
> > Have inputted this character buffer to d2i_PUBKEY() and got EVP_PKEY
> format EC key.
>
> To be exact, a byte (or even more exact octet) buffer. In C
> (and C++ and ObjC) it's type 'char[]' or better 'unsigned char[]',
> but the values do not and often cannot represent *characters&.
>
> > Now i tried to input this EVP_PKEY to i2d_PUBKEY() to compare will i get
> > exactly same data which i gave as input to d2i_PUBKEY().
>
> > But i see that the outputs are completely different.
>
> > i2d_PUBKEY() is leaving lots of 0's at the o/p buffer.
>
> > 0
> > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> > 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
> > FD 1 10 DF AB 12 34 CD 0 6F 0 0 0 0 1 83
> > F 8B AF D8 D ................................................
>
> You must be doing something wrong. Probably the most common is,
> are you looking at the beginning of the buffer? Remember that after
> calling i2d_whatever, the pointer you give it is moved to point
> *after* the encoded data, at unused and often junk memory.
>
> If that's not it, reduce your code to the minimum that shows the
> problem, post it, and identify the version and build you are using.
>
> > My goal is, to get complete EC public key in form of asn1 der
> > encoded from EC_KEY structure.
>
> > I tried to use i2d_EC_PUBKEY() and i20_ECPublickey(). <snip>
>
> Note that PUBKEY is the X.509 SPKI format: it contains an
> AlgorithmIdentifier identifying the algorithm and the curve,
> *and* the public key value (a point) embedded in a bitstring,
> all combined into an ASN.1 structure and DER encoded.
>
> i2o_ECPublicKey (letter o not zero) uses a special non-ASN1
> non-DER encoding that contains *only* the point.
>
>
> _______________________________________________
> openssl-users mailing list
> To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mta.openssl.org/pipermail/openssl-users/attachments/20150213/9aad3128/attachment-0001.html>
More information about the openssl-users
mailing list