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 }