[ https://issues.apache.org/jira/browse/JCLOUDS-1547?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andrew Gaul updated JCLOUDS-1547: --------------------------------- Labels: google-cloud-storage md5 (was: gcs google md5) > Google InputStream blob upload ignores MD5 > ------------------------------------------ > > Key: JCLOUDS-1547 > URL: https://issues.apache.org/jira/browse/JCLOUDS-1547 > Project: jclouds > Issue Type: Bug > Components: jclouds-blobstore > Affects Versions: 2.2.0, 2.2.1 > Reporter: Alexander Chernavin > Priority: Major > Labels: google-cloud-storage, md5 > > According to [GCS blob upload > documentation|[https://cloud.google.com/storage/docs/xml-api/put-object-upload]], > when Content-MD5 header is provided, Google uses it to verify data integrity > of an uploaded blob. This feature is crucial for us. We have a file upload > functionality that takes an input stream and uploads it to a cloud via > JClouds. We want to be sure that file integrity is enforced. > > JClouds blob builder allows to specify content MD5, but this value is ignored > with InputStream payload, it's simply is not propagated into Content-MD5 > header. > Here is the code snippet to reproduce the issue: > {code:java} > BlobStoreContext context = ContextBuilder.newBuilder("google-cloud-storage") > .credentials(clientEmail, privateKey) > .buildView(BlobStoreContext.class); > // generate MD5 hash for some bogus content > MessageDigest md5 = MessageDigest.getInstance("MD5"); > md5.update("bogus".getBytes()); > InputStream inputStream = new ByteArrayInputStream("hi".getBytes()); > BlobStore blobStore = context.getBlobStore(); > blobStore.putBlob(myContainer, > blobStore.blobBuilder("test.txt") > .payload(inputStream) > .contentLength(2) > .contentType("text/plain") > .contentMD5(HashCode.fromBytes(md5.digest())) > .build()); {code} > putBlob should have failed, because payload is "hi", but MD5 is calculated > for "bogus" string. > -- This message was sent by Atlassian Jira (v8.3.4#803005)