LINUX.ORG.RU

История изменений

Исправление anonymous2, (текущая версия) :

да ну нах.. а может это просто ктото другой не смог?! хде сдесь адово?

std::unique_ptr<BIO, void(*)(BIO*)> bCert{ BIO_new_mem_buf(cert.data(), cert.size()), BIO_free_all };
std::unique_ptr<BIO, void(*)(BIO*)> bData{ BIO_new_mem_buf(data.data(), data.size()), BIO_free_all };

// create x509
std::unique_ptr<X509, void(*)(X509*)> x509{ PEM_read_bio_X509(bCert.get(), nullptr, nullptr, nullptr), X509_free };
// create stack of
std::unique_ptr<STACK_OF(X509), void(*)(STACK_OF(X509)*)> stack{ sk_X509_new_null(), sk_X509_free2 };
sk_X509_push(stack.get(), x509.get());
// encrypt pkcs7
std::unique_ptr<PKCS7, void(*)(PKCS7*)> p7{ PKCS7_encrypt(stack.get(), bData.get(), EVP_aes_128_cbc(),  PKCS7_BINARY), PKCS7_free };
// store buf
std::unique_ptr<BIO, void(*)(BIO*)> bDest{ BIO_new(BIO_s_mem()), BIO_free_all };
PEM_write_bio_PKCS7(bDest.get(), p7.get());

Исходная версия anonymous2, :

да ну нах.. а может это просто ктото другой не смог?!

std::unique_ptr<BIO, void(*)(BIO*)> bCert{ BIO_new_mem_buf(cert.data(), cert.size()), BIO_free_all };
std::unique_ptr<BIO, void(*)(BIO*)> bData{ BIO_new_mem_buf(data.data(), data.size()), BIO_free_all };

// create x509
std::unique_ptr<X509, void(*)(X509*)> x509{ PEM_read_bio_X509(bCert.get(), nullptr, nullptr, nullptr), X509_free };
// create stack of
std::unique_ptr<STACK_OF(X509), void(*)(STACK_OF(X509)*)> stack{ sk_X509_new_null(), sk_X509_free2 };
sk_X509_push(stack.get(), x509.get());
// encrypt pkcs7
std::unique_ptr<PKCS7, void(*)(PKCS7*)> p7{ PKCS7_encrypt(stack.get(), bData.get(), EVP_aes_128_cbc(),  PKCS7_BINARY), PKCS7_free };
// store buf
std::unique_ptr<BIO, void(*)(BIO*)> bDest{ BIO_new(BIO_s_mem()), BIO_free_all };
PEM_write_bio_PKCS7(bDest.get(), p7.get());