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"