Salut, j'essaye d'extraire un certificat d'openssl :
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int Rsa::ossl_getCertificate (unsigned char** out) { return i2d_X509(x, out); }
Pour l'envoyer à mon client.
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void Network::sendPbKeyRsa(User &user) { unsigned char* out = nullptr; int length = EncryptedPacket::getCertificate(&out); std::string response (reinterpret_cast<char*>(out), length); Packet packet; packet<<response; user.getTcpSocket().send(packet); user.setHasPbKeyRsa(true); }
Mais à la réception ma chaîne de caractère est vide, le paquet est invalide car la taille de la chaîne est trop longue par rapport à la taille initiale du paquet.
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (clientTCP.receive(packet) == Socket::Done) { packet>>message; Network::setPbKey(message); pbKeyRsaReceived = true;
De ce fait je n'ai pas de message et mon programme plante.
Pourtant cela marchait bien auparavant, y a t'il eu des changements ?
Faut il rajouter un \0 manuellement à la fin du tableau d'unsigned char ?
Bref je ne comprends plus rien car au départ ça fonctionnait bien et ici tout à coup ça ne fonctionne plus.
Partager