doc/
2002-01-31 Marcus Brinkmann <marcus@g10code.de> * gpgme.texi (Generating Keys): Document error at creation failure. gpgme/ 2002-01-31 Marcus Brinkmann <marcus@g10code.de> * rungpg.h: Add STATUS_KEY_CREATED. * progress.c: New file. * Makefile.am (libgpgme_la_SOURCES): Add progress.c. * genkey.c (genkey_status_handler): Use _gpgme_progress_status_handler. Add check for status. (struct genkey_result_s): New structure. (_gpgme_release_genkey_result): New function. (gpgme_op_genkey): Check for error. * gpgme.c (_gpgme_release_result): Call _gpgme_release_genkey_result. * ops.h (_gpgme_release_genkey_result): Add prototype. * types.h (GenKeyResult): New type. * context.h (gpgme_context_s): Add GenKeyResult to member result.
This commit is contained in:
parent
ca5e3a09e3
commit
129da707d1
4
TODO
4
TODO
@ -35,7 +35,9 @@
|
||||
(it's an internal error, as select_protocol checks already).
|
||||
|
||||
* Operations
|
||||
** Import, export, genkey, delete status handler need much more work.
|
||||
** Export status handler need much more work.
|
||||
** Import should return a useful error when one happened.
|
||||
** Genkey should return something more useful than General_Error.
|
||||
|
||||
* Error Values
|
||||
** Map ASSUAN error values.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2002-01-31 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* gpgme.texi (Generating Keys): Document error at creation
|
||||
failure.
|
||||
|
||||
2002-01-30 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* gpgme.texi (Deleting Keys): Document new error values.
|
||||
|
@ -1472,8 +1472,9 @@ allowed.
|
||||
|
||||
The function returns @code{GPGME_No_Error} if the operation could be
|
||||
started successfully, @code{GPGME_Invalid_Value} if @var{parms} is not
|
||||
a valid XML string, and @code{GPGME_Not_Supported} if @var{pubkey} or
|
||||
@var{seckey} is not @code{NULL}.
|
||||
a valid XML string, @code{GPGME_Not_Supported} if @var{pubkey} or
|
||||
@var{seckey} is not @code{NULL}, and @code{GPGME_General_Error} if no
|
||||
key was created by the backend.
|
||||
@end deftypefun
|
||||
|
||||
@deftypefun GpgmeError gpgme_op_genkey_start (@w{GpgmeCtx @var{ctx}}, @w{const char *@var{parms}}, @w{GpgmeData @var{pubkey}}, @w{GpgmeData @var{seckey}})
|
||||
|
@ -1,3 +1,21 @@
|
||||
2002-01-31 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* rungpg.h: Add STATUS_KEY_CREATED.
|
||||
|
||||
* progress.c: New file.
|
||||
* Makefile.am (libgpgme_la_SOURCES): Add progress.c.
|
||||
|
||||
* genkey.c (genkey_status_handler): Use
|
||||
_gpgme_progress_status_handler. Add check for status.
|
||||
(struct genkey_result_s): New structure.
|
||||
(_gpgme_release_genkey_result): New function.
|
||||
(gpgme_op_genkey): Check for error.
|
||||
* gpgme.c (_gpgme_release_result): Call
|
||||
_gpgme_release_genkey_result.
|
||||
* ops.h (_gpgme_release_genkey_result): Add prototype.
|
||||
* types.h (GenKeyResult): New type.
|
||||
* context.h (gpgme_context_s): Add GenKeyResult to member result.
|
||||
|
||||
2002-01-30 Marcus Brinkmann <marcus@g10code.de>
|
||||
|
||||
* gpgme.c (_gpgme_release_result): Call
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
# Copyright (C) 2001 g10 Code GmbH
|
||||
# Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
#
|
||||
# This file is part of GPGME.
|
||||
#
|
||||
@ -46,6 +46,7 @@ libgpgme_la_SOURCES = \
|
||||
verify.c \
|
||||
sign.c \
|
||||
passphrase.c \
|
||||
progress.c \
|
||||
key.c key.h \
|
||||
keylist.c \
|
||||
trustlist.c \
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* context.h
|
||||
* Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
* Copyright (C) 2001 g10 Code GmbH
|
||||
* Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
@ -70,6 +70,7 @@ struct gpgme_context_s {
|
||||
PassphraseResult passphrase;
|
||||
ImportResult import;
|
||||
DeleteResult delete;
|
||||
GenKeyResult genkey;
|
||||
} result;
|
||||
|
||||
GpgmeData notation; /* last signature notation */
|
||||
@ -136,9 +137,4 @@ struct gpgme_recipients_s {
|
||||
gpgme_wait ((c), 1); \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
#endif /* CONTEXT_H */
|
||||
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* delete.c - delete a key
|
||||
* Copyright (C) 2001 g10 Code GmbH
|
||||
* Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* genkey.c - key generation
|
||||
* Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
* Copyright (C) 2001 g10 Code GmbH
|
||||
* Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
@ -29,39 +29,55 @@
|
||||
#include "context.h"
|
||||
#include "ops.h"
|
||||
|
||||
static void
|
||||
genkey_status_handler ( GpgmeCtx ctx, GpgStatusCode code, char *args )
|
||||
{
|
||||
if ( code == STATUS_PROGRESS && *args ) {
|
||||
if (ctx->progress_cb) {
|
||||
char *p;
|
||||
int type=0, current=0, total=0;
|
||||
|
||||
if ( (p = strchr (args, ' ')) ) {
|
||||
*p++ = 0;
|
||||
if (*p) {
|
||||
type = *(byte*)p;
|
||||
if ( (p = strchr (p+1, ' ')) ) {
|
||||
*p++ = 0;
|
||||
if (*p) {
|
||||
current = atoi (p);
|
||||
if ( (p = strchr (p+1, ' ')) ) {
|
||||
*p++ = 0;
|
||||
total = atoi (p);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( type != 'X' )
|
||||
ctx->progress_cb ( ctx->progress_cb_value, args, type,
|
||||
current, total );
|
||||
}
|
||||
struct genkey_result_s
|
||||
{
|
||||
int created_primary : 1;
|
||||
int created_sub : 1;
|
||||
};
|
||||
|
||||
|
||||
void
|
||||
_gpgme_release_genkey_result (GenKeyResult result)
|
||||
{
|
||||
if (!result)
|
||||
return;
|
||||
xfree (result);
|
||||
}
|
||||
|
||||
static void
|
||||
genkey_status_handler (GpgmeCtx ctx, GpgStatusCode code, char *args)
|
||||
{
|
||||
_gpgme_progress_status_handler (ctx, code, args);
|
||||
|
||||
if (ctx->out_of_core)
|
||||
return;
|
||||
|
||||
if (!ctx->result.genkey)
|
||||
{
|
||||
ctx->result.genkey = xtrycalloc (1, sizeof *ctx->result.genkey);
|
||||
if (!ctx->result.genkey)
|
||||
{
|
||||
ctx->out_of_core = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG2 ("genkey_status: code=%d args=`%s'\n", code, args );
|
||||
/* FIXME: Need to do more */
|
||||
switch (code)
|
||||
{
|
||||
case STATUS_KEY_CREATED:
|
||||
if (args && *args)
|
||||
{
|
||||
if (*args == 'B' || *args == 'P')
|
||||
ctx->result.genkey->created_primary = 1;
|
||||
if (*args == 'B' || *args == 'S')
|
||||
ctx->result.genkey->created_sub = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -189,6 +205,7 @@ gpgme_op_genkey_start (GpgmeCtx ctx, const char *parms,
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* gpgme_op_genkey:
|
||||
* @c: the context
|
||||
@ -209,11 +226,15 @@ gpgme_op_genkey (GpgmeCtx ctx, const char *parms,
|
||||
{
|
||||
GpgmeError err = gpgme_op_genkey_start (ctx, parms, pubkey, seckey);
|
||||
if (!err)
|
||||
{
|
||||
gpgme_wait (ctx, 1);
|
||||
|
||||
/* FIXME: Should return some more useful error value. */
|
||||
if (!ctx->result.genkey)
|
||||
err = mk_error (General_Error);
|
||||
else if (!ctx->result.genkey->created_primary
|
||||
&& !ctx->result.genkey->created_sub)
|
||||
err = mk_error (General_Error);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
* @r_ctx: Returns the new context
|
||||
*
|
||||
* Create a new context to be used with most of the other GPGME
|
||||
* functions. Use gpgme_release_contect() to release all resources
|
||||
* functions. Use gpgme_release_context() to release all resources
|
||||
*
|
||||
* Return value: An error code
|
||||
**/
|
||||
@ -88,6 +88,7 @@ _gpgme_release_result (GpgmeCtx ctx)
|
||||
_gpgme_release_passphrase_result (ctx->result.passphrase);
|
||||
_gpgme_release_import_result (ctx->result.import);
|
||||
_gpgme_release_delete_result (ctx->result.delete);
|
||||
_gpgme_release_genkey_result (ctx->result.genkey);
|
||||
memset (&ctx->result, 0, sizeof (ctx->result));
|
||||
_gpgme_set_op_info (ctx, NULL);
|
||||
}
|
||||
|
10
gpgme/ops.h
10
gpgme/ops.h
@ -1,6 +1,6 @@
|
||||
/* ops.h - internal operations stuff
|
||||
* Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
* Copyright (C) 2001 g10 Code GmbH
|
||||
* Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
@ -95,15 +95,23 @@ void _gpgme_passphrase_status_handler (GpgmeCtx ctx, GpgStatusCode code,
|
||||
GpgmeError _gpgme_passphrase_start (GpgmeCtx ctx);
|
||||
GpgmeError _gpgme_passphrase_result (GpgmeCtx ctx);
|
||||
|
||||
/*-- progress.c --*/
|
||||
void _gpgme_progress_status_handler (GpgmeCtx ctx, GpgStatusCode code,
|
||||
char *args);
|
||||
|
||||
/*-- import.c --*/
|
||||
void _gpgme_release_import_result (ImportResult res);
|
||||
|
||||
/*-- delete.c --*/
|
||||
void _gpgme_release_delete_result (DeleteResult res);
|
||||
|
||||
/*-- genkey.c --*/
|
||||
void _gpgme_release_genkey_result (GenKeyResult res);
|
||||
|
||||
/*-- version.c --*/
|
||||
const char *_gpgme_compare_versions (const char *my_version,
|
||||
const char *req_version);
|
||||
char *_gpgme_get_program_version (const char *const path);
|
||||
|
||||
|
||||
#endif /* OPS_H */
|
||||
|
@ -48,7 +48,6 @@ typedef enum {
|
||||
STATUS_SHM_GET_BOOL ,
|
||||
STATUS_SHM_GET_HIDDEN ,
|
||||
STATUS_NEED_PASSPHRASE ,
|
||||
STATUS_USERID_HINT ,
|
||||
STATUS_UNEXPECTED ,
|
||||
STATUS_VALIDSIG ,
|
||||
STATUS_SIG_ID ,
|
||||
@ -81,9 +80,11 @@ typedef enum {
|
||||
STATUS_GOT_IT ,
|
||||
STATUS_PROGRESS ,
|
||||
STATUS_SIG_CREATED ,
|
||||
STATUS_KEY_CREATED ,
|
||||
STATUS_SESSION_KEY ,
|
||||
STATUS_NOTATION_NAME ,
|
||||
STATUS_NOTATION_DATA ,
|
||||
STATUS_USERID_HINT ,
|
||||
STATUS_POLICY_URL ,
|
||||
STATUS_BEGIN_STREAM ,
|
||||
STATUS_END_STREAM ,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* types.h - Some type definitions
|
||||
* Copyright (C) 2000 Werner Koch (dd9jn)
|
||||
* Copyright (C) 2001 g10 Code GmbH
|
||||
* Copyright (C) 2001, 2002 g10 Code GmbH
|
||||
*
|
||||
* This file is part of GPGME.
|
||||
*
|
||||
@ -84,5 +84,9 @@ typedef struct import_result_s *ImportResult;
|
||||
struct delete_result_s;
|
||||
typedef struct delete_result_s *DeleteResult;
|
||||
|
||||
/*-- genkey.c --*/
|
||||
struct genkey_result_s;
|
||||
typedef struct genkey_result_s *GenKeyResult;
|
||||
|
||||
|
||||
#endif /* TYPES_H */
|
||||
|
Loading…
Reference in New Issue
Block a user