in image/v1.go [235:266]
func generateV1SigTlvEc(key sec.PrivSignKey, hash []byte) (ImageTlv, error) {
sig, err := GenerateSigEc(key, hash)
if err != nil {
return ImageTlv{}, err
}
sigLen := key.SigLen()
if len(sig) > int(sigLen) {
return ImageTlv{}, errors.Errorf("signature truncated")
}
b := &bytes.Buffer{}
if _, err := b.Write(sig); err != nil {
return ImageTlv{}, errors.Wrapf(err, "failed to append sig")
}
pad := make([]byte, int(sigLen)-len(sig))
if _, err := b.Write(pad); err != nil {
return ImageTlv{}, errors.Wrapf(err,
"failed to serialize image trailer")
}
return ImageTlv{
Header: ImageTlvHdr{
Type: sigTlvTypeV1(key),
Pad: 0,
Len: sigLen + uint16(len(pad)),
},
Data: b.Bytes(),
}, nil
}