in mfg/verify.go [159:194]
func (m *Mfg) VerifyManifest(man manifest.MfgManifest) error {
if man.Format != 2 {
return errors.Errorf(
"only mfgimage format 2 supported (have=%d)", man.Format)
}
mfgHash, err := m.Hash(man.EraseVal)
if err != nil {
return err
}
hashStr := hex.EncodeToString(mfgHash)
if hashStr != man.MfgHash {
return errors.Errorf(
"manifest mfg hash different from mmr: man=%s mfg=%s",
man.MfgHash, hashStr)
}
if err := m.validateManFlashMap(man); err != nil {
return err
}
if err := m.validateManMmrs(man); err != nil {
return err
}
// Make sure each target is fully present.
for _, t := range man.Targets {
if man.FindFlashAreaDevOff(man.Device, t.Offset) == nil {
return errors.Errorf(
"no flash area in mfgimage corresponding to target \"%s\"",
t.Name)
}
}
return nil
}