Расшифровка 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, заранее спасибо


Ответы (0 шт):