Skip to content

Commit 565becc

Browse files
authored
Fix logic for bootstrap payload protection (#64)
1 parent f106cfa commit 565becc

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

types/virtualsnake.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,20 @@ func (a VirtualSnakeWatermark) WorseThan(b VirtualSnakeWatermark) bool {
2222
}
2323

2424
func (v *VirtualSnakeBootstrap) ProtectedPayload() ([]byte, error) {
25-
buffer := make([]byte, ed25519.SignatureSize+v.Sequence.Length())
26-
sn, err := v.Sequence.MarshalBinary(buffer[:])
25+
buffer := make([]byte, v.Sequence.Length()+v.Root.Length())
26+
offset := 0
27+
n, err := v.Sequence.MarshalBinary(buffer[:])
2728
if err != nil {
2829
return nil, fmt.Errorf("v.Sequence.MarshalBinary: %w", err)
2930
}
30-
rn := copy(buffer[:sn], v.RootPublicKey[:])
31-
rsn, err := v.RootSequence.MarshalBinary(buffer[sn+rn:])
31+
offset += n
32+
offset += copy(buffer[offset:], v.RootPublicKey[:])
33+
n, err = v.RootSequence.MarshalBinary(buffer[offset:])
3234
if err != nil {
33-
return nil, fmt.Errorf("v.Sequence.MarshalBinary: %w", err)
35+
return nil, fmt.Errorf("v.RootSequence.MarshalBinary: %w", err)
3436
}
35-
return buffer[:sn+rn+rsn], nil
37+
offset += n
38+
return buffer[:offset], nil
3639
}
3740

3841
func (v *VirtualSnakeBootstrap) MarshalBinary(buf []byte) (int, error) {

0 commit comments

Comments
 (0)