Exemplo n.º 1
0
Arquivo: verify.c Projeto: gpg/gpgme
static gpgme_error_t
verify_status_handler (void *priv, gpgme_status_code_t code, char *args)
{
  gpgme_error_t err;

  err = _gpgme_progress_status_handler (priv, code, args);
  if (!err)
    err = _gpgme_verify_status_handler (priv, code, args);
  return err;
}
Exemplo n.º 2
0
static gpgme_error_t
genkey_status_handler(void *priv, gpgme_status_code_t code, char *args)
{
    gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
    gpgme_error_t err;
    void *hook;
    op_data_t opd;

    /* Pipe the status code through the progress status handler.  */
    err = _gpgme_progress_status_handler(ctx, code, args);
    if(err)
        return err;

    err = _gpgme_op_data_lookup(ctx, OPDATA_GENKEY, &hook, -1, NULL);
    opd = hook;
    if(err)
        return err;

    switch(code)
    {
        case GPGME_STATUS_KEY_CREATED:
            if(args && *args)
            {
                if(*args == 'B' || *args == 'P')
                    opd->result.primary = 1;
                if(*args == 'B' || *args == 'S')
                    opd->result.sub = 1;
                if(args[1] == ' ')
                {
                    if(opd->result.fpr)
                        free(opd->result.fpr);
                    opd->result.fpr = strdup(&args[2]);
                    if(!opd->result.fpr)
                        return gpg_error_from_errno(errno);
                }
            }
            break;

        case GPGME_STATUS_EOF:
            /* FIXME: Should return some more useful error value.  */
            if(!opd->result.primary && !opd->result.sub)
                return gpg_error(GPG_ERR_GENERAL);
            break;

        default:
            break;
    }
    return 0;
}