From: Sergey Matveev Date: Wed, 11 Dec 2024 12:59:21 +0000 (+0300) Subject: Simpler encode API X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c2602603b152f6e7e462043cdd63dcb037422b8604f56ab6e4104585ac9c4911;p=keks.git Simpler encode API --- diff --git a/gyac/cmd/test-vector-anys/main.go b/gyac/cmd/test-vector-anys/main.go index 1cc4e8c..e6fb7a5 100644 --- a/gyac/cmd/test-vector-anys/main.go +++ b/gyac/cmd/test-vector-anys/main.go @@ -105,5 +105,5 @@ func main() { }, "uuid": uuid.MustParse("0e875e3f-d385-49eb-87b4-be42d641c367"), } - fmt.Println(hex.EncodeToString(gyac.EncodeItem(nil, gyac.ItemFromGo(data)))) + fmt.Println(hex.EncodeToString(gyac.ItemFromGo(data).Encode(nil))) } diff --git a/gyac/enc.go b/gyac/enc.go index dda40dc..26ccdc2 100644 --- a/gyac/enc.go +++ b/gyac/enc.go @@ -177,7 +177,7 @@ func AtomRawEncode(buf []byte, raw *Raw) []byte { return append(append(buf, byte(raw.T)), raw.V...) } -func EncodeItem(buf []byte, item *Item) []byte { +func (item *Item) Encode(buf []byte) []byte { switch item.Typ() { case ItemNIL: return AtomNILEncode(buf) @@ -194,7 +194,7 @@ func EncodeItem(buf []byte, item *Item) []byte { case ItemList: buf = AtomListEncode(buf) for _, v := range item.V.([]*Item) { - buf = EncodeItem(buf, v) + buf = v.Encode(buf) } buf = AtomEOCEncode(buf) case ItemMap: @@ -207,7 +207,7 @@ func EncodeItem(buf []byte, item *Item) []byte { buf = AtomMapEncode(buf) for _, k := range keys { buf = AtomStrEncode(buf, k) - buf = EncodeItem(buf, m[k]) + buf = m[k].Encode(buf) } buf = AtomEOCEncode(buf) case ItemBlob: diff --git a/gyac/yacpki/algo.go b/gyac/yacpki/algo.go index cd70703..150ab0b 100644 --- a/gyac/yacpki/algo.go +++ b/gyac/yacpki/algo.go @@ -44,7 +44,7 @@ func (av *AV) Id() (id uuid.UUID) { default: panic("unsupported algorithm") } - utils.MustWrite(hasher, gyac.EncodeItem(nil, gyac.ItemFromGo(av))) + utils.MustWrite(hasher, gyac.ItemFromGo(av).Encode(nil)) id, err := uuid.NewRandomFromReader(bytes.NewReader(hasher.Sum(nil))) if err != nil { panic(err) diff --git a/gyac/yacpki/cer.go b/gyac/yacpki/cer.go index 54f5cec..5f22521 100644 --- a/gyac/yacpki/cer.go +++ b/gyac/yacpki/cer.go @@ -185,10 +185,7 @@ func (sd *SignedData) CerCheckSignatureFrom(parent *CerLoad) (err error) { return } tbs := SignedDataTBS{T: sd.Load.T, V: sd.Load.V, TBS: sig.TBS} - return parent.CheckSignature( - gyac.EncodeItem(nil, gyac.ItemFromGo(tbs)), - sig.Sign.V, - ) + return parent.CheckSignature(gyac.ItemFromGo(tbs).Encode(nil), sig.Sign.V) } func (sd *SignedData) CerLoad() *CerLoad { diff --git a/gyac/yacpki/cmd/yacertool/main.go b/gyac/yacpki/cmd/yacertool/main.go index 0546c7b..b51a0c5 100644 --- a/gyac/yacpki/cmd/yacertool/main.go +++ b/gyac/yacpki/cmd/yacertool/main.go @@ -143,8 +143,9 @@ func main() { } prv = prvEd25519 pubRaw = pubEd25519[:] - err = os.WriteFile(*prvPath, gyac.EncodeItem(nil, - gyac.ItemFromGo(yacpki.AV{A: *algo, V: prvEd25519.Seed()})), 0o600) + err = os.WriteFile(*prvPath, gyac.ItemFromGo( + yacpki.AV{A: *algo, V: prvEd25519.Seed()}, + ).Encode(nil), 0o600) if err != nil { log.Fatal(err) } @@ -174,8 +175,7 @@ func main() { if err != nil { log.Fatal(err) } - raw := gyac.EncodeItem(nil, - gyac.ItemFromGo(yacpki.AV{A: *algo, V: prvKey.RawBE()})) + raw := gyac.ItemFromGo(yacpki.AV{A: *algo, V: prvKey.RawBE()}).Encode(nil) prv, err = yacpki.PrvParse(raw) if err != nil { log.Fatal(err) @@ -216,7 +216,7 @@ func main() { log.Fatal(err) } - err = os.WriteFile(*cerPath, gyac.EncodeItem(nil, gyac.ItemFromGo(sd)), 0o666) + err = os.WriteFile(*cerPath, gyac.ItemFromGo(sd).Encode(nil), 0o666) if err != nil { log.Fatal(err) } diff --git a/gyac/yacpki/cmd/yacsdtool/main.go b/gyac/yacpki/cmd/yacsdtool/main.go index fe5bb53..be8f330 100644 --- a/gyac/yacpki/cmd/yacsdtool/main.go +++ b/gyac/yacpki/cmd/yacsdtool/main.go @@ -98,7 +98,7 @@ func main() { if err != nil { log.Fatal(err) } - err = os.WriteFile(*sdPath, gyac.EncodeItem(nil, gyac.ItemFromGo(sd)), 0o666) + err = os.WriteFile(*sdPath, gyac.ItemFromGo(sd).Encode(nil), 0o666) if err != nil { log.Fatal(err) } diff --git a/gyac/yacpki/signed-data.go b/gyac/yacpki/signed-data.go index 6c86e65..124bfeb 100644 --- a/gyac/yacpki/signed-data.go +++ b/gyac/yacpki/signed-data.go @@ -136,7 +136,7 @@ func (sd *SignedData) SignWith( sig.Sign.A = parent.Pub[0].A sig.Sign.V, err = prv.Sign( rand.Reader, - gyac.EncodeItem(nil, gyac.ItemFromGo(sdTBS)), + gyac.ItemFromGo(sdTBS).Encode(nil), crypto.Hash(0), ) if err != nil {