Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void signBuffer(std::shared_ptr<uint8_t[]> &out, uint32_t &outSize)
- {
- std::shared_ptr<uint8_t[]> newBuffer;
- std::string caPath = "ca.crt";
- std::string crlPath = "ca.crl";
- std::string userKeyPath = "firm.crt";
- // std::string caPath = "ca.crt";
- // std::string crlPath = "ca.crl";
- // std::string userKeyPath = "firm.dkpc";
- std::vector<uint8_t> caBuf = getFileContent(caPath);
- std::vector<uint8_t> crlBuf = getFileContent(crlPath);
- std::vector<uint8_t> userKeyBuf = getFileContent(userKeyPath);
- DmCrypt::Pki::Certificate caCert;
- DmCrypt::Pki::KeyPair userKeyPair;
- DmCrypt::Pki::Crl caCrl;
- DmCrypt::Pki::Certificate userCert;
- std::string errorMessage;
- if( !DmCrypt::Pki::parseCertificate( caBuf, &caCert, errorMessage ) ) {
- std::cerr << "Loading CA cert " << "Failed to load CA cert: " << errorMessage << std::endl;
- return;
- }
- if( !DmCrypt::Pki::parseCrl( crlBuf, &caCrl, errorMessage ) ) {
- std::cerr << "Loading CRL " << "Failed to load CRL: "<< errorMessage << std::endl;
- return;
- }
- if( !DmCrypt::Pki::verifyCrl( &caCrl, &caCert, errorMessage ) ) {
- std::cerr << "Loading CRL " << "CRL verification failed: "<< errorMessage << std::endl;
- return;
- }
- if( !DmCrypt::Pki::parseKeyPair( userKeyBuf, "jQ$jPT7osUq&W69", &userKeyPair, errorMessage ) ) {
- std::cerr << "Loading key pair " << "Failed to load key pair: " << errorMessage << std::endl;
- return;
- }
- BinarySignProcessor sp(out.get(), outSize);
- if( !DmCrypt::CryptoProviderInternal::sign( &sp, &userKeyPair, &caCrl, &caCert, errorMessage ) ) {
- std::cerr << "File signing " << "Failed to sign file: " << errorMessage << std::endl;
- return;
- }
- newBuffer.reset(new uint8_t[outSize + sp.m_SignSize]);
- memcpy(newBuffer.get(),sp.m_signBuffer, sp.m_SignSize);
- memcpy(newBuffer.get()+ sp.m_SignSize,out.get(), outSize);
- out = newBuffer;
- outSize = outSize + sp.m_SignSize;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement