diff options
Diffstat (limited to 'src/abd/test_abd_verify_and.sh')
-rwxr-xr-x | src/abd/test_abd_verify_and.sh | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/src/abd/test_abd_verify_and.sh b/src/abd/test_abd_verify_and.sh new file mode 100755 index 000000000..c6287055e --- /dev/null +++ b/src/abd/test_abd_verify_and.sh | |||
@@ -0,0 +1,86 @@ | |||
1 | #!/usr/bin/env bash | ||
2 | trap "gnunet-arm -e -c test_abd_lookup.conf" SIGINT | ||
3 | |||
4 | LOCATION=$(which gnunet-config) | ||
5 | if [ -z $LOCATION ] | ||
6 | then | ||
7 | LOCATION="gnunet-config" | ||
8 | fi | ||
9 | $LOCATION --version 1> /dev/null | ||
10 | if test $? != 0 | ||
11 | then | ||
12 | echo "GNUnet command line tools cannot be found, check environmental variables PATH and GNUNET_PREFIX" | ||
13 | exit 77 | ||
14 | fi | ||
15 | |||
16 | rm -rf `gnunet-config -c test_abd_lookup.conf -s PATHS -o GNUNET_HOME -f` | ||
17 | |||
18 | # (1) Service.user -> GNU.project.member | ||
19 | # (2) GNU.project -> GNUnet | ||
20 | # (3) GNUnet.member -> GNUnet.developer AND GNUnet.user | ||
21 | # (4) GNUnet.developer -> Alice | ||
22 | |||
23 | |||
24 | which timeout > /dev/null 2>&1 && DO_TIMEOUT="timeout 30" | ||
25 | gnunet-arm -s -c test_abd_lookup.conf | ||
26 | gnunet-identity -C service -c test_abd_lookup.conf | ||
27 | gnunet-identity -C alice -c test_abd_lookup.conf | ||
28 | gnunet-identity -C gnu -c test_abd_lookup.conf | ||
29 | gnunet-identity -C gnunet -c test_abd_lookup.conf | ||
30 | |||
31 | GNU_KEY=$(gnunet-identity -d -c test_abd_lookup.conf | grep gnu | grep -v gnunet | awk '{print $3}') | ||
32 | ALICE_KEY=$(gnunet-identity -d -c test_abd_lookup.conf | grep alice | awk '{print $3}') | ||
33 | GNUNET_KEY=$(gnunet-identity -d -c test_abd_lookup.conf | grep gnunet | awk '{print $3}') | ||
34 | SERVICE_KEY=$(gnunet-identity -d -c test_abd_lookup.conf | grep service | awk '{print $3}') | ||
35 | |||
36 | USER_ATTR="user" | ||
37 | GNU_PROJECT_ATTR="project" | ||
38 | MEMBER_ATTR="member" | ||
39 | DEVELOPER_ATTR="developer" | ||
40 | DEV_ATTR="developer" | ||
41 | |||
42 | gnunet-identity -d | ||
43 | |||
44 | # (1) A service assigns the attribute "user" to all entities that have been assigned "member" by entities that werde assigned "project" from GNU | ||
45 | gnunet-abd --createIssuerSide --ego=service --attribute="$USER_ATTR" --subject="$GNU_KEY $GNU_PROJECT_ATTR.$MEMBER_ATTR" --ttl="2019-12-12 10:00:00" -c test_abd_lookup.conf | ||
46 | gnunet-namestore -D -z service | ||
47 | |||
48 | # (2) GNU recognized GNUnet as a GNU project and delegates the "project" attribute | ||
49 | gnunet-abd --createIssuerSide --ego=gnu --attribute="$GNU_PROJECT_ATTR" --subject="$GNUNET_KEY" --ttl="2019-12-12 10:00:00" -c test_abd_lookup.conf | ||
50 | gnunet-namestore -D -z gnu | ||
51 | |||
52 | # (3+4) GNUnet assigns the attribute "member" to all entities gnunet has also assigned "developer" or "user" | ||
53 | gnunet-abd --createIssuerSide --ego=gnunet --attribute="$MEMBER_ATTR" --subject="$GNUNET_KEY $DEVELOPER_ATTR, $GNUNET_KEY $USER_ATTR" --ttl="2019-12-12 10:00:00" -c test_abd_lookup.conf | ||
54 | gnunet-namestore -D -z gnunet | ||
55 | |||
56 | # (5) GNUnet signes the delegates and Alice stores it | ||
57 | SIGNED=`$DO_TIMEOUT gnunet-abd --signSubjectSide --ego=gnunet --attribute=$DEV_ATTR --subject=$ALICE_KEY --ttl="2019-12-12 10:00:00"` | ||
58 | gnunet-abd --createSubjectSide --ego=alice --import="$SIGNED" --private | ||
59 | SIGNED=`$DO_TIMEOUT gnunet-abd --signSubjectSide --ego=gnunet --attribute=$USER_ATTR --subject=$ALICE_KEY --ttl="2019-12-12 10:00:00"` | ||
60 | gnunet-abd --createSubjectSide --ego=alice --import="$SIGNED" --private | ||
61 | gnunet-namestore -D -z alice | ||
62 | |||
63 | # Starting to resolve | ||
64 | echo "+++ Starting to Resolve +++" | ||
65 | |||
66 | DELS=`$DO_TIMEOUT gnunet-abd --collect --issuer=$SERVICE_KEY --attribute=$USER_ATTR --ego=alice --backward -c test_abd_lookup.conf | paste -d, -s - -` | ||
67 | echo $DELS | ||
68 | echo gnunet-abd --verify --issuer=$SERVICE_KEY --attribute=$USER_ATTR --subject=$ALICE_KEY --delegate=\'$DELS\' --backward -c test_abd_lookup.conf | ||
69 | gnunet-abd --verify --issuer=$SERVICE_KEY --attribute=$USER_ATTR --subject=$ALICE_KEY --delegate="$DELS" --backward -c test_abd_lookup.conf | ||
70 | |||
71 | RES=$? | ||
72 | |||
73 | # Cleanup properly | ||
74 | gnunet-namestore -z alice -d -n "@" -t DEL -c test_abd_lookup.conf | ||
75 | gnunet-namestore -z gnu -d -n $GNU_PROJECT_ATTR -t ATTR -c test_abd_lookup.conf | ||
76 | gnunet-namestore -z gnunet -d -n $MEMBER_ATTR -t ATTR -c test_abd_lookup.conf | ||
77 | gnunet-namestore -z service -d -n $USER_ATTR -t ATTR -c test_abd_lookup.conf | ||
78 | gnunet-arm -e -c test_abd_lookup.conf | ||
79 | |||
80 | if [ "$RES" == 0 ] | ||
81 | then | ||
82 | exit 0 | ||
83 | else | ||
84 | echo "FAIL: Failed to verify credentials." | ||
85 | exit 1 | ||
86 | fi | ||