aboutsummaryrefslogtreecommitdiffstats
path: root/lang/cpp (unfollow)
Commit message (Collapse)AuthorFilesLines
2019-10-29cpp: Add support for multiple keysigs in editAndre Heinecke2-1/+19
* lang/cpp/src/gpgsignkeyeditinteractor.cpp (GpgSignKeyEditInteractor::setDupeOk): New. (makeTable): Add new tansitions. (SignKeyState): Add DUPE_OK Status. (GpgSignKeyEditInteractor::action): Handle DUPE_OK. (GpgSignKeyEditInteractor::Private::Private): Carry flag. -- When extended-edit is enabled this can be used to answer the "dupe_ok" query from the edit-key with yes. This is for: GnuPG-Bug-Id: T4734
2019-10-29cpp: Add convenience API to obtain remarksAndre Heinecke2-0/+67
* lang/cpp/src/key.h, lang/cpp/src/key.cpp (UserID::remark): New. -- A remark made by one key on another is a signature notation on a user id certification signature with the name "[email protected]". This helps with: GnuPG-Bug-Id: T4734
2019-10-29cpp: Minor coding style fixAndre Heinecke1-3/+2
--
2019-05-03cpp: Fix initialization warningAndre Heinecke1-1/+1
* lanc/cpp/src/gpggencardkeyinteractor.cpp (GpgGenCardKeyInteractor::Private): Fix initialization warning.
2019-04-24cpp: Add wrapper for gpgme_set_global_flagAndre Heinecke2-0/+8
* lang/cpp/src/context.cpp (setGlobalFlag): New. * lang/cpp/src/global.h (setGlobalFlag): Export it. -- GnuPG-Bug-Id: T4471
2019-03-26cpp: Fix GenCardKeyInteractor and extend itAndre Heinecke2-2/+139
* NEWS: Mention interface change. * lang/cpp/src/gpggencardkeyinteractor.cpp (GpgGenCardKeyInteractor::setAlgo): New. (GpgGenCardKeyInteractor::action), (GpgGenCardKeyInteractor::nextState: Handle new interface. -- Tested that this workes with the old interface of GnuPG 2.2.5 and the new interface since GnuPG 2.2.6 GnuPG-Bug-Id: T4428
2019-03-13cpp: Fix Error::hasSystemErrorAndre Heinecke1-1/+1
* lang/cpp/src/context.cpp (Error::hasSystemError): Invert logic to do what it says. -- This is safe because according to codesearch it is only used in QGpgME
2019-02-21cpp: Add ostream operators for import resultAndre Heinecke2-1/+46
* lang/cpp/src/importresult.cpp: Add ostream operators. * lang/cpp/src/importresult.h: Update accordingly.
2019-02-21cpp: Make GpgME::Data::toKeys really constAndre Heinecke1-0/+2
* lang/cpp/src/data.cpp (GpgME::Data::toKeys): Rewind afterards. -- This fixes unexpected behavior that the seek pointer is changed after calling the const toKeys.
2019-01-16build: With LD_LIBRARY_PATH defined, use --disable-new-dtags.NIIBE Yutaka1-1/+1
* configure.ac (LDADD_FOR_TESTS_KLUDGE): New for --disable-new-dtags. * tests/Makefile.am (LDADD): Use LDADD_FOR_TESTS_KLUDGE. * lang/cpp/tests/Makefile.am, lang/qt/tests/Makefile.am: Likewise. * tests/gpg/Makefile.am, tests/gpgsm/Makefile.am: Likewise. * tests/json/Makefile.am, tests/opassuan/Makefile.am: Likewise. -- GnuPG-bug-id: 4298 Signed-off-by: NIIBE Yutaka <[email protected]>
2018-12-03qt,cpp: Consistently use nullptr and overrideAndre Heinecke37-250/+252
* lang/cpp/src/Makefile.am, lang/qt/src/Makefile.am (AM_CPPFLAGS): Add suggest-override and zero-as-null-pointer-constant warnings. * lang/cpp/src/*, lang/qt/src/*: Consistenly use nullptr and override. -- This was especially important for the headers so that downstream users of GpgME++ or QGpgME do not get flooded by warnings if they have these warnings enabled. It also improves compiler errors/warnings in case of accidental mistakes.
2018-11-16Add SPDX identifiers to most source filesWerner Koch1-4/+3
-- Signed-off-by: Werner Koch <[email protected]>
2018-11-08spelling: fix misspellingsDaniel Kahn Gillmor2-2/+2
Signed-off-by: Daniel Kahn Gillmor <[email protected]>
2018-10-29cpp,tests: Add another test runnerAndre Heinecke2-1/+188
* lang/cpp/tests/run-verify.cpp: New. * lang/cpp/tests/Makefile.am: Update accordingly. -- Add another test runner which helps to find problems on windows.
2018-10-25cpp: Add some convenience functionsAndre Heinecke4-0/+41
* lang/cpp/src/context.cpp (Context::create): New. * lang/cpp/src/context.h: Update accordingly. * lang/cpp/src/key.cpp, lang/cpp/src/key.h: (Key::isBad, Subkey::isBad, UserID::isBad) (UserID::Signature::isBad): Add shorthand for the isX checks. * NEWS: Mention it. -- I don't know how often I wrote: if (key.isNull() || key.isExpired() || key.isRevoked() ... And for the context it is good practice to use a unique ptr so the API should make it easy.
2018-10-18doc: use https:// for www.gnu.orgDaniel Kahn Gillmor1-1/+1
-- Signed-off-by: Daniel Kahn Gillmor <[email protected]>
2018-10-09cpp: Add KeyListMode::LocateAndre Heinecke1-0/+1
* cpp/src/global.h (KeyListMode): Add Locate. -- Similar to locate in core.
2018-10-09cpp: Add first manual testsAndre Heinecke5-1/+335
* lang/cpp/Makefile.am: Add tests subdir. * lang/cpp/tests/Makefile.am: New. * lang/cpp/tests/README, lang/cpp/tests/run-getkey.cpp, lang/cpp/tests/run-keylist.cpp: New. * configure.ac: Configure tests makefile. -- The autotests for c++ live in lang/qt/tests these tests are more for manual experiments to validate some functionality.
2018-10-09cpp: Initialize all gpgme_key_t's in contextAndre Heinecke1-3/+3
* lang/cpp/src/context.cpp (Context::startKeyListing), (Context::keyListResult, Context::signingKeys): Initialize key. -- "Should" not be neccessary but it's cleaner and would have covered the case of the previous commit.
2018-08-08cpp: Fix use after free in gencardkeyinteractorAndre Heinecke1-5/+4
* lang/cpp/src/gpggencardkeyinteractor.cpp (GpgGenCardKeyInteractor::Private::keysize): Change to string. -- The value is only required as string so we can save it this way to avoid the need to convert it for the action command. GnuPG-Bug-Id: T4094
2018-07-24cpp: Add safety checks for key updateAndre Heinecke2-1/+4
* lang/cpp/src/key.cpp (Key::update): Check that the key is not NULL. * lang/cpp/src/verificationresult.cpp (GpgME::Signature::key): Check for fingerprint.
2018-07-19cpp: Print origin and last update for key/uidAndre Heinecke1-0/+4
* lang/cpp/src/key.cpp: Print origin and last update in iostream operators.
2018-07-05cpp: Add enum mapping for GPGME_AUDIT_LOG_DIAGAndre Heinecke2-0/+5
* src/context.cpp (to_auditlog_flags): Map DIAG value. * src/context.h (AuditLogFlags): Add it.
2018-07-04cpp: Fix memory of DecryptionResult::symkeyAlgoAndre Heinecke1-0/+7
* lang/cpp/src/decryptionresult.cpp (Private, ~Private): strdup the symkey algo.
2018-06-08cpp: Add proper gpgme_op_createkeyAndre Heinecke2-0/+25
* lang/cpp/src/context.cpp, lang/cpp/src/context.h (Context::createKeyEx): New. -- The createKeyEx function follows the usual pattern that the synchronous call returns a result directly while for the async an extra call is neccessary.
2018-06-01cpp: Add gpgme_(get)set_ctx_flagAndre Heinecke2-0/+14
* NEWS: Mention API extensions. * lang/cpp/src/context.cpp, lang/cpp/src/context.h (Context::setFlag, Context::getFlag): New.
2018-06-01cpp: Add legacy_cipher_nomdcAndre Heinecke2-0/+8
* lang/cpp/src/decryptionresult.cpp, lang/cpp/src/decryptionresult.h (DecryptionResult::isLegacyCipherNoMDC): New. --
2018-05-29cpp: Add gpgme_data_rewind to cpp APIAndre Heinecke2-0/+8
* lang/cpp/src/data.h, lang/cpp/src/data.cpp (Data::rewind): New. * lang/qt/tests/t-various.cpp (testDataRewind): Test it. -- The advantage of this convieniance function in GPGME is that it avoids the messiness that are declarations with off_t. GnuPG-Bug-Id: T3996
2018-05-22cpp: Expose sessionKey and symkeyAlgoAndre Heinecke2-0/+15
* lang/cpp/decryptionresult.cpp, lang/cpp/decryptionresult.h (DecryptionResult::symkeyAlgo, DecryptionResult::sessionKey): New.
2018-04-19cpp: Add origin and last_update to UserIDAndre Heinecke2-19/+47
* NEWS: Mention it. * lang/cpp/src/key.cpp, lang/cpp/src/key.h (UserID::lastUpdate), (UserID::origin): New. (gpgme_origin_to_pp_origin): New helper.
2018-04-19cpp: Add origin and last_updateAndre Heinecke2-0/+52
* NEWS: mention interface change. * lang/cpp/src/key.cpp (Key::origin, Key::lastUpdate): New. * lang/cpp/src/key.h (Key::Origin): New enum.
2018-03-15cpp: Expose skipped_v3_keysAndre Heinecke2-0/+6
* lang/cpp/src/importresult.cpp, lang/cpp/src/importresult.h (ImportResult::numV3KeysSkipped): New. -- GnuPG-Bug-Id: T3776
2018-02-16cpp: Add shorthand for key locateAndre Heinecke2-0/+35
* lang/cpp/src/key.cpp (Key::locate): New static helper. * lang/cpp/src/key.h: Update accordingly.
2018-02-09cpp: Add SpawnShowWindow flagAndre Heinecke1-1/+2
* lang/cpp/src/context.h (SpawnShowWindow): New.
2018-02-09cpp: Add conveniance Data::toStringAndre Heinecke2-0/+17
* lang/cpp/src/data.h, lang/cpp/src/data.cpp: Add Data::toString. -- I'm lazy and like to waste memory.
2017-12-08Spelling fixes for comments and docAndre Heinecke2-2/+2
-- Patch provided by ka7 in dev.gnupg.org Differential D423
2017-12-07cpp: Fix handling of lsig promotionAndre Heinecke1-0/+4
* src/gpgsignkeyeditinteractor.cpp (SignKeyState): Add second CONFIRM state. (makeTable): Properly handle local_promote_okay. (action): Handle CONFIRM2. -- This fixes changing a local signature to a "public" signature. GnuPG-Bug-Id: T1649
2017-12-01cpp: Wrap create_key and create_subkeyAndre Heinecke2-0/+76
* lang/cpp/src/context.cpp, lang/cpp/src/context.h (Context::startCreateKey) (Context::createKey, Context::createSubkey) (Context::startCreateSubkey): New.
2017-09-04cpp: Fix version info comparisonAndre Heinecke1-7/+16
* lang/cpp/src/engineinfo.h (EngineInfo::Version::operator<): Fix logic. * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator>): New. * NEWS: Mention added API -- This fixes a logic error that 2.2.0 < 2.1.19 would return true.
2017-07-26cpp: Fix Key::isDeVs for subkeysAndre Heinecke1-1/+12
* lang/cpp/src/key.cpp (Key::isDeVs): Check all subkeys. -- Previosly only the primary key was checked and not all subkeys.
2017-07-10Add isDeVs to ostream operatorAndre Heinecke2-0/+2
* lang/cpp/src/decryptionresult.cpp, lang/cpp/src/verificationresult.cpp: Extend ostream operator to include isDeVs.
2017-07-10Fix some shadow warningsAndre Heinecke1-4/+4
-- Warnings in headers hurt downstream.
2017-06-12cpp: Fix CMake config library name for GPGMEAndre Heinecke1-1/+1
* lang/cpp/src/GpgmeppConfig.cmake.in.in: The link library is of course also dynamic. -- GnuPG-Bug-Id: T3181
2017-06-01Add flag 'is_de_vs' to decryption results and signatures.Justus Winter4-0/+12
* NEWS: Update. * lang/cpp/src/decryptionresult.cpp (DecryptionResult::isDeVs): New function. * lang/cpp/src/decryptionresult.h (DecryptionResult::isDeVs): New prototype. * lang/cpp/src/verificationresult.cpp (Signature::isDeVs): New function. * lang/cpp/src/verificationresult.h (Signature::isDeVs): New prototype. * lang/python/src/results.py (DecryptResult): Turn field 'is_de_vs' into a boolean. (Signature): Likewise. * src/decrypt.c (_gpgme_decrypt_status_handler): Handle the new compliance status line. * src/verify.c (_gpgme_verify_status_handler): Likewise. * src/gpgme.h.in (gpgme_status_code_t): Add new status codes for the new status lines. * src/keylist.c (parse_pub_field18): Move function to 'util.h'. (keylist_colon_handler): Adapt callsites. * src/status-table.c (status_table): Add new status lines. * src/util.h (PARSE_COMPLIANCE_FLAGS): New macro. This used to be 'parse_pub_field18', but turned into a macro to make it polymorphic. -- When decrypting data and verifying signatures, report whether the operations are in compliance with the criteria for data classified as VS-NfD. This information can the be presented to the user. GnuPG-bug-id: 3059 Signed-off-by: Justus Winter <[email protected]>
2017-04-25qt, cpp: Add additional copyright BSI notesAndre Heinecke61-4/+124
* lang/cpp/Makefile.am, lang/cpp/src/Makefile.am, lang/cpp/src/callbacks.cpp, lang/cpp/src/callbacks.h, lang/cpp/src/configuration.cpp, lang/cpp/src/configuration.h, lang/cpp/src/context_glib.cpp, lang/cpp/src/context_p.h, lang/cpp/src/context_qt.cpp, lang/cpp/src/context_vanilla.cpp, lang/cpp/src/data_p.h, lang/cpp/src/decryptionresult.cpp, lang/cpp/src/decryptionresult.h, lang/cpp/src/defaultassuantransaction.cpp, lang/cpp/src/defaultassuantransaction.h, lang/cpp/src/editinteractor.cpp, lang/cpp/src/editinteractor.h, lang/cpp/src/encryptionresult.cpp, lang/cpp/src/encryptionresult.h, lang/cpp/src/engineinfo.cpp, lang/cpp/src/engineinfo.h, lang/cpp/src/error.h, lang/cpp/src/eventloopinteractor.cpp, lang/cpp/src/eventloopinteractor.h, lang/cpp/src/exception.cpp, lang/cpp/src/exception.h, lang/cpp/src/global.h, lang/cpp/src/gpgadduserideditinteractor.cpp, lang/cpp/src/gpgadduserideditinteractor.h, lang/cpp/src/gpgagentgetinfoassuantransaction.cpp, lang/cpp/src/gpgagentgetinfoassuantransaction.h, lang/cpp/src/gpgmefw.h, lang/cpp/src/gpgsetexpirytimeeditinteractor.cpp, lang/cpp/src/gpgsetexpirytimeeditinteractor.h, lang/cpp/src/gpgsetownertrusteditinteractor.cpp, lang/cpp/src/gpgsetownertrusteditinteractor.h, lang/cpp/src/gpgsignkeyeditinteractor.cpp, lang/cpp/src/gpgsignkeyeditinteractor.h, lang/cpp/src/importresult.cpp, lang/cpp/src/importresult.h, lang/cpp/src/interfaces/assuantransaction.h, lang/cpp/src/interfaces/dataprovider.h, lang/cpp/src/interfaces/passphraseprovider.h, lang/cpp/src/interfaces/progressprovider.h, lang/cpp/src/keygenerationresult.cpp, lang/cpp/src/keygenerationresult.h, lang/cpp/src/keylistresult.cpp, lang/cpp/src/keylistresult.h, lang/cpp/src/notation.h, lang/cpp/src/result.h, lang/cpp/src/result_p.h, lang/cpp/src/scdgetinfoassuantransaction.cpp, lang/cpp/src/scdgetinfoassuantransaction.h, lang/cpp/src/signingresult.cpp, lang/cpp/src/signingresult.h, lang/cpp/src/trustitem.cpp, lang/cpp/src/trustitem.h, lang/cpp/src/util.h, lang/cpp/src/verificationresult.cpp, lang/cpp/src/verificationresult.h, lang/cpp/src/vfsmountresult.cpp, lang/qt/Makefile.am, lang/qt/doc/Makefile.am, lang/qt/src/Makefile.am, lang/qt/src/defaultkeygenerationjob.h, lang/qt/tests/Makefile.am: Add missing copyright. -- Moving the qt / cpp bindings into GPGME contained global changes that modified nearly every source file. To reflect that the copyright year / note should also be updated.
2017-04-25Change copyright from Intevation to BSIAndre Heinecke7-7/+14
* lang/cpp/src/gpggencardkeyinteractor.cpp, lang/cpp/src/gpggencardkeyinteractor.h, lang/cpp/src/gpgmepp_export.h, lang/cpp/src/swdbresult.cpp, lang/cpp/src/swdbresult.h, lang/cpp/src/tofuinfo.cpp, lang/cpp/src/tofuinfo.h, lang/qt/src/abstractimportjob.h, lang/qt/src/adduseridjob.h, lang/qt/src/changeexpiryjob.h, lang/qt/src/changeownertrustjob.h, lang/qt/src/changepasswdjob.h, lang/qt/src/cryptoconfig.cpp, lang/qt/src/cryptoconfig.h, lang/qt/src/dataprovider.cpp, lang/qt/src/dataprovider.h, lang/qt/src/decryptjob.h, lang/qt/src/decryptverifyjob.h, lang/qt/src/deletejob.h, lang/qt/src/dn.cpp, lang/qt/src/dn.h, lang/qt/src/downloadjob.h, lang/qt/src/encryptjob.h, lang/qt/src/exportjob.h, lang/qt/src/hierarchicalkeylistjob.h, lang/qt/src/importfromkeyserverjob.h, lang/qt/src/importjob.h, lang/qt/src/job.cpp, lang/qt/src/job.h, lang/qt/src/keyformailboxjob.h, lang/qt/src/keygenerationjob.h, lang/qt/src/keylistjob.h, lang/qt/src/listallkeysjob.h, lang/qt/src/multideletejob.h, lang/qt/src/protocol.h, lang/qt/src/protocol_p.h, lang/qt/src/qgpgme_export.h, lang/qt/src/qgpgmeadduseridjob.cpp, lang/qt/src/qgpgmeadduseridjob.h, lang/qt/src/qgpgmebackend.cpp, lang/qt/src/qgpgmebackend.h, lang/qt/src/qgpgmechangeexpiryjob.cpp, lang/qt/src/qgpgmechangeexpiryjob.h, lang/qt/src/qgpgmechangeownertrustjob.cpp, lang/qt/src/qgpgmechangeownertrustjob.h, lang/qt/src/qgpgmechangepasswdjob.cpp, lang/qt/src/qgpgmechangepasswdjob.h, lang/qt/src/qgpgmedecryptjob.cpp, lang/qt/src/qgpgmedecryptjob.h, lang/qt/src/qgpgmedecryptverifyjob.cpp, lang/qt/src/qgpgmedecryptverifyjob.h, lang/qt/src/qgpgmedeletejob.cpp, lang/qt/src/qgpgmedeletejob.h, lang/qt/src/qgpgmedownloadjob.cpp, lang/qt/src/qgpgmedownloadjob.h, lang/qt/src/qgpgmeencryptjob.cpp, lang/qt/src/qgpgmeencryptjob.h, lang/qt/src/qgpgmeexportjob.cpp, lang/qt/src/qgpgmeexportjob.h, lang/qt/src/qgpgmeimportfromkeyserverjob.cpp, lang/qt/src/qgpgmeimportfromkeyserverjob.h, lang/qt/src/qgpgmeimportjob.cpp, lang/qt/src/qgpgmeimportjob.h, lang/qt/src/qgpgmekeyformailboxjob.cpp, lang/qt/src/qgpgmekeyformailboxjob.h, lang/qt/src/qgpgmekeygenerationjob.cpp, lang/qt/src/qgpgmekeygenerationjob.h, lang/qt/src/qgpgmekeylistjob.cpp, lang/qt/src/qgpgmekeylistjob.h, lang/qt/src/qgpgmelistallkeysjob.cpp, lang/qt/src/qgpgmelistallkeysjob.h, lang/qt/src/qgpgmenewcryptoconfig.cpp, lang/qt/src/qgpgmenewcryptoconfig.h, lang/qt/src/qgpgmerefreshkeysjob.cpp, lang/qt/src/qgpgmerefreshkeysjob.h, lang/qt/src/qgpgmesecretkeyexportjob.cpp, lang/qt/src/qgpgmesecretkeyexportjob.h, lang/qt/src/qgpgmesignencryptjob.cpp, lang/qt/src/qgpgmesignencryptjob.h, lang/qt/src/qgpgmesignjob.cpp, lang/qt/src/qgpgmesignjob.h, lang/qt/src/qgpgmesignkeyjob.cpp, lang/qt/src/qgpgmesignkeyjob.h, lang/qt/src/qgpgmetofupolicyjob.cpp, lang/qt/src/qgpgmetofupolicyjob.h, lang/qt/src/qgpgmeverifydetachedjob.cpp, lang/qt/src/qgpgmeverifydetachedjob.h, lang/qt/src/qgpgmeverifyopaquejob.cpp, lang/qt/src/qgpgmeverifyopaquejob.h, lang/qt/src/qgpgmewkspublishjob.cpp, lang/qt/src/qgpgmewkspublishjob.h, lang/qt/src/refreshkeysjob.h, lang/qt/src/signencryptjob.h, lang/qt/src/signjob.h, lang/qt/src/signkeyjob.h, lang/qt/src/specialjob.h, lang/qt/src/threadedjobmixin.cpp, lang/qt/src/threadedjobmixin.h, lang/qt/src/tofupolicyjob.h, lang/qt/src/verifydetachedjob.h, lang/qt/src/verifyopaquejob.h, lang/qt/src/wkspublishjob.h, lang/qt/tests/run-keyformailboxjob.cpp, lang/qt/tests/t-config.cpp, lang/qt/tests/t-encrypt.cpp, lang/qt/tests/t-keylist.cpp, lang/qt/tests/t-keylocate.cpp, lang/qt/tests/t-ownertrust.cpp, lang/qt/tests/t-support.cpp, lang/qt/tests/t-support.h, lang/qt/tests/t-tofuinfo.cpp, lang/qt/tests/t-various.cpp, lang/qt/tests/t-verify.cpp, lang/qt/tests/t-wkspublish.cpp, tests/gpg/t-encrypt-mixed.c, tests/gpg/t-thread-keylist-verify.c, tests/gpg/t-thread-keylist.c, tests/run-decrypt.c: Change Intevation GmbH copyright to BSI. -- This should make it more transparent where the BSI is the actual copyright holder as the code was mostly developed as part of a development contract.
2017-03-24cpp: Respect decrypt flags in new functionsAndre Heinecke1-4/+4
* lang/cpp/src/context.cpp: Respect directly provided flags in the new decrypt functions. -- Overlooked in the initial commit. Also fixed the according unused variable warnings.
2017-03-24cpp: Use gpgme_op_decrypt_ex and add new flags.Andre Heinecke3-11/+58
* lang/cpp/src/context.cpp: New decrypt and decryptVerify functions that take flags as arguments. Use new variants in old functions. (Context::setDecryptionFlags): New helper. (Context::Private::Private): Initialize new member. * lang/cpp/src/context_p.h (Context::Private::decryptFlags): New. * lang/cpp/src/context.h (Context::DecryptFlags): New enum. (Context::EncryptionFlags): Extend for EncryptWrap. -- The setDecryptionFlags provides a generic way to set decryption flags for the whole context. This allows existing code to just keep using the old functions and modify the decryption behavior in a central place.
2017-03-22cpp: Wrap keylist_from_dataAndre Heinecke2-0/+29
* lang/cpp/data.h, lang/cpp/data.cpp (GpgME::Data::toKeys): New. -- Doing this in data instead of Context is a bit more idiomatic. But this could also be added to Context.
2017-03-20core,cpp: New key flag 'is_de_vs'.Werner Koch2-0/+12
* src/gpgme.h.in (_gpgme_subkey): New flag is_de_vs. * tests/run-keylist.c (main): Print that flag. * src/keylist.c (parse_pub_field18): New. (keylist_colon_handler): Parse compliance flags. * lang/cpp/src/key.cpp (Key::isDeVs): New. (Subkey::isDeVs): New. * lang/cpp/src/key.h (class Key): New method isDeVs. (class Subkey): New method isDeVs. Signed-off-by: Werner Koch <[email protected]>