2 # This file is part of GNUnet.
3 # (C) 2010 Christian Grothoff (and other contributing authors)
5 # GNUnet is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published
7 # by the Free Software Foundation; either version 2, or (at your
8 # option) any later version.
10 # GNUnet is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with GNUnet; see the file COPYING. If not, write to the
17 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 # Boston, MA 02110-1301, USA.
20 # Testcase for ego revocation
21 from __future__ import print_function
28 if os.name == 'posix':
29 config = 'gnunet-config'
30 gnunetarm = 'gnunet-arm'
31 ident = 'gnunet-identity'
32 revoc = './gnunet-revocation'
34 config = 'gnunet-config.exe'
35 gnunetarm = 'gnunet-arm.exe'
36 ident = 'gnunet-identity.exe'
37 revoc = './gnunet-revocation.exe'
39 TEST_CONFIGURATION = "test_revocation.conf"
40 TEST_REVOCATION_EGO = "revoc_test"
43 get_clean = subprocess.Popen ([config, '-c', TEST_CONFIGURATION, '-s', 'PATHS', '-o', 'GNUNET_HOME', '-f'], stdout=subprocess.PIPE)
44 cleandir, x = get_clean.communicate ()
45 cleandir = cleandir.decode("utf-8")
46 cleandir = cleandir.rstrip ('\n').rstrip ('\r')
48 if os.path.isdir (cleandir):
49 shutil.rmtree (cleandir, True)
52 arm = subprocess.Popen ([gnunetarm, '-s', '-c', TEST_CONFIGURATION])
56 print ("Creating an ego " + TEST_REVOCATION_EGO)
59 idc = subprocess.Popen ([ident, '-C', TEST_REVOCATION_EGO, '-c', TEST_CONFIGURATION])
61 if idc.returncode != 0:
62 raise Exception ("gnunet-identity failed to create an ego `" + TEST_REVOCATION_EGO + "'")
66 idd = subprocess.Popen ([ident, '-d'], stdout=subprocess.PIPE)
67 rev_key, x = idd.communicate ()
68 rev_key = rev_key.decode("utf-8")
69 if len (rev_key.split ()) < 3:
70 raise Exception ("can't get revocation key out of `" + rev_key + "'")
71 rev_key = rev_key.split ()[2]
73 print ("Testing key " + rev_key)
76 tst = subprocess.Popen ([revoc, '-t', rev_key, '-c', TEST_CONFIGURATION], stdout=subprocess.PIPE)
77 output_not_revoked, x = tst.communicate ()
78 output_not_revoked = output_not_revoked.decode("utf-8")
79 if tst.returncode != 0:
80 raise Exception ("gnunet-revocation failed to test a key - " + str (tst.returncode) + ": " + output_not_revoked)
81 if 'valid' not in output_not_revoked:
83 print ("Key was not valid")
85 print ("Key was valid")
87 print ("Revoking key " + rev_key)
90 rev = subprocess.Popen ([revoc, '-R', TEST_REVOCATION_EGO, '-p', '-c', TEST_CONFIGURATION])
92 if rev.returncode != 0:
93 raise Exception ("gnunet-revocation failed to revoke a key")
95 print ("Testing revoked key " + rev_key)
98 tst = subprocess.Popen ([revoc, '-t', rev_key, '-c', TEST_CONFIGURATION], stdout=subprocess.PIPE)
99 output_revoked, x = tst.communicate ()
100 output_revoked = output_revoked.decode("utf-8")
101 if tst.returncode != 0:
102 raise Exception ("gnunet-revocation failed to test a revoked key")
103 if 'revoked' not in output_revoked:
105 print ("Key was not revoked")
107 print ("Key was revoked")
110 arm = subprocess.Popen ([gnunetarm, '-e', '-c', TEST_CONFIGURATION])
112 if os.path.isdir (cleandir):
113 shutil.rmtree (cleandir, True)