Bonjour.
Je dois convertir une structure pointée par X509* cert (qui est en fait une structure contenant les informations sur un certificat X509 ) vers un format sérialisé : DER.

J'utilise OpensSSL, et je suis sur Linux. La doc me dit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
int i2d_X509(X509 *x, unsigned char **out);
i2d_X509() encodes the structure pointed to by x into DER format. If out is not NULL is writes the DER encoded data to the buffer at *out, and increments it to point after the data just written. If the return value is negative an error occurred, otherwise it returns the length of the encoded data.

Une fois que j'obtiens le format DER, j'ajoute le certificat dans un map ( partagé par plusieurs processus ).La fonction écrite par la personne qui était sur le projet avant moi est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
int addCertIntoMap(const char* uri, const char* certificate,  unsigned int clen, time_t duration);
uri est la clef de la map : on doit pouvoir récuperer un certificat à partir de son uri
const char* certificate est le certificat à ajouter.
Là est le problème.

Le certificat que je récupère après l'appel à i2d_X509( ) est un unsigned char** out
alors que le certificat à passer en paramètre dans la fonction du gars est : const char* certificate ...

En gros ce que j'aimerais écrire c'est quelques chose du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
X509* peerCert = SSL_get_peer_certificate(ssl);
unsigned char **DERcert;
i2d_X509(peerCert, DERcert);
addCertIntoMap(uri, DERcert, len, time); // mais ici DERcert est char** et non pas char* ...
Est ce que quelqu'un aurait une idée de comment je dois faire ?

Merci d'avance.