func()

in cli_tools/import_precheck/precheck/check_sha2.go [41:71]


func (s *SHA2DriverSigningCheck) Run() (*Report, error) {
	r := &Report{name: s.GetName()}
	if runtime.GOOS != "windows" || !strings.Contains(s.OSInfo.Version, "6.1") {
		r.result = Skipped
		r.Info("Only applicable on Windows 2008 systems.")
		return r, nil
	}

	ctx := context.Background()
	pkgs, err := packages.GetInstalledPackages(ctx)
	if err != nil {
		return nil, fmt.Errorf("GetInstalledPackages error: %s", err)
	}

	for _, pkg := range pkgs.WUA {
		for _, id := range pkg.KBArticleIDs {
			if id == sha2Windows2008R2KB {
				r.Info(fmt.Sprintf("Windows Update containing SHA2 driver signing support found: %v", pkg))
				return r, nil
			}
		}
	}
	for _, pkg := range pkgs.QFE {
		if pkg.HotFixID == sha2Windows2008R2KB {
			r.Info(fmt.Sprintf("Windows Update containing SHA2 driver signing support found: %v", pkg))
			return r, nil
		}
	}
	r.Fatal(fmt.Sprintf("%s is required to support SHA2-signed drivers.", sha2Windows2008R2KB))
	return r, nil
}