mirror of
https://github.com/docker/cli.git
synced 2026-01-18 08:21:31 +03:00
Merge pull request #7331 from erikh/simplify_checksum
Simplify utils.CheckSum.Read to use TeeReader instead Upstream-commit: a0338ff04be1d478e16ccd476a12e1c045fa6a5e Component: engine
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
_ "crypto/sha512"
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
@@ -642,7 +643,7 @@ func (r *Registry) PushImageLayerRegistry(imgID string, layer io.Reader, registr
|
||||
h := sha256.New()
|
||||
h.Write(jsonRaw)
|
||||
h.Write([]byte{'\n'})
|
||||
checksumLayer := &utils.CheckSum{Reader: tarsumLayer, Hash: h}
|
||||
checksumLayer := io.TeeReader(tarsumLayer, h)
|
||||
|
||||
req, err := r.reqFactory.NewRequest("PUT", registry+"images/"+imgID+"/layer", checksumLayer)
|
||||
if err != nil {
|
||||
@@ -671,7 +672,7 @@ func (r *Registry) PushImageLayerRegistry(imgID string, layer io.Reader, registr
|
||||
return "", "", utils.NewHTTPRequestError(fmt.Sprintf("Received HTTP code %d while uploading layer: %s", res.StatusCode, errBody), res)
|
||||
}
|
||||
|
||||
checksumPayload = "sha256:" + checksumLayer.Sum()
|
||||
checksumPayload = "sha256:" + hex.EncodeToString(h.Sum(nil))
|
||||
return tarsumLayer.Sum(jsonRaw), checksumPayload, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"hash"
|
||||
"io"
|
||||
)
|
||||
|
||||
type CheckSum struct {
|
||||
io.Reader
|
||||
Hash hash.Hash
|
||||
}
|
||||
|
||||
func (cs *CheckSum) Read(buf []byte) (int, error) {
|
||||
n, err := cs.Reader.Read(buf)
|
||||
if err == nil {
|
||||
cs.Hash.Write(buf[:n])
|
||||
}
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (cs *CheckSum) Sum() string {
|
||||
return hex.EncodeToString(cs.Hash.Sum(nil))
|
||||
}
|
||||
Reference in New Issue
Block a user