X2Go Bug report logs - #1111
SLES 11.3 - x2go-extras - pwgen-2.06-90.3 - Header V4 RSA/SHA1 signature: BAD, key ID

Package: packages.x2go.org; Maintainer for packages.x2go.org is x2go-dev@lists.x2go.org;

Reported by: "Olaf Matthaei" <o.matthaei@narz-avn.de>

Date: Thu, 10 Nov 2016 06:50:02 UTC

Severity: normal

Tags: moreinfo

Done: Mihai Moldovan <ionic@ionic.de>

Bug is archived. No further changes may be made.

Full log


Message #28 received at 1111@bugs.x2go.org (full text, mbox, reply):

Received: (at 1111) by bugs.x2go.org; 9 Dec 2016 05:56:34 +0000
From o.matthaei@narz-avn.de  Fri Dec  9 06:56:32 2016
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on
	ymir.das-netzwerkteam.de
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,URIBL_BLOCKED
	autolearn=ham version=3.3.2
Received: from localhost (localhost [127.0.0.1])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTP id EA0115DAA3
	for <1111@bugs.x2go.org>; Fri,  9 Dec 2016 06:56:31 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at ymir.das-netzwerkteam.de
Received: from ymir.das-netzwerkteam.de ([127.0.0.1])
	by localhost (ymir.das-netzwerkteam.de [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id yoKPbu4z36WX for <1111@bugs.x2go.org>;
	Fri,  9 Dec 2016 06:56:25 +0100 (CET)
X-Greylist: delayed 450 seconds by postgrey-1.34 at ymir.das-netzwerkteam.de; Fri, 09 Dec 2016 06:56:25 CET
Received: from mx.gfi-bremen.de (mx.gfi-bremen.de [62.159.158.133])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 497575DA86
	for <1111@bugs.x2go.org>; Fri,  9 Dec 2016 06:56:25 +0100 (CET)
X-Virus-Scanned: amavisd-new at gfi-bremen.de
Received: from mx.gfi-bremen.de ([127.0.0.1])
	by localhost (mail.gfi-bremen.de [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id KehA2AmKztJG; Fri,  9 Dec 2016 06:48:46 +0100 (CET)
Received: from mail.gfi-bremen.de (mail.gfi-bremen.de [192.168.11.81])
	by mx.gfi-bremen.de (Postfix) with SMTP;
	Fri,  9 Dec 2016 06:48:46 +0100 (CET)
Received: from VMXPMATTHAEI (unknown [192.168.6.100])
	by mail.gfi-bremen.de (Postfix) with ESMTP id F31EE13F74D;
	Fri,  9 Dec 2016 06:48:45 +0100 (CET)
From: "Olaf Matthaei" <o.matthaei@narz-avn.de>
To: "'Mihai Moldovan'" <ionic@ionic.de>
Cc: <1111@bugs.x2go.org>
Subject: AW: Package: x2goserver Version: 4.0.1.19-0 SLES 11.3 - x2go-extras - pwgen-2.06-90.3 - Header V4 RSA/SHA1 signature: BAD, key ID
Date: Fri, 9 Dec 2016 06:49:32 +0100
Message-ID: <0E23E5206DF44D288503734FC7EB4B6C@VMXPMATTHAEI>
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.6863
Importance: Normal
Thread-Index: AdJQukIVBvF3yGzsRPGdlyDS3ZVObQBJI6Qg
In-Reply-To: <f9a0bcdf-844c-679e-a245-24dbecb93032@ionic.de>
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
Hi,
next try with zypper and with rpm for pwgen:
# rpm -Uhvvvv pwgen-2.06-90.3.x86_64.rpm
D: ============== pwgen-2.06-90.3.x86_64.rpm
D: Expected size:        18988 = lead(96)+sigs(772)+pad(4)+data(18116)
D:   Actual size:        18988
D: opening  db environment /var/lib/rpm/Packages create:cdb:mpool:private
D: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: opening  db index       /var/lib/rpm/Pubkeys rdonly:nofsync mode=0x0
D:  read h#     175 Header sanity check: OK
D: ========== RSA pubkey id f4a7678c 9c6b0b2b (h#175)
error: pwgen-2.06-90.3.x86_64.rpm: Header V3 RSA/SHA256 signature: BAD, key
ID 9c6b0b2b
error: pwgen-2.06-90.3.x86_64.rpm cannot be installed
D: found 0 source and 0 binary packages
D: closed   db index       /var/lib/rpm/Pubkeys
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: May free Score board((nil))

# zypper refresh
Retrieving repository 'perl modules (SLE_11_SP3)' metadata [done]
Building repository 'perl modules (SLE_11_SP3)' cache [done]
Retrieving repository 'x2go-extras' metadata [done]
Building repository 'x2go-extras' cache [done]
Repository 'x2go-release' is up to date.
All repositories have been refreshed.
 
zypper install x2goserver
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW packages are going to be installed:
  libNX_X11-6 libNX_Xcomposite1 libNX_Xdamage1 libNX_Xdmcp6 libNX_Xext6
  libNX_Xfixes3 libNX_Xinerama1 libNX_Xpm4 libNX_Xrandr2 libNX_Xrender1
  libNX_Xtst6 libXcomp3 libXcompext3 libXcompshad3 nx-libs nxagent pwgen
sshfs
  x2goagent x2goserver x2goserver-extensions x2goserver-xsession
The following packages are not supported by their vendor:
  libNX_X11-6 libNX_Xcomposite1 libNX_Xdamage1 libNX_Xdmcp6 libNX_Xext6
  libNX_Xfixes3 libNX_Xinerama1 libNX_Xpm4 libNX_Xrandr2 libNX_Xrender1
  libNX_Xtst6 libXcomp3 libXcompext3 libXcompshad3 nx-libs nxagent pwgen
sshfs
  x2goagent x2goserver x2goserver-extensions x2goserver-xsession
22 new packages to install.
Overall download size: 2.9 MiB. After the operation, additional 8.5 MiB will
be
used.
Continue? [y/n/?] (y): y
Retrieving package pwgen-2.06-90.3.x86_64 (1/22), 19.0 KiB (39.0 KiB
unpacked)
Retrieving: pwgen-2.06-90.3.x86_64.rpm [done]
Installing: pwgen-2.06-90.3 [error]
Installation of pwgen-2.06-90.3 failed:
(with --nodeps --force) Error: Subprocess failed. Error: RPM failed: error:
/var/cache/zypp/packages/x2go-extras/x86_64/pwgen-2.06-90.3.x86_64.rpm:
Header V3 RSA/SHA256 signature: BAD, key ID 9c6b0b2b
error:
/var/cache/zypp/packages/x2go-extras/x86_64/pwgen-2.06-90.3.x86_64.rpm
cannot be installed

Abort, retry, ignore? [a/r/i] (a): 
i
Installing: sshfs-2.4-5.1 [error]
Installation of sshfs-2.4-5.1 failed:
(with --nodeps --force) Error: Subprocess failed. Error: RPM failed: error:
/var/cache/zypp/packages/x2go-extras/x86_64/sshfs-2.4-5.1.x86_64.rpm: Header
V4 RSA/SHA1 signature: BAD, key ID 9c6b0b2b
error: /var/cache/zypp/packages/x2go-extras/x86_64/sshfs-2.4-5.1.x86_64.rpm
cannot be installed

Abort, retry, ignore? [a/r/i] (a): i
Installing: nx-libs-3.5.0.32-0.0x2go1.1.git20161129.734.main [done]
Installing: libXcomp3-3.5.0.32-0.0x2go1.1.git20161129.734.main [error]
Installation of libXcomp3-3.5.0.32-0.0x2go1.1.git20161129.734.main failed:
(with --nodeps --force) Error: Subprocess failed. Error: RPM failed: error:
/var/cache/zypp/packages/x2go-release/x86_64/libXcomp3-3.5.0.32-0.0x2go1.1.g
it20161129.734.main.x86_64.rpm: Header V4 RSA/SHA1 signature: BAD, key ID
9c6b0b2b
error:
/var/cache/zypp/packages/x2go-release/x86_64/libXcomp3-3.5.0.32-0.0x2go1.1.g
it20161129.734.main.x86_64.rpm cannot be installed
 
 

-----Ursprüngliche Nachricht-----
Von: Mihai Moldovan [mailto:ionic@ionic.de] 
Gesendet: Mittwoch, 7. Dezember 2016 19:46
An: Olaf Matthaei
Cc: 1111@bugs.x2go.org
Betreff: Re: Package: x2goserver Version: 4.0.1.19-0 SLES 11.3 - x2go-extras
- pwgen-2.06-90.3 - Header V4 RSA/SHA1 signature: BAD, key ID


On 07.12.2016 06:43 AM, Olaf Matthaei wrote:
> What do you mean with "this time *without* referring to the 
> architecture type" ? I followed the way in the wiki.

The old behavior was to have one repository for every architecture, but
that's not the "SUSE standard repository layout". Instead, SUSE uses one
repository for all architectures.

The information in the wiki is fine and already updated. If you take a close
look at your last email/command output, you'll notice that the repository
previously had x86_64 in the URL while it now doesn't.


> Here are the result:
> 
> zypper refresh
> Retrieving repository 'perl modules (SLE_11_SP3)' metadata [done] 
> Building repository 'perl modules (SLE_11_SP3)' cache [done] File 
> '/repodata/repomd.xml' not found on medium 
> 'http://packages.x2go.org/sle/11.3/extras/x86_64'
> 
> Abort, retry, ignore? [a/r/i/?] (a): r
> File '/repodata/repomd.xml' not found on medium 
> 'http://packages.x2go.org/sle/11.3/extras/x86_64'
> 
> Abort, retry, ignore? [a/r/i/?] (a): i
> Error retrieving metadata for 'x2go-extras':
> SKIP request: User-requested skipping of a file
> Skipping repository 'x2go-extras' because of the above error. File 
> '/repodata/repomd.xml' not found on medium 
> 'http://packages.x2go.org/sle/11.3/main/x86_64'
> 
> Abort, retry, ignore? [a/r/i/?] (a): i
> Error retrieving metadata for 'x2go-release':
> SKIP request: User-requested skipping of a file
> Skipping repository 'x2go-release' because of the above error. Some of 
> the repositories have not been refreshed because of an error.
> 
> zypper repos
> # | Alias                                            | Name
> | Enabled | Refresh
> --+--------------------------------------------------+----------------
> --+--------------------------------------------------+------
> ----------------------------+---------+--------
> 1 | SUSE-Linux-Enterprise-Server-11-SP3 11.3.3-1.138 |
> SUSE-Linux-Enterprise-Server-11-SP3 11.3.3-1.138 | Yes     | No
> 2 | devel_languages_perl                             | perl modules
> (SLE_11_SP3)                        | Yes     | No
> 3 | x2go-extras                                      | x2go-extras
> | Yes     | No
> 4 | x2go-release                                     | x2go-release
> | Yes     | No
> 
> 
> zypper rr x2go-extras
> Removing repository 'x2go-extras' [done]
> Repository 'x2go-extras' has been removed.
> 
> zypper rr x2go-release
> Removing repository 'x2go-release' [done]
> Repository 'x2go-release' has been removed.
> 
> zypper ar http://packages.x2go.org/sle/11.3/extras x2go-extras Adding 
> repository 'x2go-extras' [done] Repository 'x2go-extras' successfully 
> added
> Enabled: Yes
> Autorefresh: No
> GPG check: Yes
> URI: http://packages.x2go.org/sle/11.3/extras
> 
> zypper ar http://packages.x2go.org/sle/11.3/main x2go-release Adding 
> repository 'x2go-release' [done] Repository 'x2go-release' 
> successfully added
> Enabled: Yes
> Autorefresh: No
> GPG check: Yes
> URI: http://packages.x2go.org/sle/11.3/main
> 
> zypper search x2go
> Building repository 'x2go-extras' cache [done]
> Building repository 'x2go-release' cache [done]
> Loading repository data...
> Reading installed packages...
> 
> S | Name                   | Summary
|
> Type
>
--+------------------------+----------------------------------------------+-
> ----------
>   | X2Go SLE:11:SP3 extras | X2Go extras Repository for SLE:11:SP3
|
> product
>   | X2Go SLE:11:SP3 main   | X2Go main Repository for SLE:11:SP3
|
> product
>   | cups-x2go              | CUPS backend for printing from X2Go
|
> package
>   | cups-x2go              | CUPS backend for printing from X2Go
|
> srcpackage
>   | x2goagent              | X2Go Agent
|
> package
>   | x2godesktopsharing     | Share X11 desktops with other users via X2Go
|
> package
>   | x2godesktopsharing     | Share X11 desktops with other users via X2Go
|
> srcpackage
>   | x2goserver             | X2Go Server
|
> package
>   | x2goserver             | X2Go Server
|
> srcpackage
>   | x2goserver-extensions  | X2Go Server (extension support)
|
> package
>   | x2goserver-fmbindings  | X2Go Server (file manager bindings)
|
> package
>   | x2goserver-printing    | X2Go Server (printing support)
|
> package
>   | x2goserver-xsession    | X2Go Server (Xsession runner)
|
> package

Okay, good!


> zypper install x2goserver
> Loading repository data...
> Reading installed packages...
> Resolving package dependencies...
> 
> The following NEW packages are going to be installed:
>   libNX_X11-6 libNX_Xcomposite1 libNX_Xdamage1 libNX_Xdmcp6 
> libNX_Xext6 libNX_Xfixes3 libNX_Xinerama1 libNX_Xpm4 libNX_Xrandr2
libNX_Xrender1
>   libNX_Xtst6 libXcomp3 libXcompext3 libXcompshad3 nx-libs nxagent 
> perl-DBD-SQLite pwgen sshfs x2goagent x2goserver x2goserver-extensions
>   x2goserver-xsession
> 
> The following packages are not supported by their vendor:
>   libNX_X11-6 libNX_Xcomposite1 libNX_Xdamage1 libNX_Xdmcp6 
> libNX_Xext6 libNX_Xfixes3 libNX_Xinerama1 libNX_Xpm4 libNX_Xrandr2
libNX_Xrender1
>   libNX_Xtst6 libXcomp3 libXcompext3 libXcompshad3 nx-libs nxagent 
> pwgen sshfs x2goagent x2goserver x2goserver-extensions 
> x2goserver-xsession
> 
> 23 new packages to install.
> Overall download size: 2.9 MiB. After the operation, additional 8.6 
> MiB will be used. Continue? [y/n/?] (y): y
> Retrieving package pwgen-2.06-90.3.x86_64 (1/23), 19.0 KiB (39.0 KiB
> unpacked)
> Retrieving: pwgen-2.06-90.3.x86_64.rpm [done]
> Retrieving package sshfs-2.4-5.1.x86_64 (2/23), 43.0 KiB (89.0 KiB
unpacked)
> Retrieving: sshfs-2.4-5.1.x86_64.rpm [done]
> Retrieving package nx-libs-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64
> (3/23), 15.0 KiB (30.0 KiB unpacked)
> Retrieving: nx-libs-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
libXcomp3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64
> (4/23), 338.0 KiB (1.2 MiB unpacked)
> Retrieving: libXcomp3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> libNX_Xdmcp6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (5/23), 12.0
> KiB (27.0 KiB unpacked)
> Retrieving:
libNX_Xdmcp6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> libNX_X11-6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (6/23), 516.0
> KiB (1.2 MiB unpacked)
> Retrieving:
libNX_X11-6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> libXcompext3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (7/23), 35.0
> KiB (93.0 KiB unpacked)
> Retrieving:
libXcompext3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> libNX_Xext6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (8/23), 28.0
KiB
> (85.0 KiB unpacked)
> Retrieving:
libNX_Xext6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> libNX_Xtst6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (9/23), 13.0
KiB
> (32.0 KiB unpacked)
> Retrieving:
libNX_Xtst6-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> libNX_Xrender1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (10/23),
20.0
> KiB (49.0 KiB unpacked)
> Retrieving:
> libNX_Xrender1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm [done]
> Retrieving package
> libNX_Xpm4-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (11/23), 35.0
KiB
> (80.0 KiB unpacked)
> Retrieving: libNX_Xpm4-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> libNX_Xinerama1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (12/23),
8.0
> KiB (14.0 KiB unpacked)
> Retrieving:
> libNX_Xinerama1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm [done]
> Retrieving package
> libNX_Xfixes3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (13/23),
11.0
> KiB (27.0 KiB unpacked)
> Retrieving:
> libNX_Xfixes3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm [done]
> Retrieving package
> libNX_Xdamage1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (14/23),
8.0
> KiB (13.0 KiB unpacked)
> Retrieving:
> libNX_Xdamage1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm [done]
> Retrieving package
> libNX_Xrandr2-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (15/23),
10.0
> KiB (18.0 KiB unpacked)
> Retrieving:
> libNX_Xrandr2-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm [done]
> Retrieving package
> libNX_Xcomposite1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (16/23),
> 8.0 KiB (13.0 KiB unpacked)
> Retrieving:
> libNX_Xcomposite1-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
[done]
> Retrieving package
> libXcompshad3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64 (17/23),
34.0
> KiB (91.0 KiB unpacked)
> Retrieving:
> libXcompshad3-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm [done]
> Retrieving package nxagent-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64
> (18/23), 1.6 MiB (5.0 MiB unpacked)
> Retrieving: nxagent-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done (555.0 KiB/s)]
> Retrieving package
x2goagent-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64
> (19/23), 12.0 KiB (37.0 KiB unpacked)
> Retrieving: x2goagent-3.5.0.32-0.0x2go1.1.git20161129.734.main.x86_64.rpm
> [done]
> Retrieving package
> x2goserver-xsession-4.0.1.20-0.0x2go1.1.git20161129.1125.main.x86_64
> (20/23), 29.0 KiB (83.0 KiB unpacked)
> Retrieving:
> x2goserver-xsession-4.0.1.20-0.0x2go1.1.git20161129.1125.main.x86_64.rpm
> [done]
> Retrieving package
> x2goserver-extensions-4.0.1.20-0.0x2go1.1.git20161129.1125.main.x86_64
> (21/23), 30.0 KiB (79.0 KiB unpacked)
> Retrieving:
> x2goserver-extensions-4.0.1.20-0.0x2go1.1.git20161129.1125.main.x86_64.rpm
> [done]
> Retrieving package
> x2goserver-4.0.1.20-0.0x2go1.1.git20161129.1125.main.x86_64 (22/23), 89.0
> KiB (314.0 KiB unpacked)
> Retrieving:
x2goserver-4.0.1.20-0.0x2go1.1.git20161129.1125.main.x86_64.rpm
> [done]
> Installing: perl-DBD-SQLite-1.14-11.14 [done]
> Installing: pwgen-2.06-90.3 [error]
> Installation of pwgen-2.06-90.3 failed:
> (with --nodeps --force) Error: Subprocess failed. Error: RPM failed:
error:
> /var/cache/zypp/packages/x2go-extras/x86_64/pwgen-2.06-90.3.x86_64.rpm:
> Header V4 RSA/SHA1 signature: BAD, key ID 9c6b0b2b
> error:
> /var/cache/zypp/packages/x2go-extras/x86_64/pwgen-2.06-90.3.x86_64.rpm
> cannot be installed
> 
> 
> Abort, retry, ignore? [a/r/i] (a):

The key is not the problem, you obviously have it in your RPM DB already, as
otherwise rpm would have given you a "NOKEY" error.

Checking via "rpm -v --checksign" on the build server reveals:

pwgen-2.06-90.3.x86_64.rpm:
    Header V4 RSA/SHA1 Signature, key ID 9c6b0b2b: OK
    Header SHA1 digest: OK (693079e6da9cde1e9e5418c8a90d47ca4b89cf3a)
    V4 RSA/SHA1 Signature, key ID 9c6b0b2b: OK
    MD5 digest: OK (c680b2bf2f22c0f8e4e29a81efb326dc)

I suspect (also from other resources I found on the net), that SLE 11.3 does
not support V4 signatures, though.

I have thus resigned only the pwgen package for now. Can you please retry
installing x2goserver? It will definitely fail at some package again, but I
want to see if pwgen now looks clean to your rpm binary (i.e., if it doesn't
complain about it any longer.) If switching to V3 signatures with the SHA256
hash algorithm, I'll resign all packages on 11.3 and 11.2.


Side note: please remember to include 1111@bugs.x2go.org when you're
replying, so that your answer makes it into the bugreport.



Mihai



Send a report that this bug log contains spam.


X2Go Developers <owner@bugs.x2go.org>. Last modified: Thu Mar 28 14:07:48 2024; Machine Name: ymir.das-netzwerkteam.de

X2Go Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.