Add base64 encoded MD5 output for Hash Reader (#5315)

- Use it to send the Content-MD5 header correctly encoded to S3
  Gateway

- Fixes a bug in PutObject (including anonymous PutObject) and
  PutObjectPart with S3 Gateway found when testing with Mint.
This commit is contained in:
Aditya Manthramurthy
2017-12-21 17:27:33 -08:00
committed by kannappanr
parent bbe521ffec
commit f1355da72e
4 changed files with 12 additions and 3 deletions

View File

@@ -20,6 +20,7 @@ import (
"bytes"
"crypto/md5"
"crypto/sha256"
"encoding/base64"
"encoding/hex"
"errors"
"hash"
@@ -117,6 +118,11 @@ func (r *Reader) MD5HexString() string {
return hex.EncodeToString(r.md5sum)
}
// MD5Base64String returns base64 encoded MD5sum value.
func (r *Reader) MD5Base64String() string {
return base64.StdEncoding.EncodeToString(r.md5sum)
}
// SHA256HexString returns hex sha256 value.
func (r *Reader) SHA256HexString() string {
return hex.EncodeToString(r.sha256sum)

View File

@@ -40,6 +40,9 @@ func TestHashReaderHelperMethods(t *testing.T) {
if r.SHA256HexString() != "88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589" {
t.Errorf("Expected sha256hex \"88d4266fd4e6338d13b845fcf289579d209c897823b9217da3e161936f031589\", got %s", r.SHA256HexString())
}
if r.MD5Base64String() != "4vxxTEcn7pOV8yTNLn8zHw==" {
t.Errorf("Expected md5base64 \"4vxxTEcn7pOV8yTNLn8zHw==\", got \"%s\"", r.MD5Base64String())
}
if r.Size() != 4 {
t.Errorf("Expected size 4, got %d", r.Size())
}