ultimatepp/uppsrc/Core/SSL/P7S.cpp
cxl a1c74a8698 uppsrc: .icpp files replaced by INITIALIZE/INITIALIZER
git-svn-id: svn://ultimatepp.org/upp/trunk@10424 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2016-11-13 09:24:24 +00:00

45 lines
944 B
C++

#include "SSL.h"
namespace Upp {
String GetP7Signature_imp(const void *data, int length, const String& cert_pem, const String& pkey_pem)
{
SslCertificate x509;
SslKey pkey;
if(!x509.Load(cert_pem))
return Null;
if(!pkey.Load(pkey_pem))
return Null;
SslStream in;
in.OpenBuffer((const char *)data, length);
PKCS7 *p7 = PKCS7_sign(x509, pkey, NULL, in, PKCS7_DETACHED|PKCS7_BINARY|PKCS7_STREAM);
if (!p7)
return Null;
SslStream out;
out.CreateBuffer();
String r;
if (SMIME_write_PKCS7(out, p7, in, PKCS7_DETACHED|PKCS7_BINARY|PKCS7_STREAM)) {
SslStream out1;
out1.CreateBuffer();
i2d_PKCS7_bio(out1, p7);
r = out1.GetResult();
}
PKCS7_free(p7);
return r;
}
extern String (*GetP7Signature__)(const void *data, int length, const String& cert_pem, const String& pkey_pem);
INITIALIZER(P7S)
{
GetP7Signature__ = GetP7Signature_imp;
}
}