On Mon, Dec 7, 2009 at 06:35, Charlie <[email protected]> wrote: > Hi! > > I know how to sign a string with crypto++, but, how can I sign a C > struct, for example, the next struct? > > struct c > { > double x; > double y; > int z; > }; >
You need to serialize your structure first, then sign/verify your serialized representation. There are a few common ways to do this. Two good ones are boost::serialziation and ASN1. Whichever way you do it, once you settle on a serialization format, it's just a matter of signing the bytes that are emitted by your serializer and verifying the bytes before you feed them to your deserializer. If you just use the in-memory representation of your native struct, it won't be portable across compilers/runtimes/platforms, as others have noted. FWIW, the most common standards that need to do this use ASN.1 to specify the structure and the Distinguished Encoding Rules (DER) to encode/decode it. There's a very good commercial ASN.1 compiler/library here: http://www.obj-sys.com/products_asn1c.shtml You can get free ASN.1 compilers/libraries here: http://code.google.com/p/a2c/ http://lionet.info/asn1c/ Boost serialization + documentation live here: http://www.boost.org/doc/libs/1_41_0/libs/serialization/doc/index.html You could naturally roll your own, also. The main thing is that the serialized representation needs to be the same across all the versions of the compilers/runtimes you care about. Unless your project is really trivial, I'd go with one of the above. If you only need to interoperate with different versions of your own code (albeit possibly across different platforms/versions of your compiler/runtime) I'd use boost. It's certainly easiest. If you need to interoperate with multiple independent implementations of your format, ASN1 is worth the learning curve IMO. HTH, Geoff -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to [email protected]. More information about Crypto++ and this group is available at http://www.cryptopp.com.
