func generateMetadata(c *gc.C, stream string, versions ...version.Binary) []metadataFile { var metadata = make([]*tools.ToolsMetadata, len(versions)) for i, vers := range versions { basePath := fmt.Sprintf("%s/tools-%s.tar.gz", stream, vers.String()) metadata[i] = &tools.ToolsMetadata{ Release: vers.Series, Version: vers.Number.String(), Arch: vers.Arch, Path: basePath, } } var streamMetadata = map[string][]*tools.ToolsMetadata{ stream: metadata, } // TODO(perrito666) 2016-05-02 lp:1558657 index, legacyIndex, products, err := tools.MarshalToolsMetadataJSON(streamMetadata, time.Now()) c.Assert(err, jc.ErrorIsNil) objects := []metadataFile{} addTools := func(fileName string, content []byte) { // add unsigned objects = append(objects, metadataFile{fileName, content}) signedFilename, signedContent, err := sstesting.SignMetadata(fileName, content) c.Assert(err, jc.ErrorIsNil) // add signed objects = append(objects, metadataFile{signedFilename, signedContent}) } addTools(simplestreams.UnsignedIndex("v1", 2), index) if stream == "released" { addTools(simplestreams.UnsignedIndex("v1", 1), legacyIndex) } for stream, metadata := range products { addTools(tools.ProductMetadataPath(stream), metadata) } return objects }
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 }