in image/image.go [613:646]
func (img *Image) CollectSigs() ([]sec.Sig, error) {
var sigs []sec.Sig
var keyHashTlv *ImageTlv
for i, _ := range img.Tlvs {
t := &img.Tlvs[i]
if t.Header.Type == IMAGE_TLV_KEYHASH {
if keyHashTlv != nil {
return nil, errors.Errorf(
"image contains keyhash tlv without subsequent signature")
}
keyHashTlv = t
} else {
sigType, ok := ImageTlvTypeToSigType(t.Header.Type)
if ok {
if keyHashTlv == nil {
return nil, errors.Errorf(
"image contains signature tlv without preceding keyhash")
}
sigs = append(sigs, sec.Sig{
Type: sigType,
KeyHash: keyHashTlv.Data,
Data: t.Data,
})
keyHashTlv = nil
}
}
}
return sigs, nil
}