我嘗試使用來自OpenSSL的DSA進行簽名。我有包含公鑰和私鑰的文件。DSA使用OpenSSL簽名
首先我做一個單播連接,每件事情都很好。之後,我需要一個組播UDP連接,我想簽署數據包。我試圖使用功能PEM_read_DSA_PUBKEY()
爲了從我的證書加載我的公鑰,但它不起作用。它總是返回NULL
而不是DSA結構。
在這裏你有一個簡單的代碼版本。我這樣編譯:
gcc -Wall -g -lm prueba.c -o prueba -lcrypto
有什麼想法嗎?謝謝!
#include <stdio.h>
#include <openssl/dsa.h>
#include <openssl/pem.h>
int main()
{
FILE *DSA_cert_file = fopen("./certs/cert.pem", "r");
if (DSA_cert_file == NULL)
return 1;
printf("Certificate read\n");
DSA *dsa = DSA_new();
if((dsa = PEM_read_DSA_PUBKEY(DSA_cert_file, 0, 0, 0)) == NULL)
return 1;
printf("DSA public key read\n");
return 0;
}
它也可以將指針傳遞到一個空結束的字符串作爲第四個參數 – Hasturkun 2011-05-03 13:40:19
@Hasturkun:真的,謝謝!更新提到。事實是,我沒有看到他的代碼有任何問題(除了不必要的內存泄漏),所以我假設他的密鑰受密碼保護,並且他沒有正確提供密碼。 – jweyrich 2011-05-03 13:46:51
不,我已經避免使用密碼,以使其更簡單。 – calamares 2011-05-03 13:54:24