Skip to content

Commit 502ed1e

Browse files
authored
fix: request md5 for tagging APIs (minio#968)
1 parent be920bf commit 502ed1e

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"dependencies": {
3535
"async": "^3.1.0",
3636
"block-stream2": "^2.0.0",
37+
"browser-or-node": "^1.3.0",
3738
"es6-error": "^4.1.1",
3839
"fast-xml-parser": "^3.17.5",
3940
"ipaddr.js": "^2.0.1",

src/main/helpers.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616

1717
import stream from 'stream'
1818
import mime from 'mime-types'
19-
var Crypto = require('crypto')
19+
var Crypto = require('crypto-browserify')
2020
const ipaddr = require('ipaddr.js')
21+
import { isBrowser } from "browser-or-node"
2122

2223
// Returns a wrapper function that will promisify a given callback function.
2324
// It will preserve 'this'.
@@ -387,13 +388,18 @@ export const LEGAL_HOLD_STATUS={
387388
}
388389

389390
const objectToBuffer = (payload) =>{
390-
const payloadBuf = Buffer.from(Buffer.from(JSON.stringify(payload)))
391+
const payloadBuf = Buffer.from(Buffer.from(payload))
391392
return payloadBuf
392393
}
393394

394395
export const toMd5=(payload)=>{
395-
return Crypto.createHash('md5').update(objectToBuffer(payload)).digest().toString('base64')
396+
let payLoadBuf = objectToBuffer(payload)
397+
// use string from browser and buffer from nodejs
398+
// browser support is tested only against minio server
399+
payLoadBuf = isBrowser ? payLoadBuf.toString() : payLoadBuf
400+
return Crypto.createHash('md5').update(payLoadBuf).digest().toString('base64')
396401
}
402+
397403
export const toSha256=(payload)=>{
398404
return Crypto.createHash('sha256').update(payload).digest('hex')
399-
}
405+
}

src/main/minio.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2353,6 +2353,7 @@ export class Client {
23532353
const builder = new xml2js.Builder({ headless:true,renderOpts:{'pretty':false},})
23542354
let payload = builder.buildObject(taggingConfig)
23552355
payload = encoder.encode(payload)
2356+
headers['Content-MD5'] = toMd5(payload)
23562357

23572358
const requestOptions = { method, bucketName, query, headers }
23582359

0 commit comments

Comments
 (0)