J'ai une implémentation de SSL poignée de main du côté client, en utilisant ces fonctions: SSL_CTX_load_verify_locations SSL_CTX_use_certificate_chain_file SSL_CTX_use_PrivateKey_fileOpenSSL avec des chemins unicode
Toutes les fonctions se char * type pour le paramètre de nom de fichier. Comment puis-je le modifier pour prendre en charge également les emplacements de fichiers Unicode?
Merci!
Merci de répondre. J'ai besoin qu'il fonctionne sous Windows ... Qu'est-ce que le 'mapping' pour SSL_CTX_load_verify_locations? Merci! – rkellerm
Il n'y a pas de mappage direct. Vous devrez le pirater. En interne, SSL_CTX_load_verify_locations() appelle X509_STORE_load_locations(), qui à son tour appelle X509_STORE_add_lookup(), X509_LOOKUP_load_file() et X509_LOOKUP_add_dir(). Essayez de définir une structure X509_LOOKUP_METHOD personnalisée qui ouvre un fichier comme vous le souhaitez, puis passez cette structure à X509_STORE_add_lookup() avant d'appeler X509_LOOKUP_load_file() et X509_LOOKUP_add_dir(). Puisque l'API utilise char *, vous devrez utiliser la conversion de type pour transmettre un nom de fichier wchar_t * à votre implémentation X509_LOOKUP_METHOD. –
Regardez dans ssl_lib.c, x509_d2.c, x509_lu.c, et by_file.c pour voir comment l'implémentation actuelle de SSL_CTX_load_verify_locations() est configurée. C'est par défaut X509_LOOKUP_METHOD utilisé, SSL_LOOKUP_file(), utilise l'API BIO pour lire les fichiers de certificat. Vous devrez probablement faire en sorte que votre implémentation utilise également des BIO, mais vous pouvez utiliser un BIO basé sur un FICHIER * afin que vous puissiez appeler _wfopen() pour ouvrir les noms de fichiers Unicode. –