Merge pull request #1158 from versity/sis/chunk-encoding-last-signature

fix: Adds check for the final chunk signature in signed chunk encodin…
This commit is contained in:
Ben McClelland
2025-03-20 08:19:04 -07:00
committed by GitHub
+12
View File
@@ -176,7 +176,19 @@ func (cr *ChunkReader) parseAndRemoveChunkInfo(p []byte) (int, error) {
if err != nil {
return 0, err
}
// If we hit the final chunk, calculate and validate the final
// chunk signature and finish reading
if chunkSize == 0 {
cr.chunkHash.Reset()
chunkhash := cr.chunkHash.Sum(nil)
sigstr := getChunkStringToSign(cr.strToSignPrefix, cr.prevSig, chunkhash)
cr.prevSig = hex.EncodeToString(hmac256(cr.signingKey, []byte(sigstr)))
if cr.prevSig != cr.parsedSig {
return 0, s3err.GetAPIError(s3err.ErrSignatureDoesNotMatch)
}
return 0, io.EOF
}