Support for SHA-512 hashes on publishing/downloads.

This commit is contained in:
Andrey Smirnov
2016-02-18 11:48:17 +03:00
parent ffafed472c
commit 77be7b9e3b
48 changed files with 208 additions and 229 deletions
+4
View File
@@ -30,6 +30,7 @@ var (
"MD5Sum",
"SHA1",
"SHA256",
"SHA512",
}
canonicalOrderBinary = []string{
@@ -59,6 +60,7 @@ var (
"MD5sum",
"SHA1",
"SHA256",
"SHA512",
"Description",
}
@@ -112,6 +114,8 @@ func isMultilineField(field string, isRelease bool) bool {
return isRelease
case "SHA256":
return isRelease
case "SHA512":
return isRelease
}
return false
}
+18 -3
View File
@@ -76,6 +76,7 @@ func NewPackageFromControlFile(input Stanza) *Package {
MD5: strings.TrimSpace(md5),
SHA1: strings.TrimSpace(input["SHA1"]),
SHA256: strings.TrimSpace(input["SHA256"]),
SHA512: strings.TrimSpace(input["SHA512"]),
},
}})
@@ -84,6 +85,7 @@ func NewPackageFromControlFile(input Stanza) *Package {
delete(input, "MD5Sum")
delete(input, "SHA1")
delete(input, "SHA256")
delete(input, "SHA512")
delete(input, "Size")
depends := &PackageDependencies{}
@@ -458,7 +460,7 @@ func (p *Package) Stanza() (result Stanza) {
}
if p.IsSource {
md5, sha1, sha256 := make([]string, 0), make([]string, 0), make([]string, 0)
md5, sha1, sha256, sha512 := []string{}, []string{}, []string{}, []string{}
for _, f := range p.Files() {
if f.Checksums.MD5 != "" {
@@ -470,11 +472,21 @@ func (p *Package) Stanza() (result Stanza) {
if f.Checksums.SHA256 != "" {
sha256 = append(sha256, fmt.Sprintf(" %s %d %s\n", f.Checksums.SHA256, f.Checksums.Size, f.Filename))
}
if f.Checksums.SHA512 != "" {
sha512 = append(sha512, fmt.Sprintf(" %s %d %s\n", f.Checksums.SHA512, f.Checksums.Size, f.Filename))
}
}
result["Files"] = strings.Join(md5, "")
result["Checksums-Sha1"] = strings.Join(sha1, "")
result["Checksums-Sha256"] = strings.Join(sha256, "")
if len(sha1) > 0 {
result["Checksums-Sha1"] = strings.Join(sha1, "")
}
if len(sha256) > 0 {
result["Checksums-Sha256"] = strings.Join(sha256, "")
}
if len(sha512) > 0 {
result["Checksums-Sha512"] = strings.Join(sha512, "")
}
} else {
f := p.Files()[0]
result["Filename"] = f.DownloadURL()
@@ -487,6 +499,9 @@ func (p *Package) Stanza() (result Stanza) {
if f.Checksums.SHA256 != "" {
result["SHA256"] = f.Checksums.SHA256
}
if f.Checksums.SHA512 != "" {
result["SHA512"] = f.Checksums.SHA512
}
result["Size"] = fmt.Sprintf("%d", f.Checksums.Size)
}
+6
View File
@@ -134,10 +134,16 @@ func (files PackageFiles) ParseSumFields(stanza Stanza) (PackageFiles, error) {
if err != nil {
return nil, err
}
files, err = files.parseSumField(stanza["Checksums-Sha256"], func(sum *utils.ChecksumInfo, data string) { sum.SHA256 = data })
if err != nil {
return nil, err
}
files, err = files.parseSumField(stanza["Checksums-Sha512"], func(sum *utils.ChecksumInfo, data string) { sum.SHA512 = data })
if err != nil {
return nil, err
}
return files, nil
}
+2
View File
@@ -670,6 +670,7 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP
release["MD5Sum"] = ""
release["SHA1"] = ""
release["SHA256"] = ""
release["SHA512"] = ""
release["Components"] = strings.Join(p.Components(), " ")
@@ -677,6 +678,7 @@ func (p *PublishedRepo) Publish(packagePool aptly.PackagePool, publishedStorageP
release["MD5Sum"] += fmt.Sprintf(" %s %8d %s\n", info.MD5, info.Size, path)
release["SHA1"] += fmt.Sprintf(" %s %8d %s\n", info.SHA1, info.Size, path)
release["SHA256"] += fmt.Sprintf(" %s %8d %s\n", info.SHA256, info.Size, path)
release["SHA512"] += fmt.Sprintf(" %s %8d %s\n", info.SHA512, info.Size, path)
}
releaseFile := indexes.ReleaseFile()