diff options
author | Werner Koch <[email protected]> | 1997-12-09 12:46:23 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 1997-12-09 12:46:23 +0000 |
commit | 935965049d424d3bb69efb672f9f44c36e7cbcb6 (patch) | |
tree | 37113923fa101828e1b43a8a71b9a85e17cd82a8 /g10/parse-packet.c | |
parent | detached signatures are working (diff) | |
download | gnupg-935965049d424d3bb69efb672f9f44c36e7cbcb6.tar.gz gnupg-935965049d424d3bb69efb672f9f44c36e7cbcb6.zip |
fingerprints and self signatures added
Diffstat (limited to 'g10/parse-packet.c')
-rw-r--r-- | g10/parse-packet.c | 108 |
1 files changed, 27 insertions, 81 deletions
diff --git a/g10/parse-packet.c b/g10/parse-packet.c index 6aef1b4fe..5badb0ec4 100644 --- a/g10/parse-packet.c +++ b/g10/parse-packet.c @@ -239,8 +239,8 @@ parse_publickey( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *packet ) k->keyid[0], k->keyid[1]); if( k->pubkey_algo == PUBKEY_ALGO_ELGAMAL ) { n = pktlen; - k->d.elg.a = mpi_decode(inp, &n ); pktlen -=n; - k->d.elg.b = mpi_decode(inp, &n ); pktlen -=n; + k->d.elg.a = mpi_read(inp, &n, 0); pktlen -=n; + k->d.elg.b = mpi_read(inp, &n, 0 ); pktlen -=n; if( list_mode ) { printf("\telg a: "); mpi_print(stdout, k->d.elg.a, mpi_print_mode ); @@ -251,7 +251,7 @@ parse_publickey( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *packet ) } else if( k->pubkey_algo == PUBKEY_ALGO_RSA ) { n = pktlen; - k->d.rsa.rsa_integer = mpi_decode(inp, &n ); pktlen -=n; + k->d.rsa.rsa_integer = mpi_read(inp, &n, 0 ); pktlen -=n; if( list_mode ) { printf("\trsa integer: "); mpi_print(stdout, k->d.rsa.rsa_integer, mpi_print_mode ); @@ -304,8 +304,8 @@ parse_signature( IOBUF inp, int pkttype, unsigned long pktlen, sig->d.elg.digest_start[0] = iobuf_get_noeof(inp); pktlen--; sig->d.elg.digest_start[1] = iobuf_get_noeof(inp); pktlen--; n = pktlen; - sig->d.elg.a = mpi_decode(inp, &n ); pktlen -=n; - sig->d.elg.b = mpi_decode(inp, &n ); pktlen -=n; + sig->d.elg.a = mpi_read(inp, &n, 0 ); pktlen -=n; + sig->d.elg.b = mpi_read(inp, &n, 0 ); pktlen -=n; if( list_mode ) { printf("\tdigest algo %d, begin of digest %02x %02x\n", sig->d.elg.digest_algo, @@ -313,7 +313,7 @@ parse_signature( IOBUF inp, int pkttype, unsigned long pktlen, printf("\telg a: "); mpi_print(stdout, sig->d.elg.a, mpi_print_mode ); printf("\n\telg b: "); - mpi_print(stdout, sig->d.elg.a, mpi_print_mode ); + mpi_print(stdout, sig->d.elg.b, mpi_print_mode ); putchar('\n'); } } @@ -326,7 +326,7 @@ parse_signature( IOBUF inp, int pkttype, unsigned long pktlen, sig->d.rsa.digest_start[0] = iobuf_get_noeof(inp); pktlen--; sig->d.rsa.digest_start[1] = iobuf_get_noeof(inp); pktlen--; n = pktlen; - sig->d.rsa.rsa_integer = mpi_decode(inp, &n ); pktlen -=n; + sig->d.rsa.rsa_integer = mpi_read(inp, &n, 0 ); pktlen -=n; if( list_mode ) { printf("\tdigest algo %d, begin of digest %02x %02x\n", sig->d.rsa.digest_algo, @@ -439,9 +439,9 @@ parse_certificate( IOBUF inp, int pkttype, unsigned long pktlen, if( algorithm == PUBKEY_ALGO_ELGAMAL ) { MPI elg_p, elg_g, elg_y; - n = pktlen; elg_p = mpi_decode(inp, &n ); pktlen -=n; - n = pktlen; elg_g = mpi_decode(inp, &n ); pktlen -=n; - n = pktlen; elg_y = mpi_decode(inp, &n ); pktlen -=n; + n = pktlen; elg_p = mpi_read(inp, &n, 0 ); pktlen -=n; + n = pktlen; elg_g = mpi_read(inp, &n, 0 ); pktlen -=n; + n = pktlen; elg_y = mpi_read(inp, &n, 0 ); pktlen -=n; if( list_mode ) { printf( "\telg p: "); mpi_print(stdout, elg_p, mpi_print_mode ); @@ -483,32 +483,24 @@ parse_certificate( IOBUF inp, int pkttype, unsigned long pktlen, else cert->d.elg.is_protected = 0; - n = pktlen; mpibuf = mpi_read(inp, &n ); pktlen -=n; assert(n>=2); - cert->d.elg.x = (MPI)mpibuf; + n = pktlen; cert->d.elg.x = mpi_read(inp, &n, 1 ); pktlen -=n; cert->d.elg.csum = read_16(inp); pktlen -= 2; - cert->d.elg.calc_csum = 0; if( list_mode ) { printf("\t[secret value x is not shown]\n" "\tchecksum: %04hx\n", cert->d.elg.csum); } - if( !cert->d.elg.is_protected ) { /* convert buffer to MPIs */ - mpibuf = (byte*)cert->d.elg.x; - cert->d.elg.calc_csum += checksum( mpibuf ); - cert->d.elg.x = mpi_decode_buffer( mpibuf ); - m_free( mpibuf ); - /*log_mpidump("elg p=", cert->d.elg.p ); - log_mpidump("elg g=", cert->d.elg.g ); - log_mpidump("elg y=", cert->d.elg.y ); - log_mpidump("elg x=", cert->d.elg.x ); */ - } + /*log_mpidump("elg p=", cert->d.elg.p ); + log_mpidump("elg g=", cert->d.elg.g ); + log_mpidump("elg y=", cert->d.elg.y ); + log_mpidump("elg x=", cert->d.elg.x ); */ } } else if( algorithm == PUBKEY_ALGO_RSA ) { MPI rsa_pub_mod, rsa_pub_exp; - n = pktlen; rsa_pub_mod = mpi_decode(inp, &n ); pktlen -=n; - n = pktlen; rsa_pub_exp = mpi_decode(inp, &n ); pktlen -=n; + n = pktlen; rsa_pub_mod = mpi_read(inp, &n, 0); pktlen -=n; + n = pktlen; rsa_pub_exp = mpi_read(inp, &n, 0 ); pktlen -=n; if( list_mode ) { printf( "\tpublic modulus n: "); mpi_print(stdout, rsa_pub_mod, mpi_print_mode ); @@ -546,43 +538,22 @@ parse_certificate( IOBUF inp, int pkttype, unsigned long pktlen, else cert->d.rsa.is_protected = 0; - n = pktlen; mpibuf = mpi_read(inp, &n ); pktlen -=n; assert(n>=2); - cert->d.rsa.rsa_d = (MPI)mpibuf; - - n = pktlen; mpibuf = mpi_read(inp, &n ); pktlen -=n; assert(n>=2); - cert->d.rsa.rsa_p = (MPI)mpibuf; - - n = pktlen; mpibuf = mpi_read(inp, &n ); pktlen -=n; assert(n>=2); - cert->d.rsa.rsa_q = (MPI)mpibuf; - - n = pktlen; mpibuf = mpi_read(inp, &n ); pktlen -=n; assert(n>=2); - cert->d.rsa.rsa_u = (MPI)mpibuf; + n = pktlen; cert->d.rsa.rsa_d = mpi_read(inp, &n, 1 ); pktlen -=n; + n = pktlen; cert->d.rsa.rsa_p = mpi_read(inp, &n, 1 ); pktlen -=n; + n = pktlen; cert->d.rsa.rsa_q = mpi_read(inp, &n, 1 ); pktlen -=n; + n = pktlen; cert->d.rsa.rsa_u = mpi_read(inp, &n, 1 ); pktlen -=n; cert->d.rsa.csum = read_16(inp); pktlen -= 2; - cert->d.rsa.calc_csum = 0; if( list_mode ) { printf("\t[secret values d,p,q,u are not shown]\n" "\tchecksum: %04hx\n", cert->d.rsa.csum); } - if( !cert->d.rsa.is_protected ) { /* convert buffer to MPIs */ - #define X(a) do { \ - mpibuf = (byte*)cert->d.rsa.rsa_##a; \ - cert->d.rsa.calc_csum += checksum( mpibuf ); \ - cert->d.rsa.rsa_##a = mpi_decode_buffer( mpibuf ); \ - m_free( mpibuf ); \ - } while(0) - X(d); - X(p); - X(q); - X(u); - #undef X - /* log_mpidump("rsa n=", cert->d.rsa.rsa_n ); - log_mpidump("rsa e=", cert->d.rsa.rsa_e ); - log_mpidump("rsa d=", cert->d.rsa.rsa_d ); - log_mpidump("rsa p=", cert->d.rsa.rsa_p ); - log_mpidump("rsa q=", cert->d.rsa.rsa_q ); - log_mpidump("rsa u=", cert->d.rsa.rsa_u ); */ - } + /* log_mpidump("rsa n=", cert->d.rsa.rsa_n ); + log_mpidump("rsa e=", cert->d.rsa.rsa_e ); + log_mpidump("rsa d=", cert->d.rsa.rsa_d ); + log_mpidump("rsa p=", cert->d.rsa.rsa_p ); + log_mpidump("rsa q=", cert->d.rsa.rsa_q ); + log_mpidump("rsa u=", cert->d.rsa.rsa_u ); */ } } else if( list_mode ) @@ -671,34 +642,9 @@ parse_trust( IOBUF inp, int pkttype, unsigned long pktlen ) 1 = "we do not trust this key's ownership" 2 = "we have marginal confidence of this key's ownership" 3 = "we completely trust this key's ownership." - /* This one (3) requires either: - * - 1 ultimately trusted signature (SIGTRUST=7) - * - COMPLETES_NEEDED completely trusted signatures (SIGTRUST=6) - * - MARGINALS_NEEDED marginally trusted signatures (SIGTRUST=5) - */ if( c & 0x80 ) "warnonly" else if( prev_packet_is_a_signature ) { - Bits 0-2 - SIGTRUST bits - Trust bits for this signature. Value is - copied directly from OWNERTRUST bits of signer: - 000 - undefined, or uninitialized trust. - 001 - unknown - 010 - We do not trust this signature. - 011 - reserved - 100 - reserved - 101 - We reasonably trust this signature. - 110 - We completely trust this signature. - 111 - ultimately trusted signature (from the owner of the ring) - Bit 6 - CHECKED bit - This means that the key checking pass (pgp -kc, - also invoked automatically whenever keys are added to the - keyring) has tested this signature and found it good. If - this bit is not set, the maintenance pass considers this - signature untrustworthy. - Bit 7 - CONTIG bit - Means this signature leads up a contiguous trusted - certification path all the way back to the ultimately- - trusted keyring owner, where the buck stops. This bit is derived - from other trust packets. It is currently not used for anything - in PGP. } #endif } |