PDF4QT/Pdf4QtLibCore/sources/pdfcertificatemanager.h

77 lines
2.3 KiB
C
Raw Normal View History

2023-12-22 19:12:35 +01:00
// Copyright (C) 2022-2023 Jakub Melka
2022-04-30 18:12:14 +02:00
//
// This file is part of PDF4QT.
//
// PDF4QT is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// with the written consent of the copyright owner, any later version.
//
// PDF4QT is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with PDF4QT. If not, see <https://www.gnu.org/licenses/>.
#ifndef PDFCERTIFICATEMANAGER_H
#define PDFCERTIFICATEMANAGER_H
#include "pdfglobal.h"
2023-12-22 19:12:35 +01:00
#include "pdfcertificatestore.h"
2022-04-30 18:12:14 +02:00
#include <QString>
#include <QFileInfoList>
2022-04-30 18:12:14 +02:00
namespace pdf
2022-04-30 18:12:14 +02:00
{
2023-12-04 20:04:40 +01:00
class PDF4QTLIBCORESHARED_EXPORT PDFCertificateManager
2022-04-30 18:12:14 +02:00
{
public:
PDFCertificateManager();
2022-04-30 18:12:14 +02:00
struct NewCertificateInfo
{
2022-05-03 20:00:47 +02:00
QString fileName;
2022-04-30 18:12:14 +02:00
QString privateKeyPasword;
QString certCountryCode;
QString certOrganization;
QString certOrganizationUnit;
QString certCommonName;
QString certEmail;
int rsaKeyLength = 1024;
int validityInSeconds = 2 * 365 * 24 * 3600;
long serialNumber = 1;
};
void createCertificate(const NewCertificateInfo& info);
2022-05-03 20:00:47 +02:00
2023-12-22 19:12:35 +01:00
static PDFCertificateEntries getCertificates();
2022-05-03 20:00:47 +02:00
static QString getCertificateDirectory();
static QString generateCertificateFileName();
2023-12-22 19:12:35 +01:00
static bool isCertificateValid(const PDFCertificateEntry& certificateEntry, QString password);
2022-04-30 18:12:14 +02:00
};
2023-12-04 20:04:40 +01:00
class PDF4QTLIBCORESHARED_EXPORT PDFSignatureFactory
{
public:
static bool sign(const PDFCertificateEntry& certificateEntry,
QString password,
QByteArray data,
QByteArray& result);
2023-12-23 15:30:17 +01:00
private:
static bool signImpl_Win(const PDFCertificateEntry& certificateEntry,
QString password,
QByteArray data,
QByteArray& result);
};
} // namespace pdf
2022-04-30 18:12:14 +02:00
#endif // PDFCERTIFICATEMANAGER_H