tests/test-gpg.t
author Augie Fackler <augie@google.com>
Wed, 12 Apr 2017 11:23:55 -0700
branchstable
changeset 32050 77eaf9539499
parent 29873 80ba176bad62
child 45030 f58928715d0c
permissions -rw-r--r--
dispatch: protect against malicious 'hg serve --stdio' invocations (sec) Some shared-ssh installations assume that 'hg serve --stdio' is a safe command to run for minimally trusted users. Unfortunately, the messy implementation of argument parsing here meant that trying to access a repo named '--debugger' would give the user a pdb prompt, thereby sidestepping any hoped-for sandboxing. Serving repositories over HTTP(S) is unaffected. We're not currently hardening any subcommands other than 'serve'. If your service exposes other commands to users with arbitrary repository names, it is imperative that you defend against repository names of '--debugger' and anything starting with '--config'. The read-only mode of hg-ssh stopped working because it provided its hook configuration to "hg serve --stdio" via --config parameter. This is banned for security reasons now. This patch switches it to directly call ui.setconfig(). If your custom hosting infrastructure relies on passing --config to "hg serve --stdio", you'll need to find a different way to get that configuration into Mercurial, either by using ui.setconfig() as hg-ssh does in this patch, or by placing an hgrc file someplace where Mercurial will read it. mitrandir@fb.com provided some extra fixes for the dispatch code and for hg-ssh in places that I overlooked.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 21711
diff changeset
     1
#require gpg
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 21711
diff changeset
     2
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     3
Test the GPG extension
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
     4
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     5
  $ cat <<EOF >> $HGRCPATH
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     6
  > [extensions]
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     7
  > gpg=
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     8
  > 
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     9
  > [gpg]
29789
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    10
  > cmd=gpg --no-permission-warning --no-secmem-warning --no-auto-check-trustdb
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    11
  > EOF
29789
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    12
  $ GNUPGHOME="$TESTTMP/gpg"; export GNUPGHOME
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    13
  $ cp -R "$TESTDIR/gpg" "$GNUPGHOME"
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    14
29873
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    15
Start gpg-agent, which is required by GnuPG v2
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    16
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    17
#if gpg21
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    18
  $ gpg-connect-agent -q --subst /serverpid '/echo ${get serverpid}' /bye \
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    19
  > >> $DAEMON_PIDS
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    20
#endif
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    21
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29791
diff changeset
    22
and migrate secret keys
29790
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29789
diff changeset
    23
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29789
diff changeset
    24
#if gpg2
29791
28591876fa63 test-gpg: run migration of v1 secret keys beforehand
Yuya Nishihara <yuya@tcha.org>
parents: 29790
diff changeset
    25
  $ gpg --no-permission-warning --no-secmem-warning --list-secret-keys \
28591876fa63 test-gpg: run migration of v1 secret keys beforehand
Yuya Nishihara <yuya@tcha.org>
parents: 29790
diff changeset
    26
  > > /dev/null 2>&1
29790
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29789
diff changeset
    27
#endif
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29789
diff changeset
    28
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    29
  $ hg init r
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    30
  $ cd r
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    31
  $ echo foo > foo
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    32
  $ hg ci -Amfoo
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    33
  adding foo
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
    34
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    35
  $ hg sigs
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    36
21711
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    37
  $ HGEDITOR=cat hg sign -e 0
16927
7922004a46b8 gpg: lowercase messages
Martin Geisler <mg@aragost.com>
parents: 16913
diff changeset
    38
  signing 0:e63c23eaa88a
21711
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    39
  Added signature for changeset e63c23eaa88a
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    40
  
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    41
  
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    42
  HG: Enter commit message.  Lines beginning with 'HG:' are removed.
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    43
  HG: Leave message empty to abort commit.
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    44
  HG: --
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    45
  HG: user: test
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    46
  HG: branch 'default'
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    47
  HG: added .hgsigs
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
    48
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    49
  $ hg sigs
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    50
  hgtest                             0:e63c23eaa88ae77967edcf4ea194d31167c478b0
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
    51
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    52
  $ hg sigcheck 0
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    53
  e63c23eaa88a is signed by:
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    54
   hgtest
16289
aae219a99a6e test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents: 12428
diff changeset
    55
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16350
diff changeset
    56
  $ cd ..