]> Cypherpunks repositories - keks.git/commitdiff
Return tail for convenience
authorSergey Matveev <stargrave@stargrave.org>
Tue, 18 Feb 2025 13:53:32 +0000 (16:53 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Tue, 18 Feb 2025 13:53:32 +0000 (16:53 +0300)
go/cm/cmd/enctool/main.go
go/cm/cmd/keytool/main.go
go/cm/cmd/sigtool/main.go
go/cm/sign/pub.go
go/cm/sign/signed.go

index 097a7e2d4f78d1d50d45d67713d35c6bbc924321af397917ed29fdb1dbacede1..7b152acf4e94218e21fc7f9c2a5d6b186f8a563b127379f56ba1adf4fa398940 100644 (file)
@@ -155,7 +155,7 @@ func main() {
        var pubs []cm.AV
        var pubIds []uuid.UUID
        flag.Func("pub", "Path to public key to encrypt to", func(v string) error {
-               signed, err := sign.PubParse(mustReadFile(v))
+               signed, _, err := sign.PubParse(mustReadFile(v))
                if err != nil {
                        return err
                }
index c82642880a3101fe5101132ed4618f8d9086b0888614944824d23ad36b6f3f76..45acf8c78340eb2d478e6a5a4da91375ef4ca053692c4e9c610c9734f75c2a6f 100644 (file)
@@ -130,7 +130,7 @@ func main() {
        var caPubs []*sign.Signed
        for _, issuingPub := range issuingPubs {
                var signed *sign.Signed
-               signed, err = sign.PubParse(mustReadFile(issuingPub))
+               signed, _, err = sign.PubParse(mustReadFile(issuingPub))
                if err != nil {
                        log.Fatal(err)
                }
@@ -148,7 +148,7 @@ func main() {
 
        if *verify {
                var signed *sign.Signed
-               signed, err = sign.PubParse(mustReadFile(*pubPath))
+               signed, _, err = sign.PubParse(mustReadFile(*pubPath))
                if err != nil {
                        log.Fatal(err)
                }
@@ -163,7 +163,7 @@ func main() {
        var pubLoad *sign.PubLoad
        var signed *sign.Signed
        if caPrv != nil {
-               signed, err = sign.PubParse(mustReadFile(*pubPath))
+               signed, _, err = sign.PubParse(mustReadFile(*pubPath))
                if err != nil {
                        log.Fatal(err)
                }
index 92c64f5afda0913d840a7fe7cfa9516caa6107e4ad44622ffaf26acc4174e6b6..585f3f04dc774aa585a5699bb51c47b87f33abca5720d52d7ab089730370decd 100644 (file)
@@ -69,7 +69,7 @@ func main() {
        if *pubPath == "" {
                log.Fatal("no -pub is set")
        }
-       pub, err := sign.PubParse(mustReadFile(*pubPath))
+       pub, _, err := sign.PubParse(mustReadFile(*pubPath))
        if err != nil {
                log.Fatal(err)
        }
index 40f13b0f525542505101a460fec6ac930022d61077c0d905a98a5d55b195b5b5..23ece336610a468a0a69e38ce5325ee188a800168ac8c12ad034e28849ce7411 100644 (file)
@@ -117,7 +117,7 @@ func (signed *Signed) PubParse() error {
 }
 
 // Parse KEKS-encoded data as Signed with the PubLoad (certificate) contents.
-func PubParse(data []byte) (signed *Signed, err error) {
+func PubParse(data []byte) (signed *Signed, tail []byte, err error) {
        {
                var magic keks.Magic
                magic, data = keks.StripMagic(data)
@@ -126,7 +126,7 @@ func PubParse(data []byte) (signed *Signed, err error) {
                        return
                }
        }
-       signed, err = SignedParse(data)
+       signed, tail, err = SignedParse(data)
        if err != nil {
                return
        }
index 92bce222d2f5e7323ea6d6909ff0219b7ee5538d69cdb86e18cb4dc7bb56bb0e..e0d8399c7c0bad5c26133ee4cbd4d40de17e82d4450767706ba98d31f0063a32 100644 (file)
@@ -98,22 +98,25 @@ func SignedValidate(signed *Signed) (err error) {
 
 // Parse cm-signed from KEKS-encoded data. This is just a wrapper over
 // DecodeStruct and SignedValidate.
-func SignedParse(data []byte) (*Signed, error) {
+func SignedParse(data []byte) (signed *Signed, tail []byte, err error) {
        {
                var magic keks.Magic
                magic, data = keks.StripMagic(data)
                if magic != "" && magic != SignedMagic {
-                       return nil, errors.New("wrong magic")
+                       err = errors.New("wrong magic")
+                       return
                }
        }
        d := keks.NewDecoderFromBytes(data, nil)
-       var signed Signed
-       err := d.DecodeStruct(&signed)
+       var sd Signed
+       err = d.DecodeStruct(&sd)
        if err != nil {
-               return nil, err
+               return
        }
-       err = SignedValidate(&signed)
-       return &signed, err
+       tail = d.B
+       signed = &sd
+       err = SignedValidate(signed)
+       return
 }
 
 // Sign Signed's contents and sigTBS corresponding data with the