aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/core/GpgCoreTestKeyOpera.cpp
blob: 5a15e00569be4c0dae196448b840cedf8e2a7bec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/**
 * Copyright (C) 2021-2024 Saturneric <[email protected]>
 *
 * 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 <https://www.gnu.org/licenses/>.
 *
 * 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 <[email protected]> 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