我需要使用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。
答案 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
作为内部的行结束但是在最终}
括号之后没有行结束。