/** * Copyright (C) 2021-2024 Saturneric * * This file is part of GpgFrontend. * * GpgFrontend is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * GpgFrontend 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GpgFrontend. If not, see . * * The initial version of the source code is inherited from * the gpg4usb project, which is under GPL-3.0-or-later. * * All the source code of GpgFrontend was modified and released by * Saturneric starting on May 12, 2021. * * SPDX-License-Identifier: GPL-3.0-or-later * */ #include "GpgCoreTest.h" #include "core/GpgConstants.h" #include "core/function/gpg/GpgKeyGetter.h" #include "core/function/gpg/GpgKeyImportExporter.h" #include "core/function/gpg/GpgKeyOpera.h" #include "core/model/GpgImportInformation.h" #include "core/utils/GpgUtils.h" static const char *test_private_key_data = R"( -----BEGIN PGP PRIVATE KEY BLOCK----- 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 cT12+dGCVkzJXnWZXTk/4A== =VmHj -----END PGP PRIVATE KEY BLOCK----- -----BEGIN PGP PRIVATE KEY BLOCK----- lFgEZ5+j3xYJKwYBBAHaRw8BAQdAYzou04dN5/KuKTrM80w2fRGv+656y0Y5e/ST jNJCq7UAAP44jXmba5En/xZ486kOW+9n/NJ5wPy1asUincFhj7doghLatBpnZ2dn ZyhnZ2dnZyk8Z2dnZ0BnZ2cuZ2dnPoiTBBMWCgA7FiEE6l89cR32HIl+PWSqGKHw OeM3f6kFAmefo98CGyMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQGKHw OeM3f6kUvgEAz9f89YuVbzftl6mzhaPgRDqxh7Dmxy0o2/SdxiofLdEBAIkc6Vo/ PLzKYcnA8my05aF1dJ7B/CZssVKYW/c71B0FnF0EZ5+j3xIKKwYBBAGXVQEFAQEH QIEXHJ39jsYYPeHezXS0u0chlyjZupL2f8FwA+UDgRBWAwEIBwAA/1lbjTXQp2MX ctRaqik7M0mCJmIGAQjFigTcFNWs0lmwDkiIeAQYFgoAIBYhBOpfPXEd9hyJfj1k qhih8DnjN3+pBQJnn6PfAhsMAAoJEBih8DnjN3+p4rYA/iKnxqzqJaxWLpxywDOT 2c/wCsje0ZqMQjwfwZJavICTAP900WK3uE9tXfQPQfD+Vb+5SHJrlSLhhLY+niOE MGJbAg== =R6Bn -----END PGP PRIVATE KEY BLOCK----- )"; namespace GpgFrontend::Test { TEST_F(GpgCoreTest, CoreAddADSKTestA) { auto info = GpgKeyImportExporter::GetInstance().ImportKey( GFBuffer(QString::fromLatin1(test_private_key_data))); ASSERT_EQ(info->not_imported, 0); ASSERT_EQ(info->imported, 2); auto key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) .GetKey("1D36EBABAAAE4996"); ASSERT_TRUE(key.IsGood()); auto subkeys = key.GetSubKeys(); ASSERT_EQ(subkeys->size(), 5); ASSERT_EQ((*subkeys)[2].GetID(), "2D1F9FC59B568A8C"); auto [err, data_objet] = GpgKeyOpera::GetInstance().AddADSK2KeySync(key, "37D98546C662B088"); ASSERT_TRUE(CheckGpgError(err) == GPG_ERR_NO_ERROR); GpgKeyGetter::GetInstance().FlushKeyCache(); key = GpgKeyGetter::GetInstance(kGpgFrontendDefaultChannel) .GetKey("1D36EBABAAAE4996"); ASSERT_TRUE(key.IsGood()); subkeys = key.GetSubKeys(); ASSERT_EQ(subkeys->size(), 3); ASSERT_EQ((*subkeys)[2].GetID(), "2D1F9FC59B568A8C"); ASSERT_TRUE((*subkeys)[2].IsADSK()); GpgKeyOpera::GetInstance().DeleteKey(key.GetId()); } } // namespace GpgFrontend::Test