Skip to content

Instantly share code, notes, and snippets.

@vbatts
Created August 31, 2016 21:35
Show Gist options
  • Save vbatts/25061d0a7205f0f11f2c6124f9813390 to your computer and use it in GitHub Desktop.
Save vbatts/25061d0a7205f0f11f2c6124f9813390 to your computer and use it in GitHub Desktop.
Study in writing SHA1 digest of content in the gzip header
package main
import (
"compress/gzip"
"crypto/rand"
"crypto/sha1"
"fmt"
"io/ioutil"
"log"
)
func main() {
data := make([]byte, 4096)
if _, err := rand.Reader.Read(data); err != nil {
log.Fatal(err)
}
digest := sha1.Sum(data)
fh, err := ioutil.TempFile("", "sha1_gz.")
if err != nil {
log.Fatal(err)
}
gzWrtr := gzip.NewWriter(fh)
gzWrtr.Header.Comment = fmt.Sprintf("sha1:%x", digest)
if _, err := gzWrtr.Write(data); err != nil {
log.Fatal(err)
}
if err := gzWrtr.Close(); err != nil {
log.Fatal(err)
}
if err := fh.Close(); err != nil {
log.Fatal(err)
}
fmt.Println(fh.Name())
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment