Расшифровка rsa в openssl c++
Необходимо расшифровать информацию, которая приходит от сервера, которая зашифрована публичным ключом клиента и подписана приватным сервера. Следовательно, надо расшифровать по приватному ключу клиента и верифицировать по публичному ключу сервера. Все ключи у меня есть. Использую сервер на Go. Код шифрования на сервере:
label := []byte("")
hash := sha256.New()
verifyKey, _ := jwt.ParseRSAPublicKeyFromPEM([]byte(tokens[ip]))
ciphertext, err := rsa.EncryptOAEP(hash, rand.Reader, verifyKey, message, label)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
var opts rsa.PSSOptions
opts.SaltLength = rsa.PSSSaltLengthAuto
PSSmessage := message
newhash := crypto.SHA256
pssh := newhash.New()
pssh.Write(PSSmessage)
hashed := pssh.Sum(nil)
signature, err := rsa.SignPSS(rand.Reader, private_key, newhash, hashed, &opts)
Вот на чем я остановился в клиенте, просто у не знаю как дальше делать... :
unsigned char* out = new unsigned char[9999];
BIO* kbio;
RSA* rsa = NULL;
kbio = BIO_new_mem_buf((void*)key.c_str(), -1);
rsa = PEM_read_bio_RSAPrivateKey(kbio, NULL, 0, NULL);
RSA_private_decrypt(RSA_size(rsa), data.data(),
out, rsa, RSA_PKCS1_PSS_PADDING); // data - std::vector<unsigned char>
std::string out_str((char*)out);
delete[] out;
return out_str;
Подскажите пожалуйста, как правильно мне расшифровать информацию на c++ с openssl, заранее спасибо