// Copyright (c) 2015-2021 MinIO, Inc. // // This file is part of MinIO Object Storage stack // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . package hash import ( "errors" "fmt" ) // SHA256Mismatch - when content sha256 does not match with what was sent from client. type SHA256Mismatch struct { ExpectedSHA256 string CalculatedSHA256 string } func (e SHA256Mismatch) Error() string { return "Bad sha256: Expected " + e.ExpectedSHA256 + " does not match calculated " + e.CalculatedSHA256 } // BadDigest - Content-MD5 you specified did not match what we received. type BadDigest struct { ExpectedMD5 string CalculatedMD5 string } func (e BadDigest) Error() string { return "Bad digest: Expected " + e.ExpectedMD5 + " does not match calculated " + e.CalculatedMD5 } // SizeTooSmall reader size too small type SizeTooSmall struct { Want int64 Got int64 } func (e SizeTooSmall) Error() string { return fmt.Sprintf("Size small: got %d, want %d", e.Got, e.Want) } // SizeTooLarge reader size too large type SizeTooLarge struct { Want int64 Got int64 } func (e SizeTooLarge) Error() string { return fmt.Sprintf("Size large: got %d, want %d", e.Got, e.Want) } // SizeMismatch error size mismatch type SizeMismatch struct { Want int64 Got int64 } func (e SizeMismatch) Error() string { return fmt.Sprintf("Size mismatch: got %d, want %d", e.Got, e.Want) } // ChecksumMismatch - when content checksum does not match with what was sent from client. type ChecksumMismatch struct { Want string Got string } func (e ChecksumMismatch) Error() string { return "Bad checksum: Want " + e.Want + " does not match calculated " + e.Got } // IsChecksumMismatch matches if 'err' is hash.ChecksumMismatch func IsChecksumMismatch(err error) bool { var herr ChecksumMismatch return errors.As(err, &herr) }