Archived Forum PostQuestion:
Hello, i have troubles with chilkat rsa.
i'm trying:
QString akey = "<rsakeyvalue><modulus>" + mod + "</modulus><exponent>" + exp + "</exponent></rsakeyvalue>";
rsa->ImportPublicKey(akey.toStdString().c_str());
rsa->put_EncodingMode("base64");
rsa->put_LittleEndian(false);
QString password = rsa->encryptStringENC("abcd", false);
All ok, but Steam can't recognize this. Alternative code with openssl work good!
publickey = RSA_new();
BIGNUM *publickey_mod = BN_new();
BIGNUM *publickey_exp = BN_new();
//QString -> String -> Char* -> BIGNUM
BN_hex2bn(&publickey_mod, modulus.toStdString().c_str());
BN_hex2bn(&publickey_exp, exponent.toStdString().c_str());
//Adds data to RSA publickey
publickey->n = publickey_mod;
publickey->e = publickey_exp;
encrypted = new unsigned char[RSA_size(publickey)];
if (RSA_public_encrypt(input.length(), reinterpret_cast<const unsigned="" char="" *="">(input.toStdString().c_str()), encrypted, &(*publickey), RSA_PKCS1_PADDING) == -1)
{
delete[] encrypted;
encrypted = NULL;
}
On JavaScript Steam have code:
var pubKey = RSA.getPublicKey( results.publickey_mod, results.publickey_exp ); var encryptedPassword = RSA.encrypt( password, pubKey );