Skip to content

Commit c5e520a

Browse files
committed
feat: ini 1271 sig
1 parent c17c5a2 commit c5e520a

File tree

2 files changed

+30
-23
lines changed

2 files changed

+30
-23
lines changed

cmd/sequence/signature.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,6 @@ func signatureEncode(p *SignatureEncodeParams) (interface{}, error) {
233233
}
234234
}
235235

236-
log.Printf("No signer found")
237-
238236
return 0, nil, core.ErrSigningNoSigner
239237
})
240238
} else {
@@ -291,8 +289,6 @@ func signatureEncode(p *SignatureEncodeParams) (interface{}, error) {
291289
}
292290
}
293291

294-
log.Printf("No signer found")
295-
296292
return 0, nil, core.ErrSigningNoSigner
297293
})
298294
}

core/v3/v3.go

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,39 +1126,43 @@ func (l *signatureTreeSignatureERC1271Leaf) reduceImageHash() (core.ImageHash, e
11261126

11271127
func (l *signatureTreeSignatureERC1271Leaf) write(writer io.Writer) error {
11281128
sigLen := uint64(len(l.Signature))
1129+
11291130
sizeSize := minBytesFor(sigLen)
1131+
if sizeSize == 0 {
1132+
// Ensure at least 1 byte for the length, even if 0
1133+
sizeSize = 1
1134+
}
11301135
if sizeSize > 3 {
11311136
return fmt.Errorf("signature length %d requires %d bytes, exceeds maximum of 3", sigLen, sizeSize)
11321137
}
11331138

1134-
weightSize := minWeightBytes(uint64(l.Weight))
1135-
var firstByte byte
1136-
if weightSize == 0 && l.Weight <= 3 {
1137-
firstByte = FLAG_SIGNATURE_ERC1271<<4 | (byte(sizeSize) << 2) | l.Weight
1138-
_, err := writer.Write([]byte{firstByte})
1139-
if err != nil {
1140-
return fmt.Errorf("unable to write ERC-1271 leaf type: %w", err)
1141-
}
1142-
} else if weightSize <= 1 {
1143-
firstByte = FLAG_SIGNATURE_ERC1271<<4 | (byte(sizeSize) << 2)
1144-
_, err := writer.Write([]byte{firstByte})
1145-
if err != nil {
1146-
return fmt.Errorf("unable to write ERC-1271 leaf type: %w", err)
1147-
}
1148-
_, err = writer.Write([]byte{l.Weight})
1139+
var firstByte byte = FLAG_SIGNATURE_ERC1271<<4 | (byte(sizeSize) << 2)
1140+
var weightBytes []byte
1141+
1142+
if l.Weight >= 1 && l.Weight <= 3 {
1143+
firstByte |= l.Weight
1144+
} else {
1145+
weightBytes = []byte{l.Weight}
1146+
}
1147+
1148+
_, err := writer.Write([]byte{firstByte})
1149+
if err != nil {
1150+
return fmt.Errorf("unable to write ERC-1271 leaf type: %w", err)
1151+
}
1152+
1153+
if len(weightBytes) > 0 {
1154+
_, err = writer.Write(weightBytes)
11491155
if err != nil {
11501156
return fmt.Errorf("unable to write dynamic weight: %w", err)
11511157
}
1152-
} else {
1153-
return fmt.Errorf("weight %d requires %d bytes, exceeds maximum of 1", l.Weight, weightSize)
11541158
}
11551159

1156-
_, err := writer.Write(l.Address.Bytes())
1160+
_, err = writer.Write(l.Address.Bytes())
11571161
if err != nil {
11581162
return fmt.Errorf("unable to write address: %w", err)
11591163
}
11601164

1161-
err = writeUintX(writer, uint64(len(l.Signature)), sizeSize)
1165+
err = writeUintX(writer, sigLen, sizeSize)
11621166
if err != nil {
11631167
return fmt.Errorf("unable to write signature length: %w", err)
11641168
}
@@ -2661,6 +2665,13 @@ func readUintX(size uint8, data *[]byte) (uint64, error) {
26612665
}
26622666

26632667
func writeUintX(writer io.Writer, value uint64, size byte) error {
2668+
if size == 0 {
2669+
_, err := writer.Write([]byte{0})
2670+
if err != nil {
2671+
return fmt.Errorf("unable to write uint0: %w", err)
2672+
}
2673+
return nil
2674+
}
26642675
buf := make([]byte, size)
26652676
for i := int(size) - 1; i >= 0; i-- {
26662677
buf[i] = byte(value & 0xff)

0 commit comments

Comments
 (0)