0
Das ist mein Beispielcode:Die ASN.1 Struktur Iterator nur erklärt werden, aber nicht umgesetzt
#include <openssl/asn1.h>
#include <openssl/asn1t.h>
#include <openssl/rsa.h>
#include <openssl/x509.h>
typedef struct key_st {
X509_ALGOR *algorithm_id;
RSA *key_material;
} KEY;
DECLARE_ASN1_FUNCTIONS(KEY)
IMPLEMENT_ASN1_FUNCTIONS(KEY)
int main()
{
return 0;
}
, wenn ich es kompilieren, wird die folgende Fehler gemeldet:
$ gcc -o ssltest ssltest.c -lssl -lcrypto
/tmp/cch0HA77.o: In function `d2i_KEY':
ssltest.c:(.text+0x21): undefined reference to `KEY_it'
/tmp/cch0HA77.o: In function `i2d_KEY':
ssltest.c:(.text+0x48): undefined reference to `KEY_it'
/tmp/cch0HA77.o: In function `KEY_new':
ssltest.c:(.text+0x5e): undefined reference to `KEY_it'
/tmp/cch0HA77.o: In function `KEY_free':
ssltest.c:(.text+0x7a): undefined reference to `KEY_it'
collect2: error: ld returned 1 exit status
Nach Überprüfung der Makro- erweiterter Code, ich fand die KEY_it deklariert als:
extern const ASN1_ITEM KEY_it;
So der Linker Bericht undefinierte Referenzen. Wie kann ich es reparieren? Vielen Dank!
Ooh, ich etwas verpasst: es fix war, nachdem ich die Sequenzdefinition für KEY hinzufügen: ASN1_SEQUENCE (KEY) = { \t ASN1_SIMPLE (KEY, algorithm_id, X509_ALGOR), \t ASN1_SIMPLE (SCHLÜSSEL, Schlüssel_material, RSAPublicKey) } ASN1_SEQUENCE_END (KEY) –