Oh pazzo mio! I forgot to *use* the nice dn string actually.

This commit is contained in:
Karl-Heinz Zimmer 2002-06-26 00:05:30 +00:00
parent 4783cc23da
commit 0a4a00821d

View File

@ -2389,11 +2389,15 @@ importCertificate( const char* fingerprint )
/* /*
Find all certificate for a given addressee and return them in a Find all certificate for a given addressee and return them in a
'\1' separated list. '\1' separated list.
NOTE: The certificate parameter must point to an allready allocated NOTE: The certificate parameter must point to a not-yet allocated
block of memory which is large enough to hold the complete list. char*. The function will allocate the memory needed and
return the size in newSize.
If secretOnly is true, only secret keys are returned. If secretOnly is true, only secret keys are returned.
*/ */
bool findCertificates( const char* addressee, char** certificates, bool secretOnly ) bool findCertificates( const char* addressee,
char** certificates,
/*int* newSize,*/
bool secretOnly )
{ {
GpgmeCtx ctx; GpgmeCtx ctx;
GpgmeError err; GpgmeError err;
@ -2403,12 +2407,41 @@ bool findCertificates( const char* addressee, char** certificates, bool secretOn
char* dn; char* dn;
struct DnPair* a; struct DnPair* a;
int nFound = 0; int nFound = 0;
/*
if( ! newSize ){
fprintf( stderr, "findCertificates called without valid newSize pointer\n" );
return false;
}
*/
strcpy( *certificates, "" ); strcpy( *certificates, "" );
gpgme_new (&ctx); gpgme_new (&ctx);
gpgme_set_protocol (ctx, GPGMEPLUG_PROTOCOL); gpgme_set_protocol (ctx, GPGMEPLUG_PROTOCOL);
/*
(*newSize) = 0;
err = gpgme_op_keylist_start(ctx, addressee, secretOnly ? 1 : 0);
while( GPGME_No_Error == err ) {
err = gpgme_op_keylist_next(ctx, &rKey);
if( GPGME_No_Error == err ) {
s = gpgme_key_get_string_attr (rKey, GPGME_ATTR_USERID, NULL, 0);
if( s ) {
s2 = gpgme_key_get_string_attr (rKey, GPGME_ATTR_FPR, NULL, 0);
if( s2 ) {
if( nFound )
++(*newSize);
(*newSize) += strlen( s );
a = parse_dn( dn );
dn = reorder_dn( a );
(*newSize) += strlen( dn );
safe_free( (void **)&dn );
++nFound;
}
}
}
}
*/
gpgme_op_keylist_end( ctx );
nFound = 0;
err = gpgme_op_keylist_start(ctx, addressee, secretOnly ? 1 : 0); err = gpgme_op_keylist_start(ctx, addressee, secretOnly ? 1 : 0);
while( GPGME_No_Error == err ) { while( GPGME_No_Error == err ) {
err = gpgme_op_keylist_next(ctx, &rKey); err = gpgme_op_keylist_next(ctx, &rKey);
@ -2424,7 +2457,7 @@ bool findCertificates( const char* addressee, char** certificates, bool secretOn
a = parse_dn( dn ); a = parse_dn( dn );
dn = reorder_dn( a ); dn = reorder_dn( a );
/*fprintf( stderr, "\nDN after reordering: \"%s\"\n", dn );*/ /*fprintf( stderr, "\nDN after reordering: \"%s\"\n", dn );*/
strcat( *certificates, s ); strcat( *certificates, dn );
strcat( *certificates, " (" ); strcat( *certificates, " (" );
strcat( *certificates, s2 ); strcat( *certificates, s2 );
strcat( *certificates, ")" ); strcat( *certificates, ")" );