1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

gpg: Change armor Version header to emit only the major version.

* g10/options.h (opt): Rename field no_version to emit_version.
* g10/gpg.c (main): Init opt.emit_vesion to 1.  Change --emit-version
to bump up opt.emit_version.
* g10/armor.c (armor_filter): Implement different --emit-version
values.
--

GnuPG-bug-id: 1572
Signed-off-by: Werner Koch <wk@gnupg.org>
(cherry picked from commit e951782e937ce290be0d89d83e84b3daea997587)

Resolved conflicts:
	NEWS
	g10/armor.c
	g10/gpg.c
This commit is contained in:
Werner Koch 2013-11-27 09:20:02 +01:00
parent cad8216f9a
commit b135372176
5 changed files with 51 additions and 24 deletions

3
NEWS
View File

@ -3,6 +3,9 @@ Noteworthy changes in version 1.4.16 (unreleased)
* Do not create a trustdb file if --trust-model=always is used.
* Only the major version number is by default included in the armored
output.
Noteworthy changes in version 1.4.15 (2013-10-04)
-------------------------------------------------

View File

@ -2408,8 +2408,12 @@ protected by the signature.
@item --emit-version
@itemx --no-emit-version
@opindex emit-version
Force inclusion of the version string in ASCII armored output.
@option{--no-emit-version} disables this option.
Force inclusion of the version string in ASCII armored output. If
given once only the name of the program and the major number is
emitted (default), given twice the minor is also emitted, given triple
the micro is added, and given quad an operating system identification
is also emitted. @option{--no-emit-version} disables the version
line.
@item --sig-notation @code{name=value}
@itemx --cert-notation @code{name=value}

View File

