GPGME recipients Q: is this a bug or a feature?
Robert J. Hansen
rjhansen at inav.net
Fri Jun 28 00:43:02 CEST 2002
In my C++ wrappers for GPGME, I've got a helper function that does the
following:
// _recips is a protected class variable: a linked list of strings
// representing 8-byte key IDs (16 hex glyphs). You can call a
// string method, c_str(), to turn a string into a C-style string.
GpgmeRecipients makeRecipients()
{
GpgmeRecipients recips;
gpgme_recipients_new(&recips);
list<string>::const_iter iter = _recips.begin();
if (_recips.empty())
throw GPGMEerr("No Recipients");
while (iter != _recips.end())
{
errswitch(gpgme_recipients_add_name
(recips, iter->c_str()));
iter++;
}
return recips;
}
... Pretty simple, I think. There's not a lot of room for it to go
haywire, but it does. It constructs valid GpgmeRecipients for all valid
inputs--or, at least, all valid inputs I've tested--and throws exceptions
appropriately on invalid inputs.
However.
When I attempt to use this GpgmeRecipients for an encryption or
encrypt-and-sign operation, it works great provided all recipients are
trusted (signed by an ultimately-trusted key or a trusted introducer). If
any recipients aren't trusted, GPGME returns a "no recipients" code when I
try to encrypt or encrypt/sign.
A call to gpgme_recipients_count() immediately before the encryption
operation shows that we have a populated GpgmeRecipients.
Now, I've looked in the manual, and so far I haven't been able to find any
passage which clearly states whether this is a bug or a feature. Can
someone please refer me to what the expected behavior is, and how I can
force encryption to an untrusted key?
Thanks. :)
More information about the Gnupg-devel
mailing list