Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. void signBuffer(std::shared_ptr<uint8_t[]> &out, uint32_t &outSize)
  2. {
  3.     std::shared_ptr<uint8_t[]> newBuffer;
  4.  
  5.     std::string caPath = "ca.crt";
  6.     std::string crlPath = "ca.crl";
  7.     std::string userKeyPath = "firm.crt";
  8.     // std::string caPath = "ca.crt";
  9.     // std::string crlPath = "ca.crl";
  10.     // std::string userKeyPath = "firm.dkpc";
  11.  
  12.     std::vector<uint8_t> caBuf = getFileContent(caPath);
  13.     std::vector<uint8_t> crlBuf = getFileContent(crlPath);
  14.     std::vector<uint8_t> userKeyBuf = getFileContent(userKeyPath);
  15.  
  16.     DmCrypt::Pki::Certificate   caCert;
  17.     DmCrypt::Pki::KeyPair   userKeyPair;
  18.     DmCrypt::Pki::Crl   caCrl;
  19.     DmCrypt::Pki::Certificate  userCert;
  20.     std::string errorMessage;
  21.     if( !DmCrypt::Pki::parseCertificate( caBuf,  &caCert, errorMessage ) ) {
  22.         std::cerr << "Loading CA cert " << "Failed to load CA cert: " <<  errorMessage << std::endl;
  23.         return;
  24.     }
  25.  
  26.     if( !DmCrypt::Pki::parseCrl( crlBuf, &caCrl, errorMessage ) ) {
  27.         std::cerr << "Loading CRL " << "Failed to load CRL: "<<   errorMessage << std::endl;
  28.         return;
  29.     }
  30.  
  31.     if( !DmCrypt::Pki::verifyCrl( &caCrl, &caCert, errorMessage ) ) {
  32.         std::cerr << "Loading CRL " << "CRL verification failed: "<<   errorMessage << std::endl;
  33.         return;
  34.     }
  35.  
  36.     if( !DmCrypt::Pki::parseKeyPair( userKeyBuf, "jQ$jPT7osUq&W69", &userKeyPair, errorMessage ) ) {
  37.         std::cerr << "Loading key pair " << "Failed to load key pair: " <<  errorMessage << std::endl;
  38.         return;
  39.     }
  40.  
  41.     BinarySignProcessor sp(out.get(), outSize);
  42.  
  43.     if( !DmCrypt::CryptoProviderInternal::sign( &sp, &userKeyPair,  &caCrl, &caCert, errorMessage ) ) {
  44.         std::cerr << "File signing " << "Failed to sign file: " <<  errorMessage << std::endl;
  45.         return;
  46.     }
  47.     newBuffer.reset(new uint8_t[outSize + sp.m_SignSize]);
  48.  
  49.     memcpy(newBuffer.get(),sp.m_signBuffer, sp.m_SignSize);
  50.     memcpy(newBuffer.get()+  sp.m_SignSize,out.get(), outSize);
  51.     out = newBuffer;
  52.     outSize = outSize + sp.m_SignSize;
  53.  
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement