~ubuntu-branches/ubuntu/precise/gnupg2/precise-proposed

« back to all changes in this revision

Viewing changes to agent/call-scd.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Urlichs
  • Date: 2006-01-24 04:31:42 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060124043142-pbg192or6qxv3yk2
Tags: 1.9.20-1
* New Upstream version. Closes:#306890,#344530
  * Closes:#320490: gpg-protect-tool fails to decrypt PKCS-12 files 
* Depend on libopensc2-dev, not -1-. Closes:#348106

Show diffs side-by-side

added added

removed removed

Lines of Context:
633
633
  size_t pinlen;
634
634
  int rc;
635
635
 
636
 
  if (!(!strncmp (line, "NEEDPIN", 7) && (line[7] == ' ' || !line[7])))
 
636
  if (!strncmp (line, "NEEDPIN", 7) && (line[7] == ' ' || !line[7]))
 
637
    {
 
638
      line += 7;
 
639
      while (*line == ' ')
 
640
        line++;
 
641
      
 
642
      pinlen = 90;
 
643
      pin = gcry_malloc_secure (pinlen);
 
644
      if (!pin)
 
645
        return ASSUAN_Out_Of_Core;
 
646
 
 
647
      rc = parm->getpin_cb (parm->getpin_cb_arg, line, pin, pinlen);
 
648
      if (rc)
 
649
        rc = ASSUAN_Canceled;
 
650
      if (!rc)
 
651
        rc = assuan_send_data (parm->ctx, pin, pinlen);
 
652
      xfree (pin);
 
653
    }
 
654
  else if (!strncmp (line, "KEYPADINFO", 10) && (line[10] == ' ' || !line[10]))
 
655
    {
 
656
      size_t code;
 
657
      char *endp;
 
658
 
 
659
      code = strtoul (line+10, &endp, 10);
 
660
      line = endp;
 
661
      while (*line == ' ')
 
662
        line++;
 
663
      
 
664
      rc = parm->getpin_cb (parm->getpin_cb_arg, line, NULL, code);
 
665
      if (rc)
 
666
        rc = ASSUAN_Canceled;
 
667
    }
 
668
  else
637
669
    {
638
670
      log_error ("unsupported inquiry `%s'\n", line);
639
 
      return ASSUAN_Inquire_Unknown;
 
671
      rc = ASSUAN_Inquire_Unknown;
640
672
    }
641
 
  line += 7;
642
 
  while (*line == ' ')
643
 
    line++;
644
 
 
645
 
  pinlen = 90;
646
 
  pin = gcry_malloc_secure (pinlen);
647
 
  if (!pin)
648
 
    return ASSUAN_Out_Of_Core;
649
 
 
650
 
  rc = parm->getpin_cb (parm->getpin_cb_arg, line, pin, pinlen);
651
 
  if (rc)
652
 
    rc = ASSUAN_Canceled;
653
 
  if (!rc)
654
 
    rc = assuan_send_data (parm->ctx, pin, pinlen);
655
 
  xfree (pin);
656
673
 
657
674
  return rc;
658
675
}