File indexing completed on 2025-02-16 04:55:36

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     checksumdefinition.h
0003 
0004     This file is part of libkleopatra, the KDE keymanagement library
0005     SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include "kleo_export.h"
0013 
0014 #include <QString>
0015 #include <QStringList>
0016 
0017 #include <memory>
0018 #include <vector>
0019 
0020 class QProcess;
0021 
0022 namespace Kleo
0023 {
0024 
0025 class KLEO_EXPORT ChecksumDefinition
0026 {
0027 protected:
0028     ChecksumDefinition(const QString &id, const QString &label, const QString &outputFileName, const QStringList &extensions);
0029 
0030 public:
0031     virtual ~ChecksumDefinition();
0032 
0033     enum ArgumentPassingMethod {
0034         CommandLine,
0035         NewlineSeparatedInputFile,
0036         NullSeparatedInputFile,
0037 
0038         NumArgumentPassingMethods
0039     };
0040 
0041     QString id() const
0042     {
0043         return m_id;
0044     }
0045     QString label() const
0046     {
0047         return m_label;
0048     }
0049 
0050     const QStringList &patterns() const
0051     {
0052         return m_patterns;
0053     }
0054     QString outputFileName() const
0055     {
0056         return m_outputFileName;
0057     }
0058 
0059     QString createCommand() const;
0060     ArgumentPassingMethod createCommandArgumentPassingMethod() const
0061     {
0062         return m_createMethod;
0063     }
0064 
0065     QString verifyCommand() const;
0066     ArgumentPassingMethod verifyCommandArgumentPassingMethod() const
0067     {
0068         return m_verifyMethod;
0069     }
0070 
0071     bool startCreateCommand(QProcess *process, const QStringList &files) const;
0072     bool startVerifyCommand(QProcess *process, const QStringList &files) const;
0073 
0074     static QString installPath();
0075     static void setInstallPath(const QString &ip);
0076 
0077     static std::vector<std::shared_ptr<ChecksumDefinition>> getChecksumDefinitions();
0078     static std::vector<std::shared_ptr<ChecksumDefinition>> getChecksumDefinitions(QStringList &errors);
0079 
0080     static std::shared_ptr<ChecksumDefinition> getDefaultChecksumDefinition(const std::vector<std::shared_ptr<ChecksumDefinition>> &available);
0081     static void setDefaultChecksumDefinition(const std::shared_ptr<ChecksumDefinition> &checksumDefinition);
0082 
0083 protected:
0084     void setCreateCommandArgumentPassingMethod(ArgumentPassingMethod method)
0085     {
0086         m_createMethod = method;
0087     }
0088     void setVerifyCommandArgumentPassingMethod(ArgumentPassingMethod method)
0089     {
0090         m_verifyMethod = method;
0091     }
0092 
0093 private:
0094     virtual QString doGetCreateCommand() const = 0;
0095     virtual QString doGetVerifyCommand() const = 0;
0096     virtual QStringList doGetCreateArguments(const QStringList &files) const = 0;
0097     virtual QStringList doGetVerifyArguments(const QStringList &files) const = 0;
0098 
0099 private:
0100     const QString m_id;
0101     const QString m_label;
0102     const QString m_outputFileName;
0103     const QStringList m_patterns;
0104     ArgumentPassingMethod m_createMethod = CommandLine;
0105     ArgumentPassingMethod m_verifyMethod = CommandLine;
0106 };
0107 
0108 }