When you say unknown fields- you mean that if hostA has an .proto schema of 
version N and hostB has a .proto schema of version M<N
and when hostA would send a message to hostB, hostB would drop all fields 
its schema doesn't contain? 

On Tuesday, 14 February 2017 19:21:16 UTC+2, Adam Cozzette wrote:
>
> You might be able to make this work, but it can be tricky to get it right 
> and so I wouldn't necessarily recommend it. One major problem is that maps 
> are serialized non-deterministically because they are logically unordered. 
> Another problem is unknown fields; if you're using proto3 then unknown 
> fields are dropped at parsing time, so when B parses and reserializes the 
> proto it will lose any unknown fields.
>
> On Sat, Feb 11, 2017 at 9:19 AM, Yacov Manevich <[email protected] 
> <javascript:>> wrote:
>
>> Hi all.
>>
>> We use protobuf in our product, and I have a question regarding 
>> incorporating it with signatures.
>> If I have 2 hosts (let's assume they can be different platforms, OS, 
>> etc.) - hostA and hostB and the following scenario:
>>
>> A creates message M, sends B the message M, as well as the output of 
>> proto.Marshal 
>> <https://godoc.org/github.com/golang/protobuf/proto#Marshal> on M (the 
>> bytes) - denoted as Ma
>> 1) A sends a message M to B via gRPC
>> 2) B receives the message, and calls proto.Marshal 
>> <https://godoc.org/github.com/golang/protobuf/proto#Marshal> on M, 
>> denoted Mb.
>> 3) B checks whether Ma is equal to Mb.
>>
>> Is Ma equal to Mb?
>>
>> I'm asking the question because I wish to sign messages in the following 
>> way:
>> Defining a message M:
>> message M {
>> field1 ... 
>> fiedl2 ...
>> ...
>> bytes signature = n;
>> }
>>
>> And then the sender would:
>> 1) Nullify the signature
>> 2) call proto.Marshal 
>> <https://godoc.org/github.com/golang/protobuf/proto#Marshal>
>> 3) Hash the bytes
>> 4) Sign the hash
>> 5) Put the signature into M.signature
>> 6) Send M over the wire
>>
>> The receiver would:
>> 1) Backup the signature
>> 2) Nullify the signature field
>> 3) Call proto.Unmarshal 
>> <https://godoc.org/github.com/golang/protobuf/proto#Unmarshal> on M
>> 4) hash the bytes
>> 5) Verify the signature
>>
>>
>> Would that work or not?
>>
>>
>> Many thanks in advance, Yacov.
>>
>> -- 
>> 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 [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/protobuf.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to