// metadataUnchanged returns true if the content of metadata for stream in stor is the same // as generatedMetadata, ignoring the "updated" attribute. func metadataUnchanged(stor storage.Storage, stream string, generatedMetadata []byte) (bool, error) { mdPath := ProductMetadataPath(stream) filePath := path.Join(storage.BaseToolsPath, mdPath) existingDataReader, err := stor.Get(filePath) // If the file can't be retrieved, consider it has changed. if err != nil { return false, nil } defer existingDataReader.Close() existingData, err := ioutil.ReadAll(existingDataReader) if err != nil { return false, err } // To do the comparison, we unmarshall the metadata, clear the // updated value, and marshall back to a string. existingMetadata, err := removeMetadataUpdated(existingData) if err != nil { return false, err } newMetadata, err := removeMetadataUpdated(generatedMetadata) if err != nil { return false, err } return existingMetadata == newMetadata, nil }
func SignFileData(stor storage.Storage, fileName string) error { r, err := stor.Get(fileName) if err != nil { return err } defer r.Close() fileData, err := ioutil.ReadAll(r) if err != nil { return err } signedName, signedContent, err := sstesting.SignMetadata(fileName, fileData) if err != nil { return err } err = stor.Put(signedName, strings.NewReader(string(signedContent)), int64(len(string(signedContent)))) if err != nil { return err } return nil }