/[winpt]/trunk/MyGPGME/editcard.c
ViewVC logotype

Diff of /trunk/MyGPGME/editcard.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 5 by twoaday, Mon Mar 7 13:21:36 2005 UTC revision 7 by twoaday, Mon Apr 4 07:01:43 2005 UTC
# Line 39  card_status_handler (gpgme_ctx_t ctx, gp Line 39  card_status_handler (gpgme_ctx_t ctx, gp
39      if (!ctx || ctx->out_of_core)      if (!ctx || ctx->out_of_core)
40          return;          return;
41            
42      switch( code ) {      switch (code) {
43    
44        case STATUS_SC_OP_SUCCESS:
45            ctx->problem = 0;
46            break;
47    
48        case STATUS_SC_OP_FAILURE:
49            ctx->problem = -1;
50            break;
51    
52      case STATUS_CARDCTRL:      case STATUS_CARDCTRL:
53          break;          break;
54    
# Line 84  changepin_command_handler (void * opaque Line 93  changepin_command_handler (void * opaque
93      if( !c || ctx->out_of_core )      if( !c || ctx->out_of_core )
94          return NULL;          return NULL;
95    
96        DEBUG3 ("type=%d code=%d key=%s\n", c->type, code, key);
97    
98      if (ON_EVENT (STATUS_GET_LINE, "cardctrl.insert_card_okay"))      if (ON_EVENT (STATUS_GET_LINE, "cardctrl.insert_card_okay"))
99      {      {
100          if (c->card_cb)          if (c->card_cb)
101              return c->card_cb (1, c->cb_value);              return c->card_cb (1, c->cb_value);
102      }      }
103        if (ON_EVENT (STATUS_GET_LINE, "cardedit.prompt")) {
104    
105        }
106      if (ON_EVENT (STATUS_GET_LINE, "cardutil.change_pin.menu"))      if (ON_EVENT (STATUS_GET_LINE, "cardutil.change_pin.menu"))
107      {      {
108          if (c->cnt == 0) {          if (c->cnt == 0) {
# Line 266  editcard_command_handler (void * opaque, Line 280  editcard_command_handler (void * opaque,
280    
281    
282  static gpgme_error_t  static gpgme_error_t
283  changepin_start( gpgme_ctx_t ctx )  changepin_start (gpgme_ctx_t ctx)
284  {  {
285      gpgme_error_t rc;      gpgme_error_t rc;
286    
287      ctx->pending=1;      ctx->pending = 1;
288    
289      _gpgme_gpg_release( &ctx->gpg );      _gpgme_gpg_release (&ctx->gpg);
290      rc = _gpgme_gpg_new( &ctx->gpg );      rc = _gpgme_gpg_new (&ctx->gpg);
291      if( rc )      if (rc)
292          return rc;          return rc;
293    
294      _gpgme_gpg_set_status_handler( ctx->gpg, card_status_handler, ctx );      _gpgme_gpg_set_status_handler (ctx->gpg, card_status_handler, ctx);
295      _gpgme_gpg_set_command_handler( ctx->gpg, changepin_command_handler, ctx );      _gpgme_gpg_set_command_handler (ctx->gpg, changepin_command_handler, ctx);
296    
297      _gpgme_gpg_add_arg( ctx->gpg, "--change-pin" );      _gpgme_gpg_add_arg (ctx->gpg, "--change-pin");
298    
299      rc = _gpgme_gpg_spawn( ctx->gpg, ctx );      rc = _gpgme_gpg_spawn (ctx->gpg, ctx);
300      if( rc ) {      if (rc) {
301          ctx->pending =0;          ctx->pending = 0;
302          _gpgme_gpg_release( &ctx->gpg );          _gpgme_gpg_release (&ctx->gpg);
303      }      }
304    
305      return rc;      return rc;
# Line 297  gpgme_op_changepin( gpgme_ctx_t ctx ) Line 311  gpgme_op_changepin( gpgme_ctx_t ctx )
311  {  {
312      gpgme_error_t rc;      gpgme_error_t rc;
313    
314      rc = changepin_start( ctx );      rc = changepin_start (ctx);
315      if( !rc ) {      if (!rc) {
316          gpgme_wait( ctx, 1 );          gpgme_wait (ctx, 1);
317          ctx->pending = 0;          ctx->pending = 0;
318          if( gpgme_get_process_rc( ctx ) )          if (gpgme_get_process_rc (ctx))
319              rc = mk_error( Interal_GPG_Problem );              rc = mk_error (Internal_GPG_Problem);
320            else if (ctx->problem)
321                rc = mk_error (SC_Failure);
322      }      }
323      return rc;      return rc;
324  } /* gpgme_op_changepin */  } /* gpgme_op_changepin */
# Line 363  gpgme_op_editcard (gpgme_ctx_t ctx) Line 379  gpgme_op_editcard (gpgme_ctx_t ctx)
379          else if (ctx->keygen_fpr)          else if (ctx->keygen_fpr)
380              rc = mk_error (No_Error);              rc = mk_error (No_Error);
381          else if (gpgme_get_process_rc (ctx))          else if (gpgme_get_process_rc (ctx))
382              rc = mk_error (Interal_GPG_Problem);              rc = mk_error (Internal_GPG_Problem);
383            else if (ctx->problem)
384                rc = mk_error (SC_Failure);
385      }      }
386      return rc;      return rc;
387  } /* gpgme_op_editcard */  } /* gpgme_op_editcard */
# Line 718  gpgme_op_statuscard( gpgme_ctx_t ctx, gp Line 736  gpgme_op_statuscard( gpgme_ctx_t ctx, gp
736          gpgme_wait( ctx, 1 );          gpgme_wait( ctx, 1 );
737          ctx->pending = 0;          ctx->pending = 0;
738          if( gpgme_get_process_rc( ctx ) )          if( gpgme_get_process_rc( ctx ) )
739              rc = mk_error( Interal_GPG_Problem );              rc = mk_error( Internal_GPG_Problem );
740      }      }
741    
742      gpgme_data_rewind( tmp );      gpgme_data_rewind( tmp );
# Line 775  gpgme_card_get_string_attr( gpgme_card_t Line 793  gpgme_card_get_string_attr( gpgme_card_t
793  {  {
794      const char * s;      const char * s;
795    
796      if( !card )      if (!card)
797          return NULL;          return NULL;
798    
799      switch( what ) {      switch( what ) {
# Line 783  gpgme_card_get_string_attr( gpgme_card_t Line 801  gpgme_card_get_string_attr( gpgme_card_t
801          s=card->aid;          s=card->aid;
802          break;          break;
803    
804      case GPGME_ATTR_CARD_VER:        case GPGME_ATTR_CARD_VER:
805          s=card->version;          if (idx == 0)
806                s=card->version;
807            else {
808                if (card->ver[0] == 0) {
809                    int pos = card->version[0] == '0' ? 1 : 0;
810                    int n = 0;
811                    memcpy (card->ver, card->version+pos, 2-pos);
812                    card->ver[2-pos] = '.';
813                    if (card->version[2] == '0')
814                        n = 1;
815                    memcpy (card->ver+(2-pos+1), card->version+2+n, 2-n);
816                }
817                s = card->ver;
818            }
819          break;          break;
820    
821      case GPGME_ATTR_CARD_VENDOR:      case GPGME_ATTR_CARD_VENDOR:
# Line 812  gpgme_card_get_string_attr( gpgme_card_t Line 843  gpgme_card_get_string_attr( gpgme_card_t
843          break;          break;
844    
845      case GPGME_ATTR_CARD_FPR:        case GPGME_ATTR_CARD_FPR:  
846          if( idx >= 0 && idx <= 3 )          if (idx >= 0 && idx <= 3)
847              s=card->fpr[idx];                    s=card->fpr[idx];      
848          else                                else                      
849              s=NULL;              s=NULL;
850          break;          break;
851    
852      case GPGME_ATTR_CARD_SERIAL:      case GPGME_ATTR_CARD_SERIAL:
853          s=card->serial;          s=card->serial;
854            if (idx == 1) {
855                while (s && *s && *s == '0')
856                    s++;
857            }
858          break;          break;
859    
860      default:      default:
# Line 835  gpgme_card_get_ulong_attr( gpgme_card_t Line 870  gpgme_card_get_ulong_attr( gpgme_card_t
870                             void ** reserved, int idx )                             void ** reserved, int idx )
871  {  {
872      unsigned long t;      unsigned long t;
873        const char *s;
874    
875      if( !card )      if( !card )
876          return 0;          return 0;
877    
878      switch( what ) {      switch (what) {
879      case GPGME_ATTR_CARD_SIGCOUNT:      case GPGME_ATTR_CARD_SIGCOUNT:
880          t = card->sig_count;          t = card->sig_count;
881          break;          break;
# Line 848  gpgme_card_get_ulong_attr( gpgme_card_t Line 884  gpgme_card_get_ulong_attr( gpgme_card_t
884          t = card->sex;          t = card->sex;
885          break;          break;
886    
887      default:                            case GPGME_ATTR_CARD_SERIAL:
888            s = card->serial;
889            while (s && *s && *s == '0')
890                s++;
891            t = atol (s);
892            break;
893    
894        default:
895          t = 0;          t = 0;
896          break;          break;
897      }      }

Legend:
Removed from v.5  
changed lines
  Added in v.7

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26