diff options
Diffstat (limited to 'plugins/CryptoPP/src/GPGw/keys.cpp')
-rw-r--r-- | plugins/CryptoPP/src/GPGw/keys.cpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/plugins/CryptoPP/src/GPGw/keys.cpp b/plugins/CryptoPP/src/GPGw/keys.cpp new file mode 100644 index 0000000000..19606d446a --- /dev/null +++ b/plugins/CryptoPP/src/GPGw/keys.cpp @@ -0,0 +1,68 @@ +#include "../commonheaders.h"
+#include "gpgw.h"
+
+typedef char tkeyuserid[keyuseridsize];
+
+tkeyuserid *keyuserids[2];
+int keyuseridcount[2];
+
+
+void initKeyUserIDs(const int atype)
+{
+ keyuseridcount[atype]=0;
+ keyuserids[atype]=NULL;
+}
+
+
+void updateKeyUserIDs(const int atype)
+{
+ char *pos;
+ gpgResult gpgresult;
+ char buffer[largebuffersize];
+ char keyuserid[keyuseridsize];
+
+ releaseKeyUserIDs(atype);
+ initKeyUserIDs(atype);
+
+ ZeroMemory(buffer, sizeof(buffer));
+ if(atype==publickeyuserid) gpgresult=gpgListPublicKeys(buffer);
+ else gpgresult=gpgListSecretKeys(buffer);
+
+ if(gpgresult!=gpgSuccess)
+ {
+// if(atype==publickeyuserid) ErrorMessage(txterror, txtlistpublickeysfailed, txtverifyoptions);
+// else ErrorMessage(txterror, txtlistsecretkeysfailed, txtverifyoptions);
+ return;
+ }
+
+ for(pos=buffer; pos!=NULL; )
+ {
+ pos=getNextPart(keyuserid, pos, txtcrlf);
+
+ if(pos!=NULL)
+ {
+ keyuseridcount[atype]++;
+ keyuserids[atype] = (tkeyuserid*)realloc(keyuserids[atype], sizeof(tkeyuserid)*keyuseridcount[atype]);
+ strcpy(keyuserids[atype][keyuseridcount[atype]-1], keyuserid);
+ }
+ }
+}
+
+
+void releaseKeyUserIDs(const int atype)
+{
+ free(keyuserids[atype]);
+}
+
+
+char *getKeyUserID(const int atype, const int aindex)
+{
+ return keyuserids[atype][aindex];
+}
+
+
+int getKeyUserIDCount(const int atype)
+{
+ return keyuseridcount[atype];
+}
+
|