使用c ++为google存储桶上传

时间:2016-06-03 16:46:37

标签: c++ rsa google-cloud-storage sha256 signing

我需要使用c ++中的cURL将图像上传到Google云端桶。 谷歌没有提供c ++ sdk支持。按照example and pseudo code,我们必须执行以下过程;

  

块引用

   Policy = Base-64-Encoding-Of(PolicyDocument)
   MessageDigest = SHA256withRSA(SecretKey, Policy)
   Signature = Base64-Encoding-Of(MessageDigest)

根据他们的过程,我已经完成了base64编码,但我找不到如何执行SHA256withRSA的任何内容? 请帮我在c ++中使用SHA256withRSA。

1 个答案:

答案 0 :(得分:1)

您可以使用openssl库或通常与其一起打包的命令行实用程序生成这样的签名。

因此,了解到我从未使用过Google云平台,并且只是尝试扩展他们的文档,要手动执行此操作,您需要

1)您的Google Cloud凭据的.pem版本。我们称之为private.pem

使用https://cloud.google.com/storage/docs/authentication#converting-the-private-key

中显示的流程

2)政策文件。使用文本编辑器创建它,遵循原始URL中给出的示例

 vi policy.txt

3)该策略文档的base64编码。使用Linux工具base64来实现这一目标。你会得到一个很长的字符串。让我们称之为STRINGA。让我们说它保存在STRINGA.txt

base64 < policy.txt > STRINGA.txt

4)STRINGA生成的签名

openssl sha -sha256 -sign private.pem < STRINGA.txt | base64 >SIGNED.txt

5)从包含

的html表单执行POST
<input type="hidden" name="policy" value="Put STRINGA string here">
<input type="hidden" name="signature" value="Put SIGNED string here">

类似于原始网址中的示例

https://cloud.google.com/storage/docs/xml-api/post-object#usage_and_examples

我从他们的HTML代码中获取了他们的示例base64编码的策略文档,并感兴趣地注意到他们使用\r\n作为内部的行结束但是在最终}括号之后没有行结束。