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
}
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)
}
if *verify {
var signed *sign.Signed
- signed, err = sign.PubParse(mustReadFile(*pubPath))
+ signed, _, err = sign.PubParse(mustReadFile(*pubPath))
if err != nil {
log.Fatal(err)
}
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)
}
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)
}
}
// 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)
return
}
}
- signed, err = SignedParse(data)
+ signed, tail, err = SignedParse(data)
if err != nil {
return
}
// 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