From 581cb2d2bac3356bc39ca840497c141169dc490f Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Tue, 8 Sep 2020 13:39:13 +0300 Subject: [PATCH] [#138] v2/object: Update to neofs-api jindo release Signed-off-by: Alex Vanin --- v2/object/convert.go | 44 ++++++++++++++++++++++++++++++---- v2/object/grpc/service.go | 22 +++++++++++++---- v2/object/grpc/service.pb.go | Bin 246028 -> 252479 bytes v2/object/marshal.go | 45 +++++++++++++++++++++++++++++++++++ v2/object/marshal_test.go | 6 ++++- v2/object/types.go | 40 ++++++++++++++++++++++++++++--- 6 files changed, 145 insertions(+), 12 deletions(-) diff --git a/v2/object/convert.go b/v2/object/convert.go index 7beb640..a18d43f 100644 --- a/v2/object/convert.go +++ b/v2/object/convert.go @@ -283,6 +283,42 @@ func HeaderFromGRPCMessage(m *object.Header) *Header { return h } +func HeaderWithSignatureToGRPCMessage(h *HeaderWithSignature) *object.HeaderWithSignature { + if h == nil { + return nil + } + + m := new(object.HeaderWithSignature) + + m.SetHeader( + HeaderToGRPCMessage(h.GetHeader()), + ) + + m.SetSignature( + refs.SignatureToGRPCMessage(h.GetSignature()), + ) + + return m +} + +func HeaderWithSignatureFromGRPCMessage(m *object.HeaderWithSignature) *HeaderWithSignature { + if m == nil { + return nil + } + + h := new(HeaderWithSignature) + + h.SetHeader( + HeaderFromGRPCMessage(m.GetHeader()), + ) + + h.SetSignature( + refs.SignatureFromGRPCMessage(m.GetSignature()), + ) + + return h +} + func ObjectToGRPCMessage(o *Object) *object.Object { if o == nil { return nil @@ -942,8 +978,8 @@ func GetHeaderPartFullToGRPCMessage(r *GetHeaderPartFull) *object.HeadResponse_B m := new(object.HeadResponse_Body_Header) - m.SetHeader( - HeaderToGRPCMessage(r.GetHeader()), + m.SetHeaderWithSignature( + HeaderWithSignatureToGRPCMessage(r.GetHeaderWithSignature()), ) return m @@ -956,8 +992,8 @@ func GetHeaderPartFullFromGRPCMessage(m *object.HeadResponse_Body_Header) *GetHe r := new(GetHeaderPartFull) - r.SetHeader( - HeaderFromGRPCMessage(m.GetHeader()), + r.SetHeaderWithSignature( + HeaderWithSignatureFromGRPCMessage(m.GetHeaderWithSignature()), ) return r diff --git a/v2/object/grpc/service.go b/v2/object/grpc/service.go index 515d3e8..025af1c 100644 --- a/v2/object/grpc/service.go +++ b/v2/object/grpc/service.go @@ -330,8 +330,8 @@ func (m *HeadResponse_Body_ShortHeader) SetShortHeader(v *ShortHeader) { } } -// GetHeader returns object header. -func (m *HeadResponse_Body_Header) GetHeader() *Header { +// GetHeaderWithSignature returns object header. +func (m *HeadResponse_Body_Header) GetHeaderWithSignature() *HeaderWithSignature { if m != nil { return m.Header } @@ -339,13 +339,27 @@ func (m *HeadResponse_Body_Header) GetHeader() *Header { return nil } -// SetHeader sets object header. -func (m *HeadResponse_Body_Header) SetHeader(v *Header) { +// SetHeaderWithSignature sets object header. +func (m *HeadResponse_Body_Header) SetHeaderWithSignature(v *HeaderWithSignature) { if m != nil { m.Header = v } } +// SetHeader sets object header. +func (m *HeaderWithSignature) SetHeader(v *Header) { + if m != nil { + m.Header = v + } +} + +// SetSignature of the header. +func (m *HeaderWithSignature) SetSignature(v *refs.Signature) { + if m != nil { + m.Signature = v + } +} + // SetHeader sets full header of the object. func (m *HeadResponse_Body) SetHeader(v *HeadResponse_Body_Header) { if m != nil { diff --git a/v2/object/grpc/service.pb.go b/v2/object/grpc/service.pb.go index 2c8fc74f905fd6349a2b6be915702e0e08c3a060..46462c6880b0eed80cfe53469e5e38aa83842d40 100644 GIT binary patch delta 9385 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

E&qOU^jau;Uv(ScxsXlIgHbr6IBc( zt&53Hp)}_eSWy6N>B$KSe_Dce5(ogIDaFtctpHy+Uyz5eyYGy^C+(TsVR~!aDaL z$4La5;yRKbp^Hb7=V1AeOru260MfO9*aoL?Up2)g{%EIn8Up$VJZvv^oek=syWVID zwS4IBJ(Zx)3P%TMhxQMU&;&M8;y_u@Mi#zK!rTK}4fjbUIv-!IL5#ivF1kRP4H`+F z95OJ(y3+~ZFp-iDURMR3_>h6L99%c}o>(v->mzAIC8RdtFgqd%QVhI9O(ZMkKp!dR zc?g^Cw;#qf*~gNL9efQS|7I zmO#X6F1Y=DxyZt+4IPPs6K#ZEw7&iXD@gEL1ebfZDq9n5|0BlbnufaU!75BpF32k? zo(HaQ11XcAb?rmN^|xX4G5kCM9nh(8gRLr?`rk)5A#uw~Z;9V%YHVIvp7!mO>?98@ zNL(1$l_M2~z~wZ>^%+HzsP55U=POA5oWE!scS4rO<~srWZpMMaqEx>EXm4`aHw@a(7b-a# z?2`?&Gw8^53-;UI(Mj;9a^Vxy(MeO^p+IVoUEt(y{s!1hRoA zZ5vjBefGv2DglV~zr#rYTiXuG$%p*8Yqp?s5@O1qu;;@nCvh4g)42!oExsxTWJNKh zYlBKSfN*1DpH2YGl_a6dP;w6<7yEvN} z$z74{JtsFj`}dFK-h6rC!r9e#E;$@z;Rm^e|2`!9+#|U!>BGV`*^}SQ{bcsw@RFfi z_WEus?Srr6evrL*?~-d~mwi9?RBm?Fw{w3DW}kg8H?(H{zi`O5-;ldzHotPoE06vk DSbz>( delta 8243 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 ClW|A@ diff --git a/v2/object/marshal.go b/v2/object/marshal.go index f19c54f..c1ceea1 100644 --- a/v2/object/marshal.go +++ b/v2/object/marshal.go @@ -33,6 +33,9 @@ const ( hdrAttributesField = 10 hdrSplitField = 11 + hdrWithSigHeaderField = 1 + hdrWithSigSignatureField = 2 + objIDField = 1 objSignatureField = 2 objHeaderField = 3 @@ -385,6 +388,48 @@ func (h *Header) StableSize() (size int) { return size } +func (h *HeaderWithSignature) StableMarshal(buf []byte) ([]byte, error) { + if h == nil { + return []byte{}, nil + } + + if buf == nil { + buf = make([]byte, h.StableSize()) + } + + var ( + offset, n int + err error + ) + + n, err = proto.NestedStructureMarshal(hdrWithSigHeaderField, buf[offset:], h.header) + if err != nil { + return nil, err + } + + offset += n + + n, err = proto.NestedStructureMarshal(hdrWithSigSignatureField, buf[offset:], h.signature) + if err != nil { + return nil, err + } + + offset += n + + return buf, nil +} + +func (h *HeaderWithSignature) StableSize() (size int) { + if h == nil { + return 0 + } + + size += proto.NestedStructureSize(hdrVersionField, h.header) + size += proto.NestedStructureSize(hdrContainerIDField, h.signature) + + return size +} + func (o *Object) StableMarshal(buf []byte) ([]byte, error) { if o == nil { return []byte{}, nil diff --git a/v2/object/marshal_test.go b/v2/object/marshal_test.go index 04f3a39..e63683b 100644 --- a/v2/object/marshal_test.go +++ b/v2/object/marshal_test.go @@ -590,8 +590,12 @@ func generateHeadResponseBody(flag bool) *object.HeadResponseBody { short.SetShortHeader(generateShortHeader("short id")) part = short } else { + hdrWithSig := new(object.HeaderWithSignature) + hdrWithSig.SetHeader(generateHeader(30)) + hdrWithSig.SetSignature(generateSignature("sig", "key")) + full := new(object.GetHeaderPartFull) - full.SetHeader(generateHeader(30)) + full.SetHeaderWithSignature(hdrWithSig) part = full } diff --git a/v2/object/types.go b/v2/object/types.go index cdce248..5c6c9ac 100644 --- a/v2/object/types.go +++ b/v2/object/types.go @@ -57,6 +57,12 @@ type Header struct { split *SplitHeader } +type HeaderWithSignature struct { + header *Header + + signature *refs.Signature +} + type Object struct { objectID *refs.ObjectID @@ -136,7 +142,7 @@ type GetHeaderPart interface { } type GetHeaderPartFull struct { - hdr *Header + hdr *HeaderWithSignature } type GetHeaderPartShort struct { @@ -528,6 +534,34 @@ func (h *Header) SetSplit(v *SplitHeader) { } } +func (h *HeaderWithSignature) GetHeader() *Header { + if h != nil { + return h.header + } + + return nil +} + +func (h *HeaderWithSignature) SetHeader(v *Header) { + if h != nil { + h.header = v + } +} + +func (h *HeaderWithSignature) GetSignature() *refs.Signature { + if h != nil { + return h.signature + } + + return nil +} + +func (h *HeaderWithSignature) SetSignature(v *refs.Signature) { + if h != nil { + h.signature = v + } +} + func (o *Object) GetObjectID() *refs.ObjectID { if o != nil { return o.objectID @@ -1138,7 +1172,7 @@ func (r *HeadRequest) SetVerificationHeader(v *session.RequestVerificationHeader } } -func (h *GetHeaderPartFull) GetHeader() *Header { +func (h *GetHeaderPartFull) GetHeaderWithSignature() *HeaderWithSignature { if h != nil { return h.hdr } @@ -1146,7 +1180,7 @@ func (h *GetHeaderPartFull) GetHeader() *Header { return nil } -func (h *GetHeaderPartFull) SetHeader(v *Header) { +func (h *GetHeaderPartFull) SetHeaderWithSignature(v *HeaderWithSignature) { if h != nil { h.hdr = v }