diff options
author | Andre Heinecke <[email protected]> | 2019-10-29 15:26:42 +0000 |
---|---|---|
committer | Andre Heinecke <[email protected]> | 2019-10-29 15:31:20 +0000 |
commit | 36f7f7a478228a64d3d51a4901a264c8f55f90bb (patch) | |
tree | 1f502720bec8b1d33888eb527c055b0d227aade9 /lang/cpp/src/gpgsignkeyeditinteractor.cpp | |
parent | cpp: Add convenience API to obtain remarks (diff) | |
download | gpgme-36f7f7a478228a64d3d51a4901a264c8f55f90bb.tar.gz gpgme-36f7f7a478228a64d3d51a4901a264c8f55f90bb.zip |
cpp: Add support for multiple keysigs in edit
* 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
Diffstat (limited to 'lang/cpp/src/gpgsignkeyeditinteractor.cpp')
-rw-r--r-- | lang/cpp/src/gpgsignkeyeditinteractor.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/lang/cpp/src/gpgsignkeyeditinteractor.cpp b/lang/cpp/src/gpgsignkeyeditinteractor.cpp index 295802db..d43d2f90 100644 --- a/lang/cpp/src/gpgsignkeyeditinteractor.cpp +++ b/lang/cpp/src/gpgsignkeyeditinteractor.cpp @@ -64,6 +64,7 @@ public: std::vector<unsigned int> userIDs; std::vector<unsigned int>::const_iterator currentId, nextId; unsigned int checkLevel; + bool dupeOk; const char *command() const { @@ -126,7 +127,8 @@ GpgSignKeyEditInteractor::Private::Private() userIDs(), currentId(), nextId(), - checkLevel(0) + checkLevel(0), + dupeOk(false) { } @@ -159,6 +161,7 @@ enum SignKeyState { SET_TRUST_REGEXP, CONFIRM, CONFIRM2, + DUPE_OK, QUIT, SAVE, ERROR = EditInteractor::ErrorState @@ -193,6 +196,7 @@ static GpgSignKeyEditInteractor_Private::TransitionMap makeTable() addEntry(SET_CHECK_LEVEL, GET_BOOL, "sign_uid.okay", CONFIRM); addEntry(SET_EXPIRE, GET_BOOL, "sign_uid.class", SET_CHECK_LEVEL); addEntry(CONFIRM, GET_BOOL, "sign_uid.local_promote_okay", CONFIRM); + addEntry(DUPE_OK, GET_BOOL, "sign_uid.okay", CONFIRM); addEntry(CONFIRM, GET_BOOL, "sign_uid.okay", CONFIRM); addEntry(CONFIRM2, GET_BOOL, "sign_uid.okay", CONFIRM); addEntry(CONFIRM, GET_LINE, "keyedit.prompt", COMMAND); @@ -205,6 +209,7 @@ static GpgSignKeyEditInteractor_Private::TransitionMap makeTable() addEntry(UIDS_LIST_SEPARATELY_DONE, GET_LINE, "sign_uid.expire", SET_EXPIRE); addEntry(UIDS_LIST_SEPARATELY_DONE, GET_LINE, "sign_uid.class", SET_CHECK_LEVEL); addEntry(UIDS_LIST_SEPARATELY_DONE, GET_BOOL, "sign_uid.okay", CONFIRM); + addEntry(UIDS_LIST_SEPARATELY_DONE, GET_BOOL, "sign_uid.dupe_okay", DUPE_OK); addEntry(CONFIRM, GET_LINE, "keyedit.prompt", QUIT); addEntry(ERROR, GET_LINE, "keyedit.prompt", QUIT); addEntry(QUIT, GET_BOOL, "keyedit.save.okay", SAVE); @@ -236,6 +241,8 @@ const char *GpgSignKeyEditInteractor::action(Error &err) const return nullptr; case SET_CHECK_LEVEL: return check_level_strings[d->checkLevel]; + case DUPE_OK: + return answer(d->dupeOk); case CONFIRM2: case CONFIRM: return answer(true); @@ -326,3 +333,9 @@ void GpgSignKeyEditInteractor::setSigningOptions(int options) assert(!d->started); d->options = options; } + +void GpgSignKeyEditInteractor::setDupeOk(bool value) +{ + assert(!d->started); + d->dupeOk = value; +} |