parseCompactSignature
Parses a hex formatted compact signature (EIP-2098) into a structured CompactSignature
parseCompactSignature
Parses a hex formatted compact signature (EIP-2098) into a structured CompactSignature with R and YParityAndS components.
Import
import "github.com/ChefBingbong/viem-go/utils/signature"Usage
import "github.com/ChefBingbong/viem-go/utils/signature"
sig, err := signature.ParseCompactSignature( "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b907e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064",)if err != nil { log.Fatal(err)}
fmt.Printf("R: %s", sig.R)// R: 0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b90
fmt.Printf("YParityAndS: %s", sig.YParityAndS)// YParityAndS: 0x7e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064Returns
- Type:
(*signature.CompactSignature, error)
A structured compact signature with R and YParityAndS fields.
Parameters
signatureHex (required)
- Type:
string
The hex formatted compact signature string. Must be 64 bytes (128 hex characters with 0x prefix).
sig, _ := signature.ParseCompactSignature( "0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b907e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064",)Compact Signature Structure
The parsed compact signature contains:
- R: The R component (32 bytes as hex string)
- YParityAndS: The S component with yParity encoded in the top bit of the first byte (32 bytes as hex string)
Functions
ParseCompactSignature
Parses a hex compact signature string:
sig, _ := signature.ParseCompactSignature("0x68a020a209d3d56c46f38cc50a33f704f4a9a10a59377f8dd762ac66910e9b907e865ad05c4035ab5792787d4a0297a43617ae897930a6fe4d822b8faea52064")
ParseCompactSignatureBytes
Parses a 64-byte compact signature:
sig, _ := signature.ParseCompactSignatureBytes([]byte{0x68, 0xa0, ...})
Compact Signature Format (EIP-2098)
The compact signature format is:
- First 32 bytes: R component
- Next 32 bytes: S component with yParity encoded in the top bit (bit 7) of the first byte
- If bit 7 is set, yParity = 1
- If bit 7 is clear, yParity = 0
This reduces the signature size from 65 bytes to 64 bytes.