我需要一些使用OpenSSL的帮助,以便使用C(Windows和Linux)生成数据块的签名。该应用程序与谷歌认证有关。谷歌文档中的说明如下:
“使用从Google开发者控制台获得的私钥,使用SHA256withRSA(也称为RSASSA-PKCS1-V1_5-Sign,使用SHA-256哈希函数)对输入的UTF-8表示形式进行签名。输出将是字节数组。”
私钥是一个密码。p12包含1660字节二进制数据的文件。
我是否为此使用RSA_sign()API?如果是这样,我应该先散列数据吗?使用什么键值?我假设RSA*参数应该保存私钥?它是如何装载的?我已经使用HMAC函数来生成SHA哈希,但是我在这里有点迷失了——任何帮助或示例代码都将不胜感激。(是的,我知道谷歌有这样的库,但是没有用于C的库,我需要使用)。
您可以使用RSA\u-sign
对数据进行SHA256哈希签名。你可以称之为
RSA_sign(NID_sha256, digest, digest_len, &sign_buffer, sign_len, rsa_key);
您已经计算SHA256散列数据到digest
缓冲区。rsa_key
应该初始化。
由于您有. p12
文件,您需要执行以下操作。
从. p12
文件创建PKCS12
结构。
PKCS12 * p12 = d2i_PKCS12_fp(fp_to_p12_file, NULL);
将p12
结构解析为证书和密钥。
PKCS12_parse(p12, passphrase, &evp_pkey, &x509_cert, NULL);
它将提供EVP\u PKEY
结构,您可以使用EVP\u PKEY\u get1\u RSA
或访问EVP\u PKEY从中获取
RSA
结构-
这应该有助于你开始。
我是不是漏掉了什么?这是构建自签名证书的正确方法吗?
我正在进行rpc调用签名,为了使服务器接受我们的API调用,我们需要使用RSAPrivateKey对http mime头进行签名。服务器端代码用JAVA编写,并使用“SHA256withRSA/PSS”验证签名。 我的问题是我从JAVA和c openssl代码得到了不同的签名哈希。所以问题是,openssl是否有可能生成与JAVA相同的签名哈希? JAVA代码: c代码:
我们不允许对堆栈溢出提出有关专业服务器或网络相关基础设施管理的问题。您可以编辑问题,使其位于堆栈溢出主题上。 我正在向嵌入式Linux设备添加HTTPS支持。我已尝试使用以下步骤生成自签名证书: 这工作,但我得到一些错误,例如,谷歌Chrome: 这可能不是你要找的网站 站点的安全证书不受信任! 我错过什么了吗?这是构建自签名证书的正确方法吗?
我想验证C中的签名,这是我在Java中签名的随机签名。 以下是我用于签名的Java代码: 现在我想用C验证签名,我需要C代码等于以下Java代码: 到目前为止,我所尝试的: 此方法返回0,但我确信随机是用正确的键签名的,并且该方法需要返回1...我想我的验证用的C代码有问题。也许你们中的一个知道如何做对。 --解决--
我有一个使用C++中的openSSL生成的keypair,我正在使用它在一个严格使用RSACryptoServiceProvider(没有BouncyCastle等)的C#服务器上对验证消息进行签名。我使用PKCS#1 SHA256生成签名,然后以十六进制的形式与公钥一起传输签名。问题是无法在服务器上验证签名。我已经尝试删除了头,上面写着“----开始RSA公钥-----”等等。但是还没有结果。生
1)我正在openssl命令的帮助下生成一个密钥文件和一个CSR。当使用命令“OpenSSL req-in test _ CSR . PEM-noout–text”显示CSR信息时,我得到以下打印结果: 现在,当我使用十六进制编辑器编辑DER格式的密钥文件时,我得到以下数据 30 82 01 22 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 82