File indexing completed on 2024-06-23 05:14:19

0001 /*  utils/writecertassuantransaction.cpp
0002 
0003     This file is part of Kleopatra, the KDE keymanager
0004     SPDX-FileCopyrightText: 2020 g10 Code GmbH
0005     SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #include "writecertassuantransaction.h"
0011 
0012 #include <QByteArray>
0013 
0014 #include <gpgme++/data.h>
0015 
0016 #include <string.h>
0017 
0018 #include "kleopatra_debug.h"
0019 
0020 using namespace Kleo;
0021 using namespace GpgME;
0022 
0023 WriteCertAssuanTransaction::WriteCertAssuanTransaction(const QByteArray &certificateData)
0024     : DefaultAssuanTransaction()
0025     , mCertData(certificateData.constData(), certificateData.size())
0026 {
0027 }
0028 
0029 WriteCertAssuanTransaction::~WriteCertAssuanTransaction()
0030 {
0031 }
0032 
0033 namespace
0034 {
0035 static bool startsWithKeyword(const char *string, const char *keyword)
0036 {
0037     // simplified version of has_leading_keyword() in gnupg/common/stringhelp.c
0038     if (!string || !keyword) {
0039         return false;
0040     }
0041 
0042     const size_t n = strlen(keyword);
0043     return !strncmp(string, keyword, n) && (!string[n] || string[n] == ' ' || string[n] == '\t');
0044 }
0045 }
0046 
0047 Data WriteCertAssuanTransaction::inquire(const char *name, const char *args, Error &err)
0048 {
0049     (void)args;
0050     (void)err;
0051     qCDebug(KLEOPATRA_LOG) << "WriteCertAssuanTransaction::inquire() - name:" << name;
0052 
0053     if (startsWithKeyword(name, "CERTDATA")) {
0054         return mCertData;
0055     } else {
0056         return Data::null;
0057     }
0058 }