func (p *packageCmd) clearsign(filename string) error { // Load keyring signer, err := provenance.NewFromKeyring(p.keyring, p.key) if err != nil { return err } sig, err := signer.ClearSign(filename) if err != nil { return err } if flagDebug { fmt.Fprintln(p.out, sig) } return ioutil.WriteFile(filename+".prov", []byte(sig), 0755) }
// VerifyChart takes a path to a chart archive and a keyring, and verifies the chart. // // It assumes that a chart archive file is accompanied by a provenance file whose // name is the archive file name plus the ".prov" extension. func VerifyChart(path string, keyring string) (*provenance.Verification, error) { // For now, error out if it's not a tar file. if fi, err := os.Stat(path); err != nil { return nil, err } else if fi.IsDir() { return nil, errors.New("unpacked charts cannot be verified") } else if !isTar(path) { return nil, errors.New("chart must be a tgz file") } provfile := path + ".prov" if _, err := os.Stat(provfile); err != nil { return nil, fmt.Errorf("could not load provenance file %s: %s", provfile, err) } sig, err := provenance.NewFromKeyring(keyring, "") if err != nil { return nil, fmt.Errorf("failed to load keyring: %s", err) } return sig.Verify(path, provfile) }