Salut, j'essaye d'extraire un certificat d'openssl :
int Rsa::ossl_getCertificate (unsigned char** out) {
return i2d_X509(x, out);
}
Pour l'envoyer à mon client.
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.
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.