Files
linea-monorepo/prover/utils/validation.go
Julien Marchand a001342170 chore: Initial commit
Co-authored-by: Franklin Delehelle <franklin.delehelle@odena.eu>
Co-authored-by: Alexandre Belling <alexandrebelling8@gmail.com>
Co-authored-by: Pedro Novais <jpvnovais@gmail.com>
Co-authored-by: Roman Vaseev <4833306+Filter94@users.noreply.github.com>
Co-authored-by: Bradley Bown <bradbown@googlemail.com>
Co-authored-by: Victorien Gauch <85494462+VGau@users.noreply.github.com>
Co-authored-by: Nikolai Golub <nikolai.golub@consensys.net>
Co-authored-by: The Dark Jester <thedarkjester@users.noreply.github.com>
Co-authored-by: jonesho <81145364+jonesho@users.noreply.github.com>
Co-authored-by: Gaurav Ahuja <gauravahuja9@gmail.com>
Co-authored-by: Azam Soleimanian <49027816+Soleimani193@users.noreply.github.com>
Co-authored-by: Andrei A <andrei.alexandru@consensys.net>
Co-authored-by: Arijit Dutta <37040536+arijitdutta67@users.noreply.github.com>
Co-authored-by: Gautam Botrel <gautam.botrel@gmail.com>
Co-authored-by: Ivo Kubjas <ivo.kubjas@consensys.net>
Co-authored-by: gusiri <dreamerty@postech.ac.kr>
Co-authored-by: FlorianHuc <florian.huc@gmail.com>
Co-authored-by: Arya Tabaie <arya.pourtabatabaie@gmail.com>
Co-authored-by: Julink <julien.fontanel@consensys.net>
Co-authored-by: Bogdan Ursu <bogdanursuoffice@gmail.com>
Co-authored-by: Jakub Trąd <jakubtrad@gmail.com>
Co-authored-by: Alessandro Sforzin <alessandro.sforzin@consensys.net>
Co-authored-by: Olivier Bégassat <olivier.begassat.cours@gmail.com>
Co-authored-by: Steve Huang <97596526+stevehuangc7s@users.noreply.github.com>
Co-authored-by: bkolad <blazejkolad@gmail.com>
Co-authored-by: fadyabuhatoum1 <139905934+fadyabuhatoum1@users.noreply.github.com>
Co-authored-by: Blas Rodriguez Irizar <rodrigblas@gmail.com>
Co-authored-by: Eduardo Andrade <eduardofandrade@gmail.com>
Co-authored-by: Ivo Kubjas <tsimmm@gmail.com>
Co-authored-by: Ludcour <ludovic.courcelas@consensys.net>
Co-authored-by: m4sterbunny <harrie.bickle@consensys.net>
Co-authored-by: Alex Panayi <145478258+alexandrospanayi@users.noreply.github.com>
Co-authored-by: Diana Borbe - ConsenSys <diana.borbe@consensys.net>
Co-authored-by: ThomasPiellard <thomas.piellard@gmail.com>
2024-07-31 18:17:20 +02:00

58 lines
1.3 KiB
Go

package utils
import (
"encoding/hex"
"errors"
"fmt"
"strings"
)
// Appends a wrapped error to `err` if x is not a valid hexstring. The err
// wrapper must be a string of the form "err message : %w". Size if the expected
// length of the string. Set to -1 to ignore the length. The length refers to
// the number of encoded bytes, not the number of characters.
func ValidateHexString(joinToErr *error, x, errWrapper string, size int) {
// Be tolerant to hex strings without an hex prefix.
x = strings.TrimPrefix(x, "0x")
if _, err := hex.DecodeString(x); err != nil {
*joinToErr = errors.Join(
*joinToErr,
fmt.Errorf(
errWrapper,
fmt.Errorf("could not decode hexstring `%v` : %w", x, err),
),
)
return
}
if len(x)/2 != size && size > -1 {
*joinToErr = errors.Join(
*joinToErr,
fmt.Errorf(
errWrapper,
fmt.Errorf(
"`%v` encodes a %d bytes string, expected %v bytes",
x, len(x)/2, size),
),
)
return
}
}
// Validate that the timestamps are increasing.
func ValidateTimestamps(joinToErr *error, timestamps ...uint) {
for i := 1; i < len(timestamps); i++ {
if timestamps[i] <= timestamps[i-1] {
*joinToErr = errors.Join(
*joinToErr,
fmt.Errorf(
"timestamps are not increasing : %v", timestamps,
),
)
}
}
}