Hi Group, I am trying to serialize/deserialize a sub message using Protobuf. The reasons for this is signing. I want to be able to sign part of my message. To be able to do that, I need to canonicalize it somehow.
If it matters, I use protbuf 3.0.0-alpha (With the proto2 language) with Python3.4. Example file: testp.proto package my_package; message my_mess { message data { optional uint64 x = 1; optional uint64 y = 2; optional uint64 z = 3; } optional bytes signature = 4; } In this example, I want to sign the data part of the message. Therefore I want to serialize only my_mess.data, sign it, put the signature into my_mess.signature, and then serialize the full message my_mess. Compiling testp.proto: $ protoc -I=. --python_out=. testp.proto [libprotobuf WARNING google/protobuf/compiler/parser.cc:471] No syntax specified for the proto file. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.) I noticed that mm.data have the methods SerializeToString and SerializePartialToString. However, it seems like it is not possible to run them directly. Here are my naive attempts: $ ipython In [1]: import testp_pb2 In [2]: mm = testp_pb2.my_mess() In [3]: mm.data.x = 1 In [4]: mm.data.y = 2 In [5]: mm.data.z = 3 In [6]: mm.data.SerializeToString() --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-6-faa8e25906ca> in <module>() ----> 1 mm.data.SerializeToString() TypeError: SerializeToString() missing 1 required positional argument: 'self' In [7]: mm.data.SerializePartialToString() --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-7-4b2c1ff0b1c9> in <module>() ----> 1 mm.data.SerializePartialToString() TypeError: SerializePartialToString() missing 1 required positional argument: 'self' I was wondering if there is some simple solution I'm missing. I am open to other suggestions, if you have an idea of signing just a part of the message in an elegant way. Note that this question was cross posted at: http://stackoverflow.com/questions/27958571/serializing-part-of-a-message-with-protobuf However I got no response in there. Thank you for your help. Regards, real. -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to protobuf+unsubscr...@googlegroups.com. To post to this group, send email to protobuf@googlegroups.com. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.