Je reviens vers vous car je n'ai pas trouvé de solutions à mon problème de conversion de const char* en unsigned const char*. reinterpret_cast me semble le plus pertinent.
Mais ce n'est pas le cas, apparemment il me génère un problème.
en effet, je dois utliser une fonction OpenSSL pour décodé un string ( format PEM codé en base 64, en une structure interne C ( internal C structure ). Voici le prototype de la fonction:
Code :
- X509 *d2i_X509(X509 **px, const unsigned char **in, int len);
|
la doc se trouve ici : http://www.openssl.org/docs/crypto/d...#RETURN_VALUES
En gros cette fonction lit un string en format PEM qui se trouve dans const unsigend char **in et renvoie une structure X509*
Maintenant, pourquoi j'ai utilisé un cast ? parce que mon constructeur prend en paramètre un PEM de type const char *str. Voici le code :
Code :
- certificate(const char *str, size_t clen) {
- unsigned char const *u_str = reinterpret_cast< unsigned char const * >(str);
- X509* mycert = d2i_X509(NULL, &u_str, clen);
|
A priori, je ne peux/dois pas changer la signature de ce constructeur. Donc je suis obligé de partir d'un const char *str.
quand je debug, mycert est NULL, ca signifie que d2i_X509 a échoué. l'erreur est en fait :
Code :
- error:0D07209B:asn1 encoding routines:ASN1_get_object:too long
|
Je crois que c'est à cause du reinterpret_cast.
Est ce que il y a d'autres moyen de résoudre le problème de conversion const char* => unsigned const char* ?
Merci d'avance pour votre aide.
Message édité par razuki le 05-04-2011 à 01:52:42