Greetings community, Alright, I'm trying to serialise a RSA public key and then deserialise it again; Later the key will be serialised and then deserialised on the other end of a TCP connection. For now, I'm just serialising and then deserialising the key. I've read the other posts to the list on this, but I haven't had any luck.
Here's my problem - The deserialised key does not match the original public key: // Code beginning int serialisedPublicKeySize = i2d_RSAPublicKey(ourKeyPair->pub_key, NULL); unsigned char* serialisedPublicKey = new unsigned char[serialisedPublicKeySize]; unsigned char* ptrSerialisedPublicKey = serialisedPublicKey; serialisedPublicKeySize = i2d_RSAPublicKey(ourKeyPair->pub_key, &ptrSerialisedPublicKey); FILE* pub_kfp = fopen("serialised_key.pem", "w"); fwrite(ptrSerialisedPublicKey, sizeof(unsigned char), serialisedPublicKeySize, pub_kfp); fclose(pub_kfp); // I'm correct to use serialisedPublicKey here, right? RSA* clientPublicKey = d2i_RSAPublicKey(NULL, (const unsigned char**)&serialisedPublicKey), serialisedPublicKeySize); // This doesn't work either. //RSA* clientPublicKey = d2i_RSAPublicKey(NULL, (const unsigned char**)&ptrSerialisedPublicKey), serialisedPublicKeySize); int x; if((x = memcmp(ourKeyPair->pub_key, clientPublicKey, RSA_size(clientPublicKey))) == 0) { printf("Keys match\n"); } printf("%d\n", x); // Code end If I diff the dumped key file with the original public key file, it of course tells me they differ, although visually they are identical. I've been hacking away at this now for a while without any luck. I hope you guys can point me in the right direction, and that I'm just making some incredibly stupid mistake. Thank you in advance for your help. Conor. ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager majord...@openssl.org