/[pkg-mixmaster]/trunk/Mix/Src/pgpdata.c
ViewVC logotype

Diff of /trunk/Mix/Src/pgpdata.c

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

revision 120 by weaselp, Sat Aug 3 17:08:02 2002 UTC revision 134 by weaselp, Thu Aug 15 16:52:12 2002 UTC
# Line 6  Line 6 
6     details.     details.
7    
8     OpenPGP data     OpenPGP data
9     $Id: pgpdata.c,v 1.8 2002/08/03 17:08:02 weaselp Exp $ */     $Id: pgpdata.c,v 1.10 2002/08/15 16:52:12 weaselp Exp $ */
10    
11    
12  #include "mix3.h"  #include "mix3.h"
# Line 73  int mpi_get(BUFFER *b, BUFFER *mpi) Line 73  int mpi_get(BUFFER *b, BUFFER *mpi)
73    
74  int mpi_bitcount(BUFFER *mpi)  int mpi_bitcount(BUFFER *mpi)
75  {  {
76    int i;    int i, l;
77    int l = mpi->length * 8;    while (!mpi->data[0] && mpi->length) // remove leading zeros from mpi
78        memmove(mpi->data, mpi->data+1, --mpi->length);
79      l = mpi->length * 8;
80    for (i = 7; i >= 0; i--)    for (i = 7; i >= 0; i--)
81      if (((mpi->data[0] >> i) & 1) == 1) {      if (((mpi->data[0] >> i) & 1) == 1) {
82        l -= 7 - i;        l -= 7 - i;
# Line 260  static void mpi_bnputenc(BUFFER *o, BIGN Line 262  static void mpi_bnputenc(BUFFER *o, BIGN
262                           BUFFER *iv)                           BUFFER *iv)
263  {  {
264    BUFFER *b;    BUFFER *b;
265      int ivlen = iv->length;
266    
267    b = buf_new();    b = buf_new();
268    buf_prepare(b, BN_num_bytes(i));    buf_prepare(b, BN_num_bytes(i));
269    b->length = BN_bn2bin(i, b->data);    b->length = BN_bn2bin(i, b->data);
270    buf_appendi(o, mpi_bitcount(b));    buf_appendi(o, mpi_bitcount(b));
271    if (key && key->length)    if (key && key->length) {
272      skcrypt(b, ska, key, iv, ENCRYPT);      skcrypt(b, ska, key, iv, ENCRYPT);
273        buf_clear(iv);
274        buf_append(iv, b->data+b->length-ivlen, ivlen);
275      }
276    buf_cat(o, b);    buf_cat(o, b);
277    buf_free(b);    buf_free(b);
278  }  }
# Line 458  int pgp_getkey(int mode, int algo, int * Line 464  int pgp_getkey(int mode, int algo, int *
464                len = buf_getl(p1);                len = buf_getl(p1);
465              type = buf_getc(p1);              type = buf_getc(p1);
466              if (len)              if (len)
467                buf_get(p1, i, len);                buf_get(p1, i, len-1); /* len-1 - exclude type */
468              else              else
469                buf_clear(i);                buf_clear(i);
470              if (type == PGP_SUB_PSYMMETRIC)              if (type == PGP_SUB_PSYMMETRIC)

Legend:
Removed from v.120  
changed lines
  Added in v.134

  ViewVC Help
Powered by ViewVC 1.1.5