comment passer le certificate PEM en tant que premier argument de i2d_X509

Je crée un certificate auto-signé par:

openssl req -new -x509 -key privkey.pem -out cert.pem -days 1095 

Comment transmettre cert.pem à i2d_X509? J’ai besoin de quelque chose comme:

  len = i2d_X509(".\cert.pem", &buf); 

mais mon certificate dans un fichier PEM ..

Voici mon code: (J’ai utilisé l’exemple de https://www.openssl.org/docs/crypto/d2i_X509.html )

 #include  #include  int main(void) { int len,i; unsigned char *buf; buf = NULL; len = i2d_X509((X509*)".\cert.pem", &buf); if (len < 0){ printf("error len < 0"); return -1; } printf("buf:"); for (i = 0; i < len ; i++) printf("0x%02X", *(buf+i)); return 0; } 

Comment transmettre cert.pem à i2d_X509? …

Vous ne pouvez pas / ne pouvez pas. Vous devez lire le certificate avec PEM_read_bio_X509 . PEM_read_bio_X509 renvoie un X509* . Ensuite, vous pouvez le transmettre à i2d_X509 .

Assurez-vous d’appeler X509_free sur le pointeur lorsque vous X509_free terminé.

Ou bien, comme le suggère Philippe – convertissez-le en ASN.1 / DER, puis utilisez-le avec d2i_X509_fp .

Reportez-vous également aux pages de manuel OpenSSL sur les fonctions de lecture / écriture PEM .