serializeCompactSignature
Combines compact signature components into a hex string (EIP-2098)
Combines compact signature components into a hex string (EIP-2098)
Combines compact signature components (R and YParityAndS) into a hex formatted compact signature string (EIP-2098).
import "github.com/ChefBingbong/viem-go/utils/signature"import "github.com/ChefBingbong/viem-go/utils/signature"
hexSig, err := signature.SerializeCompactSignature(&signature.CompactSignature{ R: "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90", YParityAndS: "0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064",})if err != nil { log.Fatal(err)}fmt.Printf("Compact Signature: %s", hexSig)// Compact Signature: 0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b907e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064
// Serialize to bytessigBytes, _ := signature.SerializeCompactSignatureBytes(&signature.CompactSignature{ R: "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90", YParityAndS: "0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064",})// []byte{0x68, 0xa0, ...} (64 bytes)(string, error) for SerializeCompactSignature, ([]byte, error) for SerializeCompactSignatureBytesThe serialized compact signature. SerializeCompactSignature returns a hex string with 0x prefix (64 bytes), SerializeCompactSignatureBytes returns raw bytes.
*signature.CompactSignatureThe compact signature struct containing R and YParityAndS components.
sig := &signature.CompactSignature{ R: "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90", YParityAndS: "0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064",}
hexSig, _ := signature.SerializeCompactSignature(sig)stringThe R component of the signature (32 bytes as hex string).
sig := &signature.CompactSignature{ R: "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90", // ...}stringThe S component with yParity encoded in the top bit of the first byte (32 bytes as hex string).
sig := &signature.CompactSignature{ YParityAndS: "0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064", // ...}Serializes a compact signature to a hex string:
hexSig, _ := signature.SerializeCompactSignature(sig)
// "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b907e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064"
Serializes a compact signature to bytes:
sigBytes, _ := signature.SerializeCompactSignatureBytes(sig)
// []byte{0x68, 0xa0, ...} (64 bytes)
Converts a regular Signature to a CompactSignature:
compact, _ := signature.SignatureToCompactSignature(&signature.Signature{
R: "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90",
S: "0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064",
YParity: 0,
})
Converts a CompactSignature back to a regular Signature:
sig, _ := signature.CompactSignatureToSignature(compact)