* armor.c (parse_hash_header, armor_filter): Accept the new SHAs in the

armor Hash: header.

* g10.c (print_hex): Print long hash strings a little neater. (print_mds):
Add the new SHAs to the hash list.
This commit is contained in:
David Shaw 2003-02-04 19:33:09 +00:00
parent cef8bbd91f
commit f523e53d4e
3 changed files with 51 additions and 19 deletions

View File

@ -1,3 +1,11 @@
2003-02-04 David Shaw <dshaw@jabberwocky.com>
* armor.c (parse_hash_header, armor_filter): Accept the new SHAs
in the armor Hash: header.
* g10.c (print_hex): Print long hash strings a little neater.
(print_mds): Add the new SHAs to the hash list.
2003-02-02 David Shaw <dshaw@jabberwocky.com>
* keyedit.c (menu_revuid): Properly handle a nonselfsigned uid on

View File

@ -252,6 +252,12 @@ parse_hash_header( const char *line )
found |= 8;
else if( !strncmp( s, "TIGER", s2-s ) ) /* used by old versions */
found |= 8;
else if( !strncmp( s, "SHA256", s2-s ) )
found |= 16;
else if( !strncmp( s, "SHA384", s2-s ) )
found |= 32;
else if( !strncmp( s, "SHA512", s2-s ) )
found |= 64;
else
return 0;
for(; *s2 && (*s2==' ' || *s2 == '\t'); s2++ )
@ -858,7 +864,7 @@ armor_filter( void *opaque, int control,
rc = -1;
}
else if( afx->faked ) {
unsigned int hashes = afx->hashes;
unsigned int hashes = afx->hashes;
const byte *sesmark;
size_t sesmarklen;
@ -869,7 +875,7 @@ armor_filter( void *opaque, int control,
/* the buffer is at least 15+n*15 bytes long, so it
* is easy to construct the packets */
hashes &= 1|2|4|8;
hashes &= 1|2|4|8|16|32|64;
if( !hashes ) {
hashes |= 4; /* default to MD 5 */
/* This is non-ideal since PGP 5-8 have the same
@ -885,14 +891,20 @@ armor_filter( void *opaque, int control,
memcpy(buf+n, sesmark, sesmarklen ); n+= sesmarklen;
buf[n++] = CTRLPKT_CLEARSIGN_START;
buf[n++] = afx->not_dash_escaped? 0:1; /* sigclass */
if( hashes & 1 )
if( hashes & 1 )
buf[n++] = DIGEST_ALGO_RMD160;
if( hashes & 2 )
if( hashes & 2 )
buf[n++] = DIGEST_ALGO_SHA1;
if( hashes & 4 )
if( hashes & 4 )
buf[n++] = DIGEST_ALGO_MD5;
if( hashes & 8 )
if( hashes & 8 )
buf[n++] = DIGEST_ALGO_TIGER;
if( hashes & 16 )
buf[n++] = DIGEST_ALGO_SHA256;
if( hashes & 32 )
buf[n++] = DIGEST_ALGO_SHA384;
if( hashes & 64 )
buf[n++] = DIGEST_ALGO_SHA512;
buf[1] = n - 2;
/* followed by a plaintext packet */

View File

@ -2694,7 +2694,16 @@ print_hex( byte *p, size_t n )
{
int i;
if( n == 20 ) {
if( n == 16 ) {
for(i=0; i < n ; i++, p++ ) {
if( i )
putchar(' ');
if( i && !(i%8) )
putchar(' ');
printf("%02X", *p );
}
}
else if( n == 20 ) {
for(i=0; i < n ; i++, i++, p += 2 ) {
if( i )
putchar(' ');
@ -2703,24 +2712,15 @@ print_hex( byte *p, size_t n )
printf("%02X%02X", *p, p[1] );
}
}
else if( n == 24 ) {
else {
for(i=0; i < n ; i += 4, p += 4 ) {
if( i )
putchar(' ');
if( i == 12 )
if( i == 12 && n <= 24 )
putchar(' ');
printf("%02X%02X%02X%02X", *p, p[1], p[2], p[3] );
}
}
else {
for(i=0; i < n ; i++, p++ ) {
if( i )
putchar(' ');
if( i && !(i%8) )
putchar(' ');
printf("%02X", *p );
}
}
}
static void
@ -2783,6 +2783,9 @@ print_mds( const char *fname, int algo )
md_enable( md, DIGEST_ALGO_RMD160 );
if( !check_digest_algo(DIGEST_ALGO_TIGER) )
md_enable( md, DIGEST_ALGO_TIGER );
md_enable( md, DIGEST_ALGO_SHA256 );
md_enable( md, DIGEST_ALGO_SHA384 );
md_enable( md, DIGEST_ALGO_SHA512 );
}
while( (n=fread( buf, 1, DIM(buf), fp )) )
@ -2800,6 +2803,9 @@ print_mds( const char *fname, int algo )
print_hashline( md, DIGEST_ALGO_RMD160, fname );
if( !check_digest_algo(DIGEST_ALGO_TIGER) )
print_hashline( md, DIGEST_ALGO_TIGER, fname );
print_hashline( md, DIGEST_ALGO_SHA256, fname );
print_hashline( md, DIGEST_ALGO_SHA384, fname );
print_hashline( md, DIGEST_ALGO_SHA512, fname );
}
}
else {
@ -2818,7 +2824,13 @@ print_mds( const char *fname, int algo )
if( !check_digest_algo(DIGEST_ALGO_TIGER) ) {
printf("\n%s TIGER = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_TIGER), 24 );
}
}
printf("\n%sSHA256 = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_SHA256), 32 );
printf("\n%sSHA384 = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_SHA384), 48 );
printf("\n%sSHA512 = ", fname?pname:"" );
print_hex(md_read(md, DIGEST_ALGO_SHA512), 64 );
}
putchar('\n');
}