mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
Add support openssl engine for sign/verify on windows
This commit is contained in:
@ -37,25 +37,24 @@ SOURCES += \
|
||||
src/OOXMLVerifier.cpp
|
||||
|
||||
core_windows {
|
||||
|
||||
HEADERS += \
|
||||
src/XmlSigner_mscrypto.h
|
||||
CONFIG += windows_use_mscrypto
|
||||
|
||||
LIBS += -lcrypt32
|
||||
LIBS += -lcryptui
|
||||
LIBS += -lAdvapi32
|
||||
LIBS += -lws2_32
|
||||
LIBS += -lUser32
|
||||
|
||||
}
|
||||
|
||||
!core_windows {
|
||||
windows_use_mscrypto {
|
||||
|
||||
HEADERS += \
|
||||
src/XmlSigner_openssl.h
|
||||
DEFINES += USE_MS_CRYPTO
|
||||
HEADERS += src/XmlSigner_mscrypto.h
|
||||
|
||||
SOURCES += \
|
||||
src/XmlSigner_openssl.cpp
|
||||
} else {
|
||||
|
||||
HEADERS += src/XmlSigner_openssl.h
|
||||
SOURCES += src/XmlSigner_openssl.cpp
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
#ifdef WIN32
|
||||
#ifdef USE_MS_CRYPTO
|
||||
#include "./XmlSigner_mscrypto.h"
|
||||
#define CCertificate CCertificate_mscrypto
|
||||
|
||||
@ -15,22 +15,16 @@ namespace NSOpenSSL
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "./XmlSigner_openssl.h"
|
||||
#define XML_CERTIFICATE_USE_OPENSSL
|
||||
#define CCertificate CCertificate_openssl
|
||||
|
||||
#endif
|
||||
|
||||
#include "../../../common/File.h"
|
||||
|
||||
#if defined(_LINUX) && !defined(_MAC)
|
||||
#include "./XmlSigner_openssl.h"
|
||||
#define XML_CERTIFICATE_USE_OPENSSL
|
||||
#define CCertificate CCertificate_openssl
|
||||
#endif
|
||||
|
||||
#ifdef _MAC
|
||||
#include "./XmlSigner_openssl.h"
|
||||
#define XML_CERTIFICATE_USE_OPENSSL
|
||||
#define CCertificate CCertificate_openssl
|
||||
#endif
|
||||
|
||||
int ICertificate::GetOOXMLHashAlg(const std::string& sAlg)
|
||||
{
|
||||
if ("http://www.w3.org/2000/09/xmldsig#rsa-sha1" == sAlg ||
|
||||
@ -158,7 +152,7 @@ CCertificateInfo ICertificate::GetDefault()
|
||||
{
|
||||
CCertificateInfo info;
|
||||
|
||||
#ifdef WIN32
|
||||
#ifdef USE_MS_CRYPTO
|
||||
// detect user name
|
||||
std::wstring sUserName;
|
||||
|
||||
@ -191,7 +185,7 @@ CCertificateInfo ICertificate::GetDefault()
|
||||
|
||||
ICertificate* ICertificate::GetById(const std::string& id)
|
||||
{
|
||||
#ifdef WIN32
|
||||
#ifdef USE_MS_CRYPTO
|
||||
HANDLE hStoreHandle = CertOpenSystemStoreA(NULL, "MY");
|
||||
if (!hStoreHandle)
|
||||
return NULL;
|
||||
|
||||
@ -4,7 +4,10 @@
|
||||
#include "../../../common/StringExt.h"
|
||||
#include "../../../common/BigInteger.h"
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include <openssl/bio.h>
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/pem.h>
|
||||
|
||||
23
DesktopEditor/xmlsec/src/test/keys/cert.crt
Normal file
23
DesktopEditor/xmlsec/src/test/keys/cert.crt
Normal file
@ -0,0 +1,23 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDxTCCAq2gAwIBAgIUZkxUOBHNgjQsqvql1sCl5/U5mccwDQYJKoZIhvcNAQEL
|
||||
BQAwcjELMAkGA1UEBhMCUlUxCzAJBgNVBAgMAk5OMQswCQYDVQQHDAJOTjEQMA4G
|
||||
A1UECgwHUkstVGVjaDELMAkGA1UECwwCUksxDTALBgNVBAMMBE9sZWcxGzAZBgkq
|
||||
hkiG9w0BCQEWDG9sZWdAbWFpbC5ydTAeFw0yMTA1MTUxODAzNDdaFw0yMjA1MTUx
|
||||
ODAzNDdaMHIxCzAJBgNVBAYTAlJVMQswCQYDVQQIDAJOTjELMAkGA1UEBwwCTk4x
|
||||
EDAOBgNVBAoMB1JLLVRlY2gxCzAJBgNVBAsMAlJLMQ0wCwYDVQQDDARPbGVnMRsw
|
||||
GQYJKoZIhvcNAQkBFgxvbGVnQG1haWwucnUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|
||||
DwAwggEKAoIBAQDHrOA0UDjknxjpjF8CH4UwhVSwHWk3Rx93mvr95fu5VG2eUNsb
|
||||
yijyq+qJ2mEvaGxTgIYrYnxxA9UEaoMNq9aNzq9Bba1yud8DyRxGL1CUwa8Wqr8N
|
||||
AyijwrewqLkBJ1mOdhBFhQavPVaY6n0pvgg09/vWcr0ssctNMRUQ3oEYYaNaVHCw
|
||||
TFzxFL5Z7bGiDhY6YIEScm+tlPt0XSd+dch97o4wCOtu5+861VyBhELrEszR8J7y
|
||||
N1C95Iyt3V+uSzhzuEtmK8luisHGVF3f6Fyf+QQdyE9TX9xFov24xBsKRPTVg10l
|
||||
cFlj4ER5HLQWd3wYMkzWCcV5kVfmPTv11vyrAgMBAAGjUzBRMB0GA1UdDgQWBBTT
|
||||
hdFuCGGIz8MC3nlTDrESH+14UzAfBgNVHSMEGDAWgBTThdFuCGGIz8MC3nlTDrES
|
||||
H+14UzAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBHosOvxJJT
|
||||
xltJ21jHkw7rMkrmNNDqgpnhdwjtKEsoDPXdGzZfLL/DkjjCie5biU4Np/OgBDzx
|
||||
lqEpiyshlkmOf9CY/bRvQMSEJOk1Al1y559CKLFLcahdvjFwKWlBzmgC+6ckqQXM
|
||||
i/hpjjquv21SJtJ1ejTHGR+qhEURcEgE//eYksmEchpZLOapFlJr9McNFeRKrvwO
|
||||
PJ1cKPcg5Fx+yFNfN2EEZyzIymmskh8u16dsgbpS6570MnRo3XrXMyEYJoAqWeom
|
||||
hGSE2qY4zVjeFBdE3h6MqfUtcuq+MSRgTQbJHAGsgIUHY3zfe24xNr00g+KDIMiZ
|
||||
lLldzlgwZwNP
|
||||
-----END CERTIFICATE-----
|
||||
28
DesktopEditor/xmlsec/src/test/keys/key.key
Normal file
28
DesktopEditor/xmlsec/src/test/keys/key.key
Normal file
@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDHrOA0UDjknxjp
|
||||
jF8CH4UwhVSwHWk3Rx93mvr95fu5VG2eUNsbyijyq+qJ2mEvaGxTgIYrYnxxA9UE
|
||||
aoMNq9aNzq9Bba1yud8DyRxGL1CUwa8Wqr8NAyijwrewqLkBJ1mOdhBFhQavPVaY
|
||||
6n0pvgg09/vWcr0ssctNMRUQ3oEYYaNaVHCwTFzxFL5Z7bGiDhY6YIEScm+tlPt0
|
||||
XSd+dch97o4wCOtu5+861VyBhELrEszR8J7yN1C95Iyt3V+uSzhzuEtmK8luisHG
|
||||
VF3f6Fyf+QQdyE9TX9xFov24xBsKRPTVg10lcFlj4ER5HLQWd3wYMkzWCcV5kVfm
|
||||
PTv11vyrAgMBAAECggEBAKXY3zhUUY0C4ExLvTYkPBo7BEZrh1LUjjxny4VLmrMq
|
||||
fwn6GqOQXEaDqIDrk8EuuJr6q3YpjTbJegr69PNMAR8zxrlPgbtCywt35TYeYo3L
|
||||
+cOX+quyLfUm7C+dVFyy9F2xjn5PqWewSNcmHOOo5WQpfVF3Z81Rt4zb8aVbSlqW
|
||||
dSGEMArFN5MAtv+Kd5Nlsd9Fd0MRTpiE3BU8EnpqTWxKbLY1dr2yKlSsHY7eRgUl
|
||||
GMqOZaBxHZM0q66GOdOX1rB3JfON6BwiKeEgYB16rDGb5hAQqSgJU2LmgA9lVVO5
|
||||
hDaEEUe6Ulj66t3efA7UUEyvcqP0XFm5qyyVGq44+FECgYEA+Rgl0wkUfH/JmSKb
|
||||
lWwsApx2p1NngNuPnP9PpcGJJVQNRhHEaTkPHiB/Sf/ERozPFk1Yu5FhxZNUBGi0
|
||||
hyhV9jVU2MH7GIEs2pD9POWH3QUSMTS8lGntLORZrCLYMhxGqxAUnc/cmx4TrZ5l
|
||||
gAQUXKOzycwhXtXOe4va1lyI9l0CgYEAzTX+yfqHmXIl6rg9hl2uzv8R6smHEF87
|
||||
7gABU9go/uV7KqzBrX2jR0PccZYYfbOu+l0+LvNbBcBtanxJsutdTis/jZEue3kv
|
||||
G9s/4/QNb8YOMGVGfgsLJdYxVERM0yGZdRXN+Tp9c3FVRFUzv0ECq2taVKID3VxB
|
||||
7hdk8wdm/qcCgYEA40n9eYsXfmK7+Vdyz+1cWyWZvySDlTjC2ma8rmriUYVYd09P
|
||||
ARRnjv3oKAWRey6Q57C7/qqxpC7CwyMnVwyfI4GWYhLeo4V7ABS8fgyS5EH0T6Hn
|
||||
USU2nXffuwowa8kRUpXhuf4pNgFDw3B8/Uq7qaxWKRRyfq5pMqJylJbrAqECgYA+
|
||||
u+oHTyqTE11aEzbj09Hz//A3SaKbs7F7gc7mFef6fKcZlbSj2AvJZoqGwu77xqmQ
|
||||
al7vNYA3EuugKRzSsLdWhUwpeB+wqYxoRK+UfXB6Ih8GVn+lWrTuvTtZWoPt65Ch
|
||||
RagxL9tYJmZ9vFpUdohdZTU5OEpcKq8RHV/EGBg5cwKBgDGDWwTA14Rxm2n0s12k
|
||||
BB+qJYzlHvBXAod9EkuHWAfzdSoxhA3PKCNBj4Cd4DFk9xDn9ccwY6USlWoiDbOy
|
||||
28i61C/C0T6yZsgXdUqVSen0oYBPsb1LmKUBkwPif88GpyUMVf77O2qoVFsWmM5e
|
||||
PDSgIcrOMIRzHNa+TgpgqlZy
|
||||
-----END PRIVATE KEY-----
|
||||
28
DesktopEditor/xmlsec/src/test/main.cpp
Normal file
28
DesktopEditor/xmlsec/src/test/main.cpp
Normal file
@ -0,0 +1,28 @@
|
||||
#include "../../../common/File.h"
|
||||
#include "../include/XmlCertificate.h"
|
||||
#include "../include/OOXMLSigner.h"
|
||||
#include "../include/OOXMLVerifier.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
//#define USE_MS_CRYPTO
|
||||
#endif
|
||||
|
||||
int main()
|
||||
{
|
||||
#ifdef USE_MS_CRYPTO
|
||||
|
||||
// TODO: Load sertificate from store
|
||||
|
||||
#else
|
||||
|
||||
std::wstring sTestDir = NSFile::GetProcessDirectory() + L"/../../keys/";
|
||||
ICertificate* pCertificate = ICertificate::CreateInstance();
|
||||
pCertificate->FromFiles(sTestDir + L"key.key", "", sTestDir + L"cert.crt", "");
|
||||
|
||||
|
||||
|
||||
delete pCertificate;
|
||||
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
17
DesktopEditor/xmlsec/src/test/test.pro
Normal file
17
DesktopEditor/xmlsec/src/test/test.pro
Normal file
@ -0,0 +1,17 @@
|
||||
QT -= core gui
|
||||
|
||||
TARGET = test
|
||||
TEMPLATE = app
|
||||
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
|
||||
CORE_ROOT_DIR = $$PWD/../../../..
|
||||
PWD_ROOT_DIR = $$PWD
|
||||
include($$CORE_ROOT_DIR/Common/base.pri)
|
||||
|
||||
ADD_DEPENDENCY(kernel, ooxmlsignature)
|
||||
|
||||
SOURCES += main.cpp
|
||||
|
||||
DESTDIR = $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX
|
||||
Reference in New Issue
Block a user