@ -148,11 +148,11 @@ release_armor_context (armor_filter_context_t *afx)
int
push_armor_filter (armor_filter_context_t *afx, iobuf_t iobuf)
{
int rc;
int rc;
if (!afx->refcount)
return iobuf_push_filter (iobuf, armor_filter, afx);
afx->refcount++;
rc = iobuf_push_filter (iobuf, armor_filter, afx);
if (rc)
@ -801,7 +801,7 @@ radix64_read( armor_filter_context_t *afx, IOBUF a, size_t *retn,
goto again;
}
}
if (!n)
onlypad = 1;
@ -985,7 +985,7 @@ armor_filter( void *opaque, int control,
/* We need some space for the faked packet. The minmum
* required size is the PARTIAL_CHUNK size plus a byte for the
* length itself */
if( size < PARTIAL_CHUNK+1 )
if( size < PARTIAL_CHUNK+1 )
BUG(); /* supplied buffer too short */
if( afx->faked )
@ -1004,7 +1004,7 @@ armor_filter( void *opaque, int control,
unsigned int hashes = afx->hashes;
const byte *sesmark;
size_t sesmarklen;
sesmark = get_session_marker( &sesmarklen );
if ( sesmarklen > 20 )
BUG();
@ -1026,7 +1026,7 @@ armor_filter( void *opaque, int control,
buf[n++] = 0xff; /* new format, type 63, 1 length byte */
n++; /* see below */
memcpy(buf+n, sesmark, sesmarklen ); n+= sesmarklen;
buf[n++] = CTRLPKT_CLEARSIGN_START;
buf[n++] = CTRLPKT_CLEARSIGN_START;
buf[n++] = afx->not_dash_escaped? 0:1; /* sigclass */
if( hashes & 1 )
buf[n++] = DIGEST_ALGO_RMD160;
@ -1080,10 +1080,25 @@ armor_filter( void *opaque, int control,
iobuf_writestr(a, head_strings[afx->what] );
iobuf_writestr(a, "-----" );
iobuf_writestr(a,afx->eol);
if( !opt.no_version )
if (opt.emit_version)
{
iobuf_writestr(a, "Version: GnuPG v" VERSION " ("
PRINTABLE_OS_NAME ")" );
iobuf_writestr (a, "Version: GnuPG v");
for (s=VERSION; *s && *s != '.'; s++)
iobuf_writebyte (a, *s);
if (opt.emit_version > 1 && *s)
{
iobuf_writebyte (a, *s++);
for (; *s && *s != '.'; s++)
iobuf_writebyte (a, *s);
if (opt.emit_version > 2)
{
for (; *s && *s != '-' && !spacep (s); s++)
iobuf_writebyte (a, *s);
if (opt.emit_version > 3)
iobuf_writestr (a, " (" PRINTABLE_OS_NAME ")");
}
}
iobuf_writestr(a,afx->eol);
}
@ -1287,7 +1302,7 @@ make_radix64_string( const byte *data, size_t len )
/***********************************************
* For the pipemode command we can't use the armor filter for various
* reasons, so we use this new unarmor_pump stuff to remove the armor
* reasons, so we use this new unarmor_pump stuff to remove the armor
*/
enum unarmor_state_e {
@ -1295,7 +1310,7 @@ enum unarmor_state_e {
STA_bypass,
STA_wait_newline,
STA_wait_dash,
STA_first_dash,
STA_first_dash,
STA_compare_header,
STA_found_header_wait_newline,
STA_skip_header_lines,
@ -1334,12 +1349,12 @@ unarmor_pump_release (UnarmorPump x)
xfree (x);
}
/*
/*
* Get the next character from the ascii armor taken from the IOBUF
* created earlier by unarmor_pump_new().
* Return: c = Character
* 256 = ignore this value
* -1 = End of current armor
* -1 = End of current armor
* -2 = Premature EOF (not used)
* -3 = Invalid armor
*/
@ -1350,9 +1365,9 @@ unarmor_pump (UnarmorPump x, int c)
switch (x->state) {
case STA_init:
{
{
byte tmp[1];
tmp[0] = c;
tmp[0] = c;
if ( is_armored (tmp) )
x->state = c == '-'? STA_first_dash : STA_wait_newline;
else {
@ -1375,10 +1390,10 @@ unarmor_pump (UnarmorPump x, int c)
x->state = STA_compare_header;
case STA_compare_header:
if ( "-----BEGIN PGP SIGNATURE-----"[++x->pos] == c ) {
if ( x->pos == 28 )
if ( x->pos == 28 )
x->state = STA_found_header_wait_newline;
}
else
else
x->state = c == '\n'? STA_wait_dash : STA_wait_newline;
break;
case STA_found_header_wait_newline:
@ -1425,7 +1440,7 @@ unarmor_pump (UnarmorPump x, int c)
break;
}
}
switch(x->pos) {
case 0:
x->val = c << 2;
@ -1466,7 +1481,7 @@ unarmor_pump (UnarmorPump x, int c)
x->state = STA_ready; /* not sure whether this is correct */
break;
}
switch(x->pos) {
case 0:
x->val = c << 2;

View File

@ -1908,6 +1908,7 @@ main (int argc, char **argv )
opt.def_cert_expire="0";
set_homedir ( default_homedir () );
opt.passwd_repeat=1;
opt.emit_version = 1; /* Limit to the major number. */
#ifdef ENABLE_CARD_SUPPORT
#if defined(_WIN32) || defined(__CYGWIN__)
@ -2245,8 +2246,8 @@ main (int argc, char **argv )
case oNoVerbose: g10_opt_verbose = 0;
opt.verbose = 0; opt.list_sigs=0; break;
case oQuickRandom: quick_random_gen(1); break;
case oEmitVersion: opt.no_version=0; break;
case oNoEmitVersion: opt.no_version=1; break;
case oEmitVersion: opt.emit_version++; break;
case oNoEmitVersion: opt.emit_version=0; break;
case oCompletesNeeded: opt.completes_needed = pargs.r.ret_int; break;
case oMarginalsNeeded: opt.marginals_needed = pargs.r.ret_int; break;
case oMaxCertDepth: opt.max_cert_depth = pargs.r.ret_int; break;

View File

@ -79,7 +79,11 @@ struct
int def_cert_level;
int min_cert_level;
int ask_cert_level;
int no_version;
int emit_version; /* 0 = none,
1 = major only,
2 = major and minor,
3 = full version,
4 = full version plus OS string. */
int marginals_needed;
int completes_needed;
int max_cert_depth;