Documentation ¶
Index ¶
- Constants
- Variables
- func AddChecksumHeader(w http.ResponseWriter, c map[string]string)
- func ReadCheckSums(b []byte) map[string]string
- func TransferChecksumHeader(w http.ResponseWriter, r *http.Request)
- type BadDigest
- type Checksum
- type ChecksumMismatch
- type ChecksumType
- type ErrSizeMismatch
- type Reader
- func (r *Reader) ActualSize() int64
- func (r *Reader) AddChecksum(req *http.Request, ignoreValue bool) error
- func (r *Reader) Close() error
- func (r *Reader) ContentCRC() map[string]string
- func (r *Reader) ContentCRCType() ChecksumType
- func (r *Reader) ETag() etag.ETag
- func (r *Reader) MD5() []byte
- func (r *Reader) MD5Base64String() string
- func (r *Reader) MD5Current() []byte
- func (r *Reader) MD5HexString() string
- func (r *Reader) Read(p []byte) (int, error)
- func (r *Reader) SHA256() []byte
- func (r *Reader) SHA256HexString() string
- func (r *Reader) Size() int64
- type SHA256Mismatch
Constants ¶
const MinIOMultipartChecksum = "x-minio-multipart-checksum"
MinIOMultipartChecksum is as metadata on multipart uploads to indicate checksum type.
Variables ¶
var ErrInvalidChecksum = errors.New("invalid checksum")
ErrInvalidChecksum is returned when an invalid checksum is provided in headers.
Functions ¶
func AddChecksumHeader ¶
func AddChecksumHeader(w http.ResponseWriter, c map[string]string)
AddChecksumHeader will transfer any checksum value that has been checked.
func ReadCheckSums ¶
ReadCheckSums will read checksums from b and return them.
func TransferChecksumHeader ¶
func TransferChecksumHeader(w http.ResponseWriter, r *http.Request)
TransferChecksumHeader will transfer any checksum value that has been checked.
Types ¶
type Checksum ¶
type Checksum struct { Type ChecksumType Encoded string Raw []byte }
Checksum is a type and base 64 encoded value.
func GetContentChecksum ¶
GetContentChecksum returns content checksum. Returns ErrInvalidChecksum if so. Returns nil, nil if no checksum.
func NewChecksumFromData ¶
func NewChecksumFromData(t ChecksumType, data []byte) *Checksum
NewChecksumFromData returns a new checksum from specified algorithm and base64 encoded value.
func NewChecksumString ¶
NewChecksumString returns a new checksum from specified algorithm and base64 encoded value.
func NewChecksumWithType ¶
func NewChecksumWithType(alg ChecksumType, value string) *Checksum
NewChecksumWithType is similar to NewChecksumString but expects input algo of ChecksumType.
func (*Checksum) AppendTo ¶
AppendTo will append the checksum to b. ReadCheckSums reads the values back.
type ChecksumMismatch ¶
ChecksumMismatch - when content checksum does not match with what was sent from client.
func (ChecksumMismatch) Error ¶
func (e ChecksumMismatch) Error() string
type ChecksumType ¶
type ChecksumType uint32
ChecksumType contains information about the checksum type.
const ( // ChecksumTrailing indicates the checksum will be sent in the trailing header. // Another checksum type will be set. ChecksumTrailing ChecksumType = 1 << iota // ChecksumSHA256 indicates a SHA256 checksum. ChecksumSHA256 // ChecksumSHA1 indicates a SHA-1 checksum. ChecksumSHA1 // ChecksumCRC32 indicates a CRC32 checksum with IEEE table. ChecksumCRC32 // ChecksumCRC32C indicates a CRC32 checksum with Castagnoli table. ChecksumCRC32C // ChecksumInvalid indicates an invalid checksum. ChecksumInvalid // ChecksumNone indicates no checksum. ChecksumNone ChecksumType = 0 )
func NewChecksumType ¶
func NewChecksumType(alg string) ChecksumType
NewChecksumType returns a checksum type based on the algorithm string.
func (ChecksumType) Hasher ¶
func (c ChecksumType) Hasher() hash.Hash
Hasher returns a hasher corresponding to the checksum type. Returns nil if no checksum.
func (ChecksumType) IsSet ¶
func (c ChecksumType) IsSet() bool
IsSet returns whether the type is valid and known.
func (ChecksumType) Key ¶
func (c ChecksumType) Key() string
Key returns the header key. returns empty string if invalid or none.
func (ChecksumType) RawByteLen ¶
func (c ChecksumType) RawByteLen() int
RawByteLen returns the size of the un-encoded checksum.
func (ChecksumType) String ¶
func (c ChecksumType) String() string
String returns the type as a string.
func (ChecksumType) Trailing ¶
func (c ChecksumType) Trailing() bool
Trailing return whether the checksum is traling.
type ErrSizeMismatch ¶
ErrSizeMismatch error size mismatch
func (ErrSizeMismatch) Error ¶
func (e ErrSizeMismatch) Error() string
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
A Reader wraps an io.Reader and computes the MD5 checksum of the read content as ETag. Optionally, it also computes the SHA256 checksum of the content.
If the reference values for the ETag and content SHA26 are not empty then it will check whether the computed match the reference values.
func NewReader ¶
func NewReader(src io.Reader, size int64, md5Hex, sha256Hex string, actualSize int64) (*Reader, error)
NewReader returns a new Reader that wraps src and computes MD5 checksum of everything it reads as ETag.
It also computes the SHA256 checksum of everything it reads if sha256Hex is not the empty string.
If size resp. actualSize is unknown at the time of calling NewReader then it should be set to -1.
NewReader may try merge the given size, MD5 and SHA256 values into src - if src is a Reader - to avoid computing the same checksums multiple times.
func (*Reader) ActualSize ¶
ActualSize returns the pre-modified size of the object. DecompressedSize - For compressed objects.
func (*Reader) AddChecksum ¶
AddChecksum will add checksum checks as specified in https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html Returns ErrInvalidChecksum if a problem with the checksum is found.
func (*Reader) ContentCRC ¶
ContentCRC returns the content crc if set.
func (*Reader) ContentCRCType ¶
func (r *Reader) ContentCRCType() ChecksumType
ContentCRCType returns the content checksum type.
func (*Reader) ETag ¶
ETag returns the ETag computed by an underlying etag.Tagger. If the underlying io.Reader does not implement etag.Tagger it returns nil.
func (*Reader) MD5 ¶
MD5 returns the MD5 checksum set as reference value.
It corresponds to the checksum that is expected and not the actual MD5 checksum of the content. Therefore, refer to MD5Current.
func (*Reader) MD5Base64String ¶
MD5Base64String returns a hex representation of the MD5.
func (*Reader) MD5Current ¶
MD5Current returns the MD5 checksum of the content that has been read so far.
Calling MD5Current again after reading more data may result in a different checksum.
func (*Reader) MD5HexString ¶
MD5HexString returns a hex representation of the MD5.
func (*Reader) SHA256 ¶
SHA256 returns the SHA256 checksum set as reference value.
It corresponds to the checksum that is expected and not the actual SHA256 checksum of the content.
func (*Reader) SHA256HexString ¶
SHA256HexString returns a hex representation of the SHA256.
type SHA256Mismatch ¶
SHA256Mismatch - when content sha256 does not match with what was sent from client.
func (SHA256Mismatch) Error ¶
func (e SHA256Mismatch) Error() string