OpenSSL에서 DSA를 사용하여 서명하려고합니다. 공용 및 개인 키가 들어있는 파일이 있습니다.DSA OpenSSL로 서명
우선 유니 캐스트 연결을 만들고 모든 것이 정상입니다. 그런 다음 멀티 캐스트 UDP 연결이 필요하며 패킷에 서명하고 싶습니다. 내 인증서에서 내 공개 키를로드하려면 함수 PEM_read_DSA_PUBKEY()
을 사용하려고하는데 작동하지 않습니다. DSA 구조체 대신 항상 NULL
을 반환합니다.
간단한 코드가 있습니다. 나는 이렇게 컴파일한다 :
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
@Hasturkun로 널 종료 문자열에 대한 포인터를 전달할 수도 있습니다! 언급 된대로 업데이트되었습니다. 사실은 그의 코드에 불필요한 메모리 누수를 제외하고는 어떤 문제도 보이지 않기 때문에, 그의 키가 패스워드로 보호되어 있고 패스워드를 제대로 제공하지 않는다고 가정합니다. – jweyrich
아니요. 암호를 간단하게 만들기 위해 암호를 사용하지 않았습니다. – calamares