Warning, file /pim/kleopatra/autotests/keyparameterstest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /* -*- mode: c++; c-basic-offset:4 -*-
0002     autotests/keyparameterstest.cpp
0003 
0004     This file is part of Kleopatra's test suite.
0005     SPDX-FileCopyrightText: 2022 g10 Code GmbH
0006     SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
0007 
0008     SPDX-License-Identifier: GPL-2.0-or-later
0009 */
0010 
0011 #include "utils/keyparameters.h"
0012 
0013 #include <Libkleo/KeyUsage>
0014 
0015 #include <QDate>
0016 #include <QTest>
0017 
0018 #include <gpgme++/key.h>
0019 
0020 using namespace Kleo;
0021 
0022 class KeyParametersTest : public QObject
0023 {
0024     Q_OBJECT
0025 
0026 private Q_SLOTS:
0027     void test_OpenPGP_key()
0028     {
0029         KeyParameters params{KeyParameters::OpenPGP};
0030         params.setName(QStringLiteral("Ada Lovelace"));
0031         params.setEmail(QStringLiteral("ada.lovelace@example.net"));
0032         params.setKeyType(GpgME::Subkey::AlgoEDDSA);
0033         params.setKeyCurve(QStringLiteral("ed25519"));
0034         params.setKeyUsage(KeyUsage{KeyUsage::Sign | KeyUsage::Authenticate});
0035         params.setSubkeyType(GpgME::Subkey::AlgoECDH);
0036         params.setSubkeyCurve(QStringLiteral("cv25519"));
0037         params.setSubkeyUsage(KeyUsage{KeyUsage::Encrypt});
0038         params.setExpirationDate(QDate{2024, 12, 10});
0039 
0040         QCOMPARE(params.toString(),
0041                  QStringLiteral("<GnupgKeyParms format=\"internal\">\n"
0042                                 "%ask-passphrase\n"
0043                                 "Key-Type:EdDSA\n"
0044                                 "Key-Curve:ed25519\n"
0045                                 "Key-Usage:sign auth\n"
0046                                 "Subkey-Type:ECDH\n"
0047                                 "Subkey-Usage:encrypt\n"
0048                                 "Subkey-Curve:cv25519\n"
0049                                 "Expire-Date:2024-12-10\n"
0050                                 "Name-Real:Ada Lovelace\n"
0051                                 "Name-Email:ada.lovelace@example.net\n"
0052                                 "</GnupgKeyParms>"));
0053     }
0054 
0055     void test_SMIME_CSR()
0056     {
0057         KeyParameters params{KeyParameters::CMS};
0058         params.setDN(QStringLiteral("CN=Ada Lovelace,L=London,C=UK"));
0059         params.setEmail(QStringLiteral("ada.lovelace@example.net"));
0060         params.addEmail(QStringLiteral(u"ada@t\u00E4st.example.org"));
0061         params.setKeyType(GpgME::Subkey::AlgoRSA);
0062         params.setKeyLength(3072);
0063         params.setKeyUsage(KeyUsage{KeyUsage::Sign | KeyUsage::Encrypt});
0064         params.addDomainName(QStringLiteral("ada.example.net"));
0065         params.addDomainName(QStringLiteral(u"t\u00E4st.example.org"));
0066         params.addURI(QStringLiteral("https://ada.example.net"));
0067         params.addURI(QStringLiteral("https://lovelace.example.org"));
0068         QCOMPARE(params.toString(),
0069                  QStringLiteral("<GnupgKeyParms format=\"internal\">\n"
0070                                 "Key-Type:RSA\n"
0071                                 "Key-Length:3072\n"
0072                                 "Key-Usage:sign encrypt\n"
0073                                 "Name-DN:CN=Ada Lovelace,L=London,C=UK\n"
0074                                 "Name-Email:ada.lovelace@example.net\n"
0075                                 "Name-Email:ada@xn--tst-qla.example.org\n"
0076                                 "Name-DNS:ada.example.net\n"
0077                                 "Name-DNS:xn--tst-qla.example.org\n"
0078                                 "Name-URI:https://ada.example.net\n"
0079                                 "Name-URI:https://lovelace.example.org\n"
0080                                 "</GnupgKeyParms>"));
0081     }
0082 
0083     void test_SMIME_CSR_for_card_key()
0084     {
0085         KeyParameters params{KeyParameters::CMS};
0086         params.setDN(QStringLiteral("CN=Ada Lovelace,L=London,C=UK"));
0087         params.setEmail(QStringLiteral("ada@example.net"));
0088         params.setCardKeyRef(QStringLiteral("OPENPGP.1"));
0089         params.setKeyUsage(KeyUsage{KeyUsage::Sign});
0090         QCOMPARE(params.toString(),
0091                  QStringLiteral("<GnupgKeyParms format=\"internal\">\n"
0092                                 "Key-Type:card:OPENPGP.1\n"
0093                                 "Key-Usage:sign\n"
0094                                 "Name-DN:CN=Ada Lovelace,L=London,C=UK\n"
0095                                 "Name-Email:ada@example.net\n"
0096                                 "</GnupgKeyParms>"));
0097     }
0098 };
0099 
0100 QTEST_MAIN(KeyParametersTest)
0101 #include "keyparameterstest.moc"