aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-04-13 08:52:15 +0200
committerChristian Grothoff <christian@grothoff.org>2022-04-13 08:53:19 +0200
commit6516ced3f6bdbedb43a40023f3336097662bfc03 (patch)
treecdc8a856907bc442b9899fb86c193228c2a1875b
parentb0cda372fb2412459e0462c18b4e9f70ca7992ab (diff)
downloadanastasis-6516ced3f6bdbedb43a40023f3336097662bfc03.tar.gz
anastasis-6516ced3f6bdbedb43a40023f3336097662bfc03.zip
-rename fest for #7045
-rw-r--r--doc/sphinx/rest.rst6
-rw-r--r--src/backend/anastasis-httpd.c26
-rw-r--r--src/backend/anastasis-httpd.h4
-rw-r--r--src/backend/anastasis-httpd_config.c4
-rw-r--r--src/backend/anastasis.conf2
-rw-r--r--src/cli/resources/00-backup.json5
-rw-r--r--src/cli/resources/00-recovery.json3
-rw-r--r--src/cli/resources/01-backup.json3
-rw-r--r--src/cli/resources/01-recovery.json3
-rw-r--r--src/cli/resources/02-backup.json1
-rw-r--r--src/cli/resources/02-recovery.json1
-rw-r--r--src/cli/resources/03-backup.json9
-rw-r--r--src/cli/resources/04-backup.json9
-rw-r--r--src/cli/resources/05-backup.json9
-rw-r--r--src/cli/resources/06-backup.json9
-rw-r--r--src/cli/test_anastasis_reducer_1.conf2
-rw-r--r--src/cli/test_anastasis_reducer_2.conf2
-rw-r--r--src/cli/test_anastasis_reducer_3.conf2
-rw-r--r--src/cli/test_anastasis_reducer_4.conf2
-rw-r--r--src/cli/test_anastasis_reducer_free_1.conf2
-rw-r--r--src/cli/test_anastasis_reducer_free_2.conf2
-rw-r--r--src/cli/test_anastasis_reducer_free_3.conf2
-rw-r--r--src/cli/test_anastasis_reducer_free_4.conf2
-rw-r--r--src/include/anastasis_service.h4
-rw-r--r--src/include/anastasis_testing_lib.h2
-rw-r--r--src/lib/anastasis_backup.c38
-rw-r--r--src/lib/anastasis_recovery.c32
-rw-r--r--src/reducer/anastasis_api_recovery_redux.c16
-rw-r--r--src/reducer/anastasis_api_redux.c25
-rw-r--r--src/restclient/anastasis_api_config.c4
-rw-r--r--src/restclient/anastasis_api_policy_store.c5
-rw-r--r--src/testing/test_anastasis_api.conf2
-rw-r--r--src/testing/testing_api_cmd_config.c6
-rw-r--r--src/testing/testing_api_cmd_policy_store.c2
-rw-r--r--src/testing/testing_cmd_recover_secret.c13
-rw-r--r--src/testing/testing_cmd_secret_share.c8
-rw-r--r--src/testing/testing_cmd_truth_upload.c18
37 files changed, 147 insertions, 138 deletions
diff --git a/doc/sphinx/rest.rst b/doc/sphinx/rest.rst
index 6943387..7aa645d 100644
--- a/doc/sphinx/rest.rst
+++ b/doc/sphinx/rest.rst
@@ -80,7 +80,7 @@ Receiving Configuration
80 // **provider salt** is then used in various operations to ensure 80 // **provider salt** is then used in various operations to ensure
81 // cryptographic operations differ by provider. A provider must 81 // cryptographic operations differ by provider. A provider must
82 // never change its salt value. 82 // never change its salt value.
83 server_salt: string; 83 provider_salt: string;
84 84
85 } 85 }
86 86
@@ -348,7 +348,7 @@ In the following, UUID is always defined and used according to `RFC 4122`_.
348 truth_key: [32]; //bytearray 348 truth_key: [32]; //bytearray
349 349
350 // Salt used to hash the security answer if appliccable. 350 // Salt used to hash the security answer if appliccable.
351 truth_salt: [32]; //bytearray 351 question_salt: [32]; //bytearray
352 352
353 // Salt from the provider to derive the user ID 353 // Salt from the provider to derive the user ID
354 // at this provider. 354 // at this provider.
@@ -371,7 +371,7 @@ In the following, UUID is always defined and used according to `RFC 4122`_.
371 interface DecryptionPolicy { 371 interface DecryptionPolicy {
372 // Salt included to encrypt master key share when 372 // Salt included to encrypt master key share when
373 // using this decryption policy. 373 // using this decryption policy.
374 salt: [32]; //bytearray 374 master_salt: [32]; //bytearray
375 375
376 // Master key, AES-encrypted with key derived from 376 // Master key, AES-encrypted with key derived from
377 // salt and keyshares revealed by the following list of 377 // salt and keyshares revealed by the following list of
diff --git a/src/backend/anastasis-httpd.c b/src/backend/anastasis-httpd.c
index 4428851..16e2a08 100644
--- a/src/backend/anastasis-httpd.c
+++ b/src/backend/anastasis-httpd.c
@@ -88,9 +88,9 @@ char *AH_fulfillment_url;
88char *AH_business_name; 88char *AH_business_name;
89 89
90/** 90/**
91 * Our server salt. 91 * Our provider salt.
92 */ 92 */
93struct ANASTASIS_CRYPTO_ProviderSaltP AH_server_salt; 93struct ANASTASIS_CRYPTO_ProviderSaltP AH_provider_salt;
94 94
95/** 95/**
96 * Number of policy uploads permitted per annual fee payment. 96 * Number of policy uploads permitted per annual fee payment.
@@ -866,30 +866,30 @@ run (void *cls,
866 return; 866 return;
867 } 867 }
868 { 868 {
869 char *server_salt; 869 char *provider_salt;
870 870
871 if (GNUNET_OK != 871 if (GNUNET_OK !=
872 GNUNET_CONFIGURATION_get_value_string (config, 872 GNUNET_CONFIGURATION_get_value_string (config,
873 "anastasis", 873 "anastasis",
874 "SERVER_SALT", 874 "PROVIDER_SALT",
875 &server_salt)) 875 &provider_salt))
876 { 876 {
877 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, 877 GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
878 "anastasis", 878 "anastasis",
879 "SERVER_SALT"); 879 "PROVIDER_SALT");
880 GNUNET_SCHEDULER_shutdown (); 880 GNUNET_SCHEDULER_shutdown ();
881 return; 881 return;
882 } 882 }
883 GNUNET_assert (GNUNET_YES == 883 GNUNET_assert (GNUNET_YES ==
884 GNUNET_CRYPTO_kdf (&AH_server_salt, 884 GNUNET_CRYPTO_kdf (&AH_provider_salt,
885 sizeof (AH_server_salt), 885 sizeof (AH_provider_salt),
886 "anastasis-server-salt", 886 "anastasis-provider-salt",
887 strlen ("anastasis-server-salt"), 887 strlen ("anastasis-provider-salt"),
888 server_salt, 888 provider_salt,
889 strlen (server_salt), 889 strlen (provider_salt),
890 NULL, 890 NULL,
891 0)); 891 0));
892 GNUNET_free (server_salt); 892 GNUNET_free (provider_salt);
893 } 893 }
894 894
895 /* setup HTTP client event loop */ 895 /* setup HTTP client event loop */
diff --git a/src/backend/anastasis-httpd.h b/src/backend/anastasis-httpd.h
index 33e0504..8cc96b2 100644
--- a/src/backend/anastasis-httpd.h
+++ b/src/backend/anastasis-httpd.h
@@ -205,9 +205,9 @@ extern char *AH_fulfillment_url;
205extern char *AH_business_name; 205extern char *AH_business_name;
206 206
207/** 207/**
208 * Our server salt. 208 * Our provider salt.
209 */ 209 */
210extern struct ANASTASIS_CRYPTO_ProviderSaltP AH_server_salt; 210extern struct ANASTASIS_CRYPTO_ProviderSaltP AH_provider_salt;
211 211
212/** 212/**
213 * Our context for making HTTP requests. 213 * Our context for making HTTP requests.
diff --git a/src/backend/anastasis-httpd_config.c b/src/backend/anastasis-httpd_config.c
index 19c1e7b..adabffb 100644
--- a/src/backend/anastasis-httpd_config.c
+++ b/src/backend/anastasis-httpd_config.c
@@ -118,8 +118,8 @@ AH_handler_config (struct AH_RequestHandler *rh,
118 &AH_truth_upload_fee), 118 &AH_truth_upload_fee),
119 TALER_JSON_pack_amount ("liability_limit", 119 TALER_JSON_pack_amount ("liability_limit",
120 &AH_insurance), 120 &AH_insurance),
121 GNUNET_JSON_pack_data_auto ("server_salt", 121 GNUNET_JSON_pack_data_auto ("provider_salt",
122 &AH_server_salt)); 122 &AH_provider_salt));
123} 123}
124 124
125 125
diff --git a/src/backend/anastasis.conf b/src/backend/anastasis.conf
index ad85be2..4721760 100644
--- a/src/backend/anastasis.conf
+++ b/src/backend/anastasis.conf
@@ -49,7 +49,7 @@ UPLOAD_LIMIT_MB = 16
49FULFILLMENT_URL = taler://fulfillment-success 49FULFILLMENT_URL = taler://fulfillment-success
50 50
51# Server salt 16 Byte 51# Server salt 16 Byte
52# SERVER_SALT = gUfO1KGOKYIFlFQg 52# PROVIDER_SALT = gUfO1KGOKYIFlFQg
53 53
54 54
55# Directory with our terms of service. 55# Directory with our terms of service.
diff --git a/src/cli/resources/00-backup.json b/src/cli/resources/00-backup.json
index 6e6c320..6aa0311 100644
--- a/src/cli/resources/00-backup.json
+++ b/src/cli/resources/00-backup.json
@@ -4,5 +4,6 @@
4 "North America", 4 "North America",
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "backup_state": "CONTINENT_SELECTING" 7 "backup_state": "CONTINENT_SELECTING",
8} \ No newline at end of file 8 "reducer_type": "backup"
9}
diff --git a/src/cli/resources/00-recovery.json b/src/cli/resources/00-recovery.json
index acff19a..e9b14f3 100644
--- a/src/cli/resources/00-recovery.json
+++ b/src/cli/resources/00-recovery.json
@@ -4,5 +4,6 @@
4 "North America", 4 "North America",
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "reducer_type": "recovery",
7 "recovery_state": "CONTINENT_SELECTING" 8 "recovery_state": "CONTINENT_SELECTING"
8} \ No newline at end of file 9}
diff --git a/src/cli/resources/01-backup.json b/src/cli/resources/01-backup.json
index 842d3af..8bd2e93 100644
--- a/src/cli/resources/01-backup.json
+++ b/src/cli/resources/01-backup.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "backup_state": "COUNTRY_SELECTING", 7 "backup_state": "COUNTRY_SELECTING",
8 "reducer_type": "backup",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
@@ -38,4 +39,4 @@
38 "currency": "KUDOS" 39 "currency": "KUDOS"
39 } 40 }
40 ] 41 ]
41} \ No newline at end of file 42}
diff --git a/src/cli/resources/01-recovery.json b/src/cli/resources/01-recovery.json
index 11aafd3..5489814 100644
--- a/src/cli/resources/01-recovery.json
+++ b/src/cli/resources/01-recovery.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "recovery_state": "COUNTRY_SELECTING", 7 "recovery_state": "COUNTRY_SELECTING",
8 "reducer_type": "recovery",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
@@ -38,4 +39,4 @@
38 "currency": "KUDOS" 39 "currency": "KUDOS"
39 } 40 }
40 ] 41 ]
41} \ No newline at end of file 42}
diff --git a/src/cli/resources/02-backup.json b/src/cli/resources/02-backup.json
index c9bba16..67df7e0 100644
--- a/src/cli/resources/02-backup.json
+++ b/src/cli/resources/02-backup.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "backup_state": "USER_ATTRIBUTES_COLLECTING", 7 "backup_state": "USER_ATTRIBUTES_COLLECTING",
8 "reducer_type": "backup",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
diff --git a/src/cli/resources/02-recovery.json b/src/cli/resources/02-recovery.json
index 79cfd6d..e77ed0c 100644
--- a/src/cli/resources/02-recovery.json
+++ b/src/cli/resources/02-recovery.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "recovery_state": "USER_ATTRIBUTES_COLLECTING", 7 "recovery_state": "USER_ATTRIBUTES_COLLECTING",
8 "reducer_type": "recovery",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
diff --git a/src/cli/resources/03-backup.json b/src/cli/resources/03-backup.json
index 4dd5368..ad9d23b 100644
--- a/src/cli/resources/03-backup.json
+++ b/src/cli/resources/03-backup.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "backup_state": "AUTHENTICATIONS_EDITING", 7 "backup_state": "AUTHENTICATIONS_EDITING",
8 "reducer_type": "backup",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
@@ -55,7 +56,7 @@
55 "currency": "TESTKUDOS", 56 "currency": "TESTKUDOS",
56 "business_name": "Data loss #1 Inc.", 57 "business_name": "Data loss #1 Inc.",
57 "storage_limit_in_megabytes": 1, 58 "storage_limit_in_megabytes": 1,
58 "salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0", 59 "provider_salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0",
59 "http_status": 200 60 "http_status": 200
60 }, 61 },
61 "http://localhost:8087/": { 62 "http://localhost:8087/": {
@@ -74,7 +75,7 @@
74 "currency": "TESTKUDOS", 75 "currency": "TESTKUDOS",
75 "business_name": "Data loss #2 Inc.", 76 "business_name": "Data loss #2 Inc.",
76 "storage_limit_in_megabytes": 1, 77 "storage_limit_in_megabytes": 1,
77 "salt": "D378FWXHJB8JHPQFQRZGGV9PWG", 78 "provider_salt": "D378FWXHJB8JHPQFQRZGGV9PWG",
78 "http_status": 200 79 "http_status": 200
79 }, 80 },
80 "http://localhost:8088/": { 81 "http://localhost:8088/": {
@@ -93,7 +94,7 @@
93 "currency": "TESTKUDOS", 94 "currency": "TESTKUDOS",
94 "business_name": "Data loss #3 Inc.", 95 "business_name": "Data loss #3 Inc.",
95 "storage_limit_in_megabytes": 1, 96 "storage_limit_in_megabytes": 1,
96 "salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR", 97 "provider_salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR",
97 "http_status": 200 98 "http_status": 200
98 }, 99 },
99 "http://localhost:8089/": { 100 "http://localhost:8089/": {
@@ -112,7 +113,7 @@
112 "currency": "TESTKUDOS", 113 "currency": "TESTKUDOS",
113 "business_name": "Data loss #4 Inc.", 114 "business_name": "Data loss #4 Inc.",
114 "storage_limit_in_megabytes": 1, 115 "storage_limit_in_megabytes": 1,
115 "salt": "PN0VJF6KDSBYN40SGRCEXPB07M", 116 "provider_salt": "PN0VJF6KDSBYN40SGRCEXPB07M",
116 "http_status": 200 117 "http_status": 200
117 } 118 }
118 }, 119 },
diff --git a/src/cli/resources/04-backup.json b/src/cli/resources/04-backup.json
index db51f5a..34cabfd 100644
--- a/src/cli/resources/04-backup.json
+++ b/src/cli/resources/04-backup.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "backup_state": "AUTHENTICATIONS_EDITING", 7 "backup_state": "AUTHENTICATIONS_EDITING",
8 "reducer_type": "backup",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
@@ -55,7 +56,7 @@
55 "currency": "TESTKUDOS", 56 "currency": "TESTKUDOS",
56 "business_name": "Data loss #1 Inc.", 57 "business_name": "Data loss #1 Inc.",
57 "storage_limit_in_megabytes": 1, 58 "storage_limit_in_megabytes": 1,
58 "salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0", 59 "provider_salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0",
59 "http_status": 200 60 "http_status": 200
60 }, 61 },
61 "http://localhost:8087/": { 62 "http://localhost:8087/": {
@@ -74,7 +75,7 @@
74 "currency": "TESTKUDOS", 75 "currency": "TESTKUDOS",
75 "business_name": "Data loss #2 Inc.", 76 "business_name": "Data loss #2 Inc.",
76 "storage_limit_in_megabytes": 1, 77 "storage_limit_in_megabytes": 1,
77 "salt": "D378FWXHJB8JHPQFQRZGGV9PWG", 78 "provider_salt": "D378FWXHJB8JHPQFQRZGGV9PWG",
78 "http_status": 200 79 "http_status": 200
79 }, 80 },
80 "http://localhost:8088/": { 81 "http://localhost:8088/": {
@@ -93,7 +94,7 @@
93 "currency": "TESTKUDOS", 94 "currency": "TESTKUDOS",
94 "business_name": "Data loss #3 Inc.", 95 "business_name": "Data loss #3 Inc.",
95 "storage_limit_in_megabytes": 1, 96 "storage_limit_in_megabytes": 1,
96 "salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR", 97 "provider_salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR",
97 "http_status": 200 98 "http_status": 200
98 }, 99 },
99 "http://localhost:8089/": { 100 "http://localhost:8089/": {
@@ -112,7 +113,7 @@
112 "currency": "TESTKUDOS", 113 "currency": "TESTKUDOS",
113 "business_name": "Data loss #4 Inc.", 114 "business_name": "Data loss #4 Inc.",
114 "storage_limit_in_megabytes": 1, 115 "storage_limit_in_megabytes": 1,
115 "salt": "PN0VJF6KDSBYN40SGRCEXPB07M", 116 "provider_salt": "PN0VJF6KDSBYN40SGRCEXPB07M",
116 "http_status": 200 117 "http_status": 200
117 } 118 }
118 }, 119 },
diff --git a/src/cli/resources/05-backup.json b/src/cli/resources/05-backup.json
index 143d9e3..bb988be 100644
--- a/src/cli/resources/05-backup.json
+++ b/src/cli/resources/05-backup.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "backup_state": "POLICIES_REVIEWING", 7 "backup_state": "POLICIES_REVIEWING",
8 "reducer_type": "backup",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
@@ -55,7 +56,7 @@
55 "currency": "TESTKUDOS", 56 "currency": "TESTKUDOS",
56 "business_name": "Data loss #1 Inc.", 57 "business_name": "Data loss #1 Inc.",
57 "storage_limit_in_megabytes": 1, 58 "storage_limit_in_megabytes": 1,
58 "salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0", 59 "provider_salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0",
59 "http_status": 200 60 "http_status": 200
60 }, 61 },
61 "http://localhost:8087/": { 62 "http://localhost:8087/": {
@@ -74,7 +75,7 @@
74 "currency": "TESTKUDOS", 75 "currency": "TESTKUDOS",
75 "business_name": "Data loss #2 Inc.", 76 "business_name": "Data loss #2 Inc.",
76 "storage_limit_in_megabytes": 1, 77 "storage_limit_in_megabytes": 1,
77 "salt": "D378FWXHJB8JHPQFQRZGGV9PWG", 78 "provider_salt": "D378FWXHJB8JHPQFQRZGGV9PWG",
78 "http_status": 200 79 "http_status": 200
79 }, 80 },
80 "http://localhost:8088/": { 81 "http://localhost:8088/": {
@@ -93,7 +94,7 @@
93 "currency": "TESTKUDOS", 94 "currency": "TESTKUDOS",
94 "business_name": "Data loss #3 Inc.", 95 "business_name": "Data loss #3 Inc.",
95 "storage_limit_in_megabytes": 1, 96 "storage_limit_in_megabytes": 1,
96 "salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR", 97 "provider_salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR",
97 "http_status": 200 98 "http_status": 200
98 }, 99 },
99 "http://localhost:8089/": { 100 "http://localhost:8089/": {
@@ -112,7 +113,7 @@
112 "currency": "TESTKUDOS", 113 "currency": "TESTKUDOS",
113 "business_name": "Data loss #4 Inc.", 114 "business_name": "Data loss #4 Inc.",
114 "storage_limit_in_megabytes": 1, 115 "storage_limit_in_megabytes": 1,
115 "salt": "PN0VJF6KDSBYN40SGRCEXPB07M", 116 "provider_salt": "PN0VJF6KDSBYN40SGRCEXPB07M",
116 "http_status": 200 117 "http_status": 200
117 } 118 }
118 }, 119 },
diff --git a/src/cli/resources/06-backup.json b/src/cli/resources/06-backup.json
index 9944a17..23a8927 100644
--- a/src/cli/resources/06-backup.json
+++ b/src/cli/resources/06-backup.json
@@ -5,6 +5,7 @@
5 "Testcontinent" 5 "Testcontinent"
6 ], 6 ],
7 "backup_state": "SECRET_EDITING", 7 "backup_state": "SECRET_EDITING",
8 "reducer_type": "backup",
8 "selected_continent": "Testcontinent", 9 "selected_continent": "Testcontinent",
9 "countries": [ 10 "countries": [
10 { 11 {
@@ -55,7 +56,7 @@
55 "currency": "TESTKUDOS", 56 "currency": "TESTKUDOS",
56 "business_name": "Data loss #1 Inc.", 57 "business_name": "Data loss #1 Inc.",
57 "storage_limit_in_megabytes": 1, 58 "storage_limit_in_megabytes": 1,
58 "salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0", 59 "provider_salt": "F0HEYJQW81ZAZ3VYMZHFG8T1Z0",
59 "http_status": 200 60 "http_status": 200
60 }, 61 },
61 "http://localhost:8087/": { 62 "http://localhost:8087/": {
@@ -74,7 +75,7 @@
74 "currency": "TESTKUDOS", 75 "currency": "TESTKUDOS",
75 "business_name": "Data loss #2 Inc.", 76 "business_name": "Data loss #2 Inc.",
76 "storage_limit_in_megabytes": 1, 77 "storage_limit_in_megabytes": 1,
77 "salt": "D378FWXHJB8JHPQFQRZGGV9PWG", 78 "provider_salt": "D378FWXHJB8JHPQFQRZGGV9PWG",
78 "http_status": 200 79 "http_status": 200
79 }, 80 },
80 "http://localhost:8088/": { 81 "http://localhost:8088/": {
@@ -93,7 +94,7 @@
93 "currency": "TESTKUDOS", 94 "currency": "TESTKUDOS",
94 "business_name": "Data loss #3 Inc.", 95 "business_name": "Data loss #3 Inc.",
95 "storage_limit_in_megabytes": 1, 96 "storage_limit_in_megabytes": 1,
96 "salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR", 97 "provider_salt": "7W9W4A4TTWSWRPJ76RNDPJHSPR",
97 "http_status": 200 98 "http_status": 200
98 }, 99 },
99 "http://localhost:8089/": { 100 "http://localhost:8089/": {
@@ -112,7 +113,7 @@
112 "currency": "TESTKUDOS", 113 "currency": "TESTKUDOS",
113 "business_name": "Data loss #4 Inc.", 114 "business_name": "Data loss #4 Inc.",
114 "storage_limit_in_megabytes": 1, 115 "storage_limit_in_megabytes": 1,
115 "salt": "PN0VJF6KDSBYN40SGRCEXPB07M", 116 "provider_salt": "PN0VJF6KDSBYN40SGRCEXPB07M",
116 "http_status": 200 117 "http_status": 200
117 } 118 }
118 }, 119 },
diff --git a/src/cli/test_anastasis_reducer_1.conf b/src/cli/test_anastasis_reducer_1.conf
index 3a05690..2a3a0e4 100644
--- a/src/cli/test_anastasis_reducer_1.conf
+++ b/src/cli/test_anastasis_reducer_1.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8086 5PORT = 8086
6SERVER_SALT = AUfO1KGOKYIFlFQg 6PROVIDER_SALT = AUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #1 Inc." 7BUSINESS_NAME = "Data loss #1 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/cli/test_anastasis_reducer_2.conf b/src/cli/test_anastasis_reducer_2.conf
index 4eef5f0..71b133f 100644
--- a/src/cli/test_anastasis_reducer_2.conf
+++ b/src/cli/test_anastasis_reducer_2.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8087 5PORT = 8087
6SERVER_SALT = BUfO1KGOKYIFlFQg 6PROVIDER_SALT = BUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #2 Inc." 7BUSINESS_NAME = "Data loss #2 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/cli/test_anastasis_reducer_3.conf b/src/cli/test_anastasis_reducer_3.conf
index 08f4700..47233ff 100644
--- a/src/cli/test_anastasis_reducer_3.conf
+++ b/src/cli/test_anastasis_reducer_3.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8088 5PORT = 8088
6SERVER_SALT = CUfO1KGOKYIFlFQg 6PROVIDER_SALT = CUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #3 Inc." 7BUSINESS_NAME = "Data loss #3 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/cli/test_anastasis_reducer_4.conf b/src/cli/test_anastasis_reducer_4.conf
index dee90e3..f515a78 100644
--- a/src/cli/test_anastasis_reducer_4.conf
+++ b/src/cli/test_anastasis_reducer_4.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8089 5PORT = 8089
6SERVER_SALT = DUfO1KGOKYIFlFQg 6PROVIDER_SALT = DUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #4 Inc." 7BUSINESS_NAME = "Data loss #4 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/cli/test_anastasis_reducer_free_1.conf b/src/cli/test_anastasis_reducer_free_1.conf
index 344c36a..0e7ad9a 100644
--- a/src/cli/test_anastasis_reducer_free_1.conf
+++ b/src/cli/test_anastasis_reducer_free_1.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8086 5PORT = 8086
6SERVER_SALT = AUfO1KGOKYIFlFQg 6PROVIDER_SALT = AUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #1 Inc." 7BUSINESS_NAME = "Data loss #1 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/cli/test_anastasis_reducer_free_2.conf b/src/cli/test_anastasis_reducer_free_2.conf
index ae65562..a628ff4 100644
--- a/src/cli/test_anastasis_reducer_free_2.conf
+++ b/src/cli/test_anastasis_reducer_free_2.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8087 5PORT = 8087
6SERVER_SALT = BUfO1KGOKYIFlFQg 6PROVIDER_SALT = BUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #2 Inc." 7BUSINESS_NAME = "Data loss #2 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/cli/test_anastasis_reducer_free_3.conf b/src/cli/test_anastasis_reducer_free_3.conf
index eca894f..adbe392 100644
--- a/src/cli/test_anastasis_reducer_free_3.conf
+++ b/src/cli/test_anastasis_reducer_free_3.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8088 5PORT = 8088
6SERVER_SALT = CUfO1KGOKYIFlFQg 6PROVIDER_SALT = CUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #3 Inc." 7BUSINESS_NAME = "Data loss #3 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/cli/test_anastasis_reducer_free_4.conf b/src/cli/test_anastasis_reducer_free_4.conf
index d47e5c0..cd0c701 100644
--- a/src/cli/test_anastasis_reducer_free_4.conf
+++ b/src/cli/test_anastasis_reducer_free_4.conf
@@ -3,7 +3,7 @@
3 3
4[anastasis] 4[anastasis]
5PORT = 8089 5PORT = 8089
6SERVER_SALT = DUfO1KGOKYIFlFQg 6PROVIDER_SALT = DUfO1KGOKYIFlFQg
7BUSINESS_NAME = "Data loss #4 Inc." 7BUSINESS_NAME = "Data loss #4 Inc."
8 8
9[stasis-postgres] 9[stasis-postgres]
diff --git a/src/include/anastasis_service.h b/src/include/anastasis_service.h
index d439ca5..5e01aa5 100644
--- a/src/include/anastasis_service.h
+++ b/src/include/anastasis_service.h
@@ -98,9 +98,9 @@ struct ANASTASIS_Config
98 struct TALER_Amount liability_limit; 98 struct TALER_Amount liability_limit;
99 99
100 /** 100 /**
101 * Server salt. 101 * Provider salt.
102 */ 102 */
103 struct ANASTASIS_CRYPTO_ProviderSaltP salt; 103 struct ANASTASIS_CRYPTO_ProviderSaltP provider_salt;
104 104
105}; 105};
106 106
diff --git a/src/include/anastasis_testing_lib.h b/src/include/anastasis_testing_lib.h
index 0066939..b5036ff 100644
--- a/src/include/anastasis_testing_lib.h
+++ b/src/include/anastasis_testing_lib.h
@@ -129,7 +129,7 @@
129 op (hash, const struct GNUNET_HashCode) \ 129 op (hash, const struct GNUNET_HashCode) \
130 op (truth, const struct ANASTASIS_Truth *) \ 130 op (truth, const struct ANASTASIS_Truth *) \
131 op (policy, const struct ANASTASIS_Policy *) \ 131 op (policy, const struct ANASTASIS_Policy *) \
132 op (salt, const struct ANASTASIS_CRYPTO_ProviderSaltP) \ 132 op (provider_salt, const struct ANASTASIS_CRYPTO_ProviderSaltP) \
133 op (core_secret, const void *) \ 133 op (core_secret, const void *) \
134 op (truth_key, const struct ANASTASIS_CRYPTO_TruthKeyP) \ 134 op (truth_key, const struct ANASTASIS_CRYPTO_TruthKeyP) \
135 op (account_pub, const struct ANASTASIS_CRYPTO_AccountPublicKeyP) \ 135 op (account_pub, const struct ANASTASIS_CRYPTO_AccountPublicKeyP) \
diff --git a/src/lib/anastasis_backup.c b/src/lib/anastasis_backup.c
index 466dbe8..24d9643 100644
--- a/src/lib/anastasis_backup.c
+++ b/src/lib/anastasis_backup.c
@@ -55,7 +55,7 @@ struct ANASTASIS_Truth
55 /** 55 /**
56 * Server salt used to derive hash from security answer 56 * Server salt used to derive hash from security answer
57 */ 57 */
58 struct ANASTASIS_CRYPTO_QuestionSaltP salt; 58 struct ANASTASIS_CRYPTO_QuestionSaltP question_salt;
59 59
60 /** 60 /**
61 * Url of the server 61 * Url of the server
@@ -107,8 +107,8 @@ ANASTASIS_truth_from_json (const json_t *json)
107 &t->key_share), 107 &t->key_share),
108 GNUNET_JSON_spec_fixed_auto ("truth_key", 108 GNUNET_JSON_spec_fixed_auto ("truth_key",
109 &t->truth_key), 109 &t->truth_key),
110 GNUNET_JSON_spec_fixed_auto ("salt", 110 GNUNET_JSON_spec_fixed_auto ("question_salt",
111 &t->salt), 111 &t->question_salt),
112 GNUNET_JSON_spec_fixed_auto ("provider_salt", 112 GNUNET_JSON_spec_fixed_auto ("provider_salt",
113 &t->provider_salt), 113 &t->provider_salt),
114 GNUNET_JSON_spec_end () 114 GNUNET_JSON_spec_end ()
@@ -142,8 +142,8 @@ ANASTASIS_truth_to_json (const struct ANASTASIS_Truth *t)
142 &t->key_share), 142 &t->key_share),
143 GNUNET_JSON_pack_data_auto ("truth_key", 143 GNUNET_JSON_pack_data_auto ("truth_key",
144 &t->truth_key), 144 &t->truth_key),
145 GNUNET_JSON_pack_data_auto ("salt", 145 GNUNET_JSON_pack_data_auto ("question_salt",
146 &t->salt), 146 &t->question_salt),
147 GNUNET_JSON_pack_data_auto ("nonce", 147 GNUNET_JSON_pack_data_auto ("nonce",
148 &t->nonce), 148 &t->nonce),
149 GNUNET_JSON_pack_data_auto ("provider_salt", 149 GNUNET_JSON_pack_data_auto ("provider_salt",
@@ -252,7 +252,7 @@ ANASTASIS_truth_upload3 (struct GNUNET_CURL_Context *ctx,
252 truth_data_size); 252 truth_data_size);
253 ANASTASIS_CRYPTO_secure_answer_hash (answer, 253 ANASTASIS_CRYPTO_secure_answer_hash (answer,
254 &t->uuid, 254 &t->uuid,
255 &t->salt, 255 &t->question_salt,
256 &nt); 256 &nt);
257 ANASTASIS_CRYPTO_keyshare_encrypt (&t->key_share, 257 ANASTASIS_CRYPTO_keyshare_encrypt (&t->key_share,
258 &tu->id, 258 &tu->id,
@@ -314,7 +314,7 @@ ANASTASIS_truth_upload2 (
314 struct GNUNET_TIME_Relative pay_timeout, 314 struct GNUNET_TIME_Relative pay_timeout,
315 const struct ANASTASIS_CRYPTO_NonceP *nonce, 315 const struct ANASTASIS_CRYPTO_NonceP *nonce,
316 const struct ANASTASIS_CRYPTO_TruthUUIDP *uuid, 316 const struct ANASTASIS_CRYPTO_TruthUUIDP *uuid,
317 const struct ANASTASIS_CRYPTO_QuestionSaltP *salt, 317 const struct ANASTASIS_CRYPTO_QuestionSaltP *question_salt,
318 const struct ANASTASIS_CRYPTO_TruthKeyP *truth_key, 318 const struct ANASTASIS_CRYPTO_TruthKeyP *truth_key,
319 const struct ANASTASIS_CRYPTO_KeyShareP *key_share, 319 const struct ANASTASIS_CRYPTO_KeyShareP *key_share,
320 ANASTASIS_TruthCallback tc, 320 ANASTASIS_TruthCallback tc,
@@ -332,7 +332,7 @@ ANASTASIS_truth_upload2 (
332 ? GNUNET_strdup (mime_type) 332 ? GNUNET_strdup (mime_type)
333 : NULL; 333 : NULL;
334 t->provider_salt = *provider_salt; 334 t->provider_salt = *provider_salt;
335 t->salt = *salt; 335 t->question_salt = *question_salt;
336 t->nonce = *nonce; 336 t->nonce = *nonce;
337 t->uuid = *uuid; 337 t->uuid = *uuid;
338 t->truth_key = *truth_key; 338 t->truth_key = *truth_key;
@@ -443,7 +443,7 @@ struct ANASTASIS_Policy
443 /** 443 /**
444 * Salt used to encrypt the master key 444 * Salt used to encrypt the master key
445 */ 445 */
446 struct ANASTASIS_CRYPTO_MasterSaltP salt; 446 struct ANASTASIS_CRYPTO_MasterSaltP master_salt;
447 447
448 /** 448 /**
449 * Array of truths 449 * Array of truths
@@ -487,8 +487,8 @@ ANASTASIS_policy_create (const struct ANASTASIS_Truth *truths[],
487 487
488 p = GNUNET_new (struct ANASTASIS_Policy); 488 p = GNUNET_new (struct ANASTASIS_Policy);
489 GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE, 489 GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
490 &p->salt, 490 &p->master_salt,
491 sizeof (p->salt)); 491 sizeof (p->master_salt));
492 { 492 {
493 struct ANASTASIS_CRYPTO_KeyShareP key_shares[truths_len]; 493 struct ANASTASIS_CRYPTO_KeyShareP key_shares[truths_len];
494 494
@@ -496,7 +496,7 @@ ANASTASIS_policy_create (const struct ANASTASIS_Truth *truths[],
496 key_shares[i] = truths[i]->key_share; 496 key_shares[i] = truths[i]->key_share;
497 ANASTASIS_CRYPTO_policy_key_derive (key_shares, 497 ANASTASIS_CRYPTO_policy_key_derive (key_shares,
498 truths_len, 498 truths_len,
499 &p->salt, 499 &p->master_salt,
500 &p->policy_key); 500 &p->policy_key);
501 } 501 }
502 p->truths = GNUNET_new_array (truths_len, 502 p->truths = GNUNET_new_array (truths_len,
@@ -542,7 +542,7 @@ struct PolicyStoreState
542 * Server salt. Points into a truth object from which we got the 542 * Server salt. Points into a truth object from which we got the
543 * salt. 543 * salt.
544 */ 544 */
545 struct ANASTASIS_CRYPTO_ProviderSaltP server_salt; 545 struct ANASTASIS_CRYPTO_ProviderSaltP provider_salt;
546 546
547 /** 547 /**
548 * The /policy POST operation handle. 548 * The /policy POST operation handle.
@@ -785,8 +785,8 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
785 [k]), 785 [k]),
786 GNUNET_JSON_pack_array_steal ("uuids", 786 GNUNET_JSON_pack_array_steal ("uuids",
787 uuids), 787 uuids),
788 GNUNET_JSON_pack_data_auto ("salt", 788 GNUNET_JSON_pack_data_auto ("master_salt",
789 &policy->salt)))); 789 &policy->master_salt))));
790 } 790 }
791 791
792 esc_methods = json_array (); 792 esc_methods = json_array ();
@@ -830,8 +830,8 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
830 pt->instructions), 830 pt->instructions),
831 GNUNET_JSON_pack_data_auto ("truth_key", 831 GNUNET_JSON_pack_data_auto ("truth_key",
832 &pt->truth_key), 832 &pt->truth_key),
833 GNUNET_JSON_pack_data_auto ("truth_salt", 833 GNUNET_JSON_pack_data_auto ("question_salt",
834 &pt->salt), 834 &pt->question_salt),
835 GNUNET_JSON_pack_data_auto ("provider_salt", 835 GNUNET_JSON_pack_data_auto ("provider_salt",
836 &pt->provider_salt), 836 &pt->provider_salt),
837 GNUNET_JSON_pack_string ("escrow_type", 837 GNUNET_JSON_pack_string ("escrow_type",
@@ -915,10 +915,10 @@ ANASTASIS_secret_share (struct GNUNET_CURL_Context *ctx,
915 915
916 pss->ss = ss; 916 pss->ss = ss;
917 pss->anastasis_url = GNUNET_strdup (providers[l].provider_url); 917 pss->anastasis_url = GNUNET_strdup (providers[l].provider_url);
918 pss->server_salt = providers[l].provider_salt; 918 pss->provider_salt = providers[l].provider_salt;
919 pss->payment_secret = providers[l].payment_secret; 919 pss->payment_secret = providers[l].payment_secret;
920 ANASTASIS_CRYPTO_user_identifier_derive (id_data, 920 ANASTASIS_CRYPTO_user_identifier_derive (id_data,
921 &pss->server_salt, 921 &pss->provider_salt,
922 &pss->id); 922 &pss->id);
923 ANASTASIS_CRYPTO_recovery_metadata_encrypt (&pss->id, 923 ANASTASIS_CRYPTO_recovery_metadata_encrypt (&pss->id,
924 meta, 924 meta,
diff --git a/src/lib/anastasis_recovery.c b/src/lib/anastasis_recovery.c
index c425398..95c131d 100644
--- a/src/lib/anastasis_recovery.c
+++ b/src/lib/anastasis_recovery.c
@@ -47,7 +47,7 @@ struct ANASTASIS_Challenge
47 /** 47 /**
48 * Salt; used to derive hash from security question answers. 48 * Salt; used to derive hash from security question answers.
49 */ 49 */
50 struct ANASTASIS_CRYPTO_QuestionSaltP salt; 50 struct ANASTASIS_CRYPTO_QuestionSaltP question_salt;
51 51
52 /** 52 /**
53 * Provider salt; used to derive our key material from our identity 53 * Provider salt; used to derive our key material from our identity
@@ -146,7 +146,7 @@ struct DecryptionPolicy
146 /** 146 /**
147 * Salt used to decrypt master key. 147 * Salt used to decrypt master key.
148 */ 148 */
149 struct ANASTASIS_CRYPTO_MasterSaltP salt; 149 struct ANASTASIS_CRYPTO_MasterSaltP master_salt;
150 150
151}; 151};
152 152
@@ -437,7 +437,7 @@ truth_solve_cb (void *cls,
437 key_shares[l] = recovery->solved_challenges[m]->key_share; 437 key_shares[l] = recovery->solved_challenges[m]->key_share;
438 ANASTASIS_CRYPTO_policy_key_derive (key_shares, 438 ANASTASIS_CRYPTO_policy_key_derive (key_shares,
439 rdps->pub_details.challenges_length, 439 rdps->pub_details.challenges_length,
440 &rdps->salt, 440 &rdps->master_salt,
441 &policy_key); 441 &policy_key);
442 GNUNET_assert (NULL != rdps->emk); 442 GNUNET_assert (NULL != rdps->emk);
443 GNUNET_assert (rdps->emk_size > 0); 443 GNUNET_assert (rdps->emk_size > 0);
@@ -552,7 +552,7 @@ ANASTASIS_challenge_answer (
552 c->answer = GNUNET_strdup (answer_str); 552 c->answer = GNUNET_strdup (answer_str);
553 ANASTASIS_CRYPTO_secure_answer_hash (answer_str, 553 ANASTASIS_CRYPTO_secure_answer_hash (answer_str,
554 &c->ci.uuid, 554 &c->ci.uuid,
555 &c->salt, 555 &c->question_salt,
556 &hashed_answer); 556 &hashed_answer);
557 return ANASTASIS_challenge_answer3 (c, 557 return ANASTASIS_challenge_answer3 (c,
558 psp, 558 psp,
@@ -824,8 +824,8 @@ policy_lookup_cb (void *cls,
824 &instructions), 824 &instructions),
825 GNUNET_JSON_spec_fixed_auto ("truth_key", 825 GNUNET_JSON_spec_fixed_auto ("truth_key",
826 &cs->truth_key), 826 &cs->truth_key),
827 GNUNET_JSON_spec_fixed_auto ("truth_salt", 827 GNUNET_JSON_spec_fixed_auto ("question_salt",
828 &cs->salt), 828 &cs->question_salt),
829 GNUNET_JSON_spec_fixed_auto ("provider_salt", 829 GNUNET_JSON_spec_fixed_auto ("provider_salt",
830 &cs->provider_salt), 830 &cs->provider_salt),
831 GNUNET_JSON_spec_string ("escrow_type", 831 GNUNET_JSON_spec_string ("escrow_type",
@@ -871,8 +871,8 @@ policy_lookup_cb (void *cls,
871 GNUNET_JSON_spec_varsize ("master_key", 871 GNUNET_JSON_spec_varsize ("master_key",
872 &dp->emk, 872 &dp->emk,
873 &dp->emk_size), 873 &dp->emk_size),
874 GNUNET_JSON_spec_fixed_auto ("salt", 874 GNUNET_JSON_spec_fixed_auto ("master_salt",
875 &dp->salt), 875 &dp->master_salt),
876 GNUNET_JSON_spec_json ("uuids", 876 GNUNET_JSON_spec_json ("uuids",
877 &uuids), 877 &uuids),
878 GNUNET_JSON_spec_end () 878 GNUNET_JSON_spec_end ()
@@ -1048,8 +1048,8 @@ ANASTASIS_recovery_serialize (const struct ANASTASIS_Recovery *r)
1048 GNUNET_JSON_pack_data_varsize ("emk", 1048 GNUNET_JSON_pack_data_varsize ("emk",
1049 dp->emk, 1049 dp->emk,
1050 dp->emk_size), 1050 dp->emk_size),
1051 GNUNET_JSON_pack_data_auto ("salt", 1051 GNUNET_JSON_pack_data_auto ("master_salt",
1052 &dp->salt), 1052 &dp->master_salt),
1053 GNUNET_JSON_pack_array_steal ("challenges", 1053 GNUNET_JSON_pack_array_steal ("challenges",
1054 c_arr)); 1054 c_arr));
1055 GNUNET_assert (0 == 1055 GNUNET_assert (0 ==
@@ -1070,8 +1070,8 @@ ANASTASIS_recovery_serialize (const struct ANASTASIS_Recovery *r)
1070 ANASTASIS_CRYPTO_uuid2s (&c->ci.uuid)), 1070 ANASTASIS_CRYPTO_uuid2s (&c->ci.uuid)),
1071 GNUNET_JSON_pack_data_auto ("truth_key", 1071 GNUNET_JSON_pack_data_auto ("truth_key",
1072 &c->truth_key), 1072 &c->truth_key),
1073 GNUNET_JSON_pack_data_auto ("salt", 1073 GNUNET_JSON_pack_data_auto ("question_salt",
1074 &c->salt), 1074 &c->question_salt),
1075 GNUNET_JSON_pack_data_auto ("provider_salt", 1075 GNUNET_JSON_pack_data_auto ("provider_salt",
1076 &c->provider_salt), 1076 &c->provider_salt),
1077 GNUNET_JSON_pack_allow_null ( 1077 GNUNET_JSON_pack_allow_null (
@@ -1159,8 +1159,8 @@ parse_cs_array (struct ANASTASIS_Recovery *r,
1159 &instructions), 1159 &instructions),
1160 GNUNET_JSON_spec_fixed_auto ("truth_key", 1160 GNUNET_JSON_spec_fixed_auto ("truth_key",
1161 &c->truth_key), 1161 &c->truth_key),
1162 GNUNET_JSON_spec_fixed_auto ("salt", 1162 GNUNET_JSON_spec_fixed_auto ("question_salt",
1163 &c->salt), 1163 &c->question_salt),
1164 GNUNET_JSON_spec_fixed_auto ("provider_salt", 1164 GNUNET_JSON_spec_fixed_auto ("provider_salt",
1165 &c->provider_salt), 1165 &c->provider_salt),
1166 GNUNET_JSON_spec_string ("type", 1166 GNUNET_JSON_spec_string ("type",
@@ -1235,8 +1235,8 @@ parse_dps_array (struct ANASTASIS_Recovery *r,
1235 GNUNET_JSON_spec_varsize ("emk", 1235 GNUNET_JSON_spec_varsize ("emk",
1236 &dp->emk, 1236 &dp->emk,
1237 &dp->emk_size), 1237 &dp->emk_size),
1238 GNUNET_JSON_spec_fixed_auto ("salt", 1238 GNUNET_JSON_spec_fixed_auto ("master_salt",
1239 &dp->salt), 1239 &dp->master_salt),
1240 GNUNET_JSON_spec_json ("challenges", 1240 GNUNET_JSON_spec_json ("challenges",
1241 &challenges), 1241 &challenges),
1242 GNUNET_JSON_spec_end () 1242 GNUNET_JSON_spec_end ()
diff --git a/src/reducer/anastasis_api_recovery_redux.c b/src/reducer/anastasis_api_recovery_redux.c
index 21b1f51..d0c3f2d 100644
--- a/src/reducer/anastasis_api_recovery_redux.c
+++ b/src/reducer/anastasis_api_recovery_redux.c
@@ -2216,7 +2216,7 @@ sync_providers (json_t *state,
2216 &provider_url), 2216 &provider_url),
2217 GNUNET_JSON_spec_end () 2217 GNUNET_JSON_spec_end ()
2218 }; 2218 };
2219 struct ANASTASIS_CRYPTO_ProviderSaltP salt; 2219 struct ANASTASIS_CRYPTO_ProviderSaltP provider_salt;
2220 struct SyncEntry *se; 2220 struct SyncEntry *se;
2221 2221
2222 if (GNUNET_OK != 2222 if (GNUNET_OK !=
@@ -2235,7 +2235,7 @@ sync_providers (json_t *state,
2235 if (GNUNET_OK == 2235 if (GNUNET_OK ==
2236 ANASTASIS_reducer_lookup_salt (state, 2236 ANASTASIS_reducer_lookup_salt (state,
2237 provider_url, 2237 provider_url,
2238 &salt)) 2238 &provider_salt))
2239 continue; /* provider already ready */ 2239 continue; /* provider already ready */
2240 se = GNUNET_new (struct SyncEntry); 2240 se = GNUNET_new (struct SyncEntry);
2241 se->ms = ms; 2241 se->ms = ms;
@@ -2302,13 +2302,13 @@ poll_providers (json_t *state,
2302 ms->cb_cls = cb_cls; 2302 ms->cb_cls = cb_cls;
2303 json_object_foreach (ap, url, obj) 2303 json_object_foreach (ap, url, obj)
2304 { 2304 {
2305 struct ANASTASIS_CRYPTO_ProviderSaltP salt; 2305 struct ANASTASIS_CRYPTO_ProviderSaltP provider_salt;
2306 struct SyncEntry *se; 2306 struct SyncEntry *se;
2307 2307
2308 if (GNUNET_OK == 2308 if (GNUNET_OK ==
2309 ANASTASIS_reducer_lookup_salt (state, 2309 ANASTASIS_reducer_lookup_salt (state,
2310 url, 2310 url,
2311 &salt)) 2311 &provider_salt))
2312 continue; 2312 continue;
2313 se = GNUNET_new (struct SyncEntry); 2313 se = GNUNET_new (struct SyncEntry);
2314 se->ms = ms; 2314 se->ms = ms;
@@ -2640,10 +2640,10 @@ done_secret_selecting (json_t *state,
2640 &pa), 2640 &pa),
2641 GNUNET_JSON_spec_end () 2641 GNUNET_JSON_spec_end ()
2642 }; 2642 };
2643 struct ANASTASIS_CRYPTO_ProviderSaltP salt; 2643 struct ANASTASIS_CRYPTO_ProviderSaltP provider_salt;
2644 struct GNUNET_JSON_Specification pspec[] = { 2644 struct GNUNET_JSON_Specification pspec[] = {
2645 GNUNET_JSON_spec_fixed_auto ("salt", 2645 GNUNET_JSON_spec_fixed_auto ("provider_salt",
2646 &salt), 2646 &provider_salt),
2647 GNUNET_JSON_spec_end () 2647 GNUNET_JSON_spec_end ()
2648 }; 2648 };
2649 json_t *p_cfg; 2649 json_t *p_cfg;
@@ -2751,7 +2751,7 @@ done_secret_selecting (json_t *state,
2751 id_data, 2751 id_data,
2752 version, 2752 version,
2753 pd->backend_url, 2753 pd->backend_url,
2754 &salt, 2754 &provider_salt,
2755 &policy_lookup_cb, 2755 &policy_lookup_cb,
2756 pd, 2756 pd,
2757 &core_early_secret_cb, 2757 &core_early_secret_cb,
diff --git a/src/reducer/anastasis_api_redux.c b/src/reducer/anastasis_api_redux.c
index 58ca0fb..1dba576 100644
--- a/src/reducer/anastasis_api_redux.c
+++ b/src/reducer/anastasis_api_redux.c
@@ -188,9 +188,9 @@ struct ConfigRequest
188 struct TALER_Amount liability_limit; 188 struct TALER_Amount liability_limit;
189 189
190 /** 190 /**
191 * Server salt. 191 * Provider salt.
192 */ 192 */
193 struct ANASTASIS_CRYPTO_ProviderSaltP salt; 193 struct ANASTASIS_CRYPTO_ProviderSaltP provider_salt;
194 194
195 /** 195 /**
196 * Task to timeout /config requests. 196 * Task to timeout /config requests.
@@ -539,8 +539,8 @@ notify_waiting (struct ConfigRequest *cr)
539 cr->business_name), 539 cr->business_name),
540 GNUNET_JSON_pack_uint64 ("storage_limit_in_megabytes", 540 GNUNET_JSON_pack_uint64 ("storage_limit_in_megabytes",
541 cr->storage_limit_in_megabytes), 541 cr->storage_limit_in_megabytes),
542 GNUNET_JSON_pack_data_auto ("salt", 542 GNUNET_JSON_pack_data_auto ("provider_salt",
543 &cr->salt), 543 &cr->provider_salt),
544 GNUNET_JSON_pack_uint64 ("http_status", 544 GNUNET_JSON_pack_uint64 ("http_status",
545 cr->http_status)); 545 cr->http_status));
546 } 546 }
@@ -617,7 +617,7 @@ config_cb (void *cls,
617 cr->annual_fee = acfg->annual_fee; 617 cr->annual_fee = acfg->annual_fee;
618 cr->truth_upload_fee = acfg->truth_upload_fee; 618 cr->truth_upload_fee = acfg->truth_upload_fee;
619 cr->liability_limit = acfg->liability_limit; 619 cr->liability_limit = acfg->liability_limit;
620 cr->salt = acfg->salt; 620 cr->provider_salt = acfg->provider_salt;
621 } 621 }
622 } 622 }
623 notify_waiting (cr); 623 notify_waiting (cr);
@@ -2013,17 +2013,18 @@ ANASTASIS_REDUX_load_continents_ ()
2013 2013
2014 2014
2015/** 2015/**
2016 * Lookup @a salt of @a provider_url in @a state. 2016 * Lookup @a provider_salt of @a provider_url in @a state.
2017 * 2017 *
2018 * @param state the state to inspect 2018 * @param state the state to inspect
2019 * @param provider_url provider to look into 2019 * @param provider_url provider to look into
2020 * @param[out] salt value to extract 2020 * @param[out] provider_salt value to extract
2021 * @return #GNUNET_OK on success 2021 * @return #GNUNET_OK on success
2022 */ 2022 */
2023enum GNUNET_GenericReturnValue 2023enum GNUNET_GenericReturnValue
2024ANASTASIS_reducer_lookup_salt (const json_t *state, 2024ANASTASIS_reducer_lookup_salt (
2025 const char *provider_url, 2025 const json_t *state,
2026 struct ANASTASIS_CRYPTO_ProviderSaltP *salt) 2026 const char *provider_url,
2027 struct ANASTASIS_CRYPTO_ProviderSaltP *provider_salt)
2027{ 2028{
2028 const json_t *aps; 2029 const json_t *aps;
2029 const json_t *cfg; 2030 const json_t *cfg;
@@ -2040,8 +2041,8 @@ ANASTASIS_reducer_lookup_salt (const json_t *state,
2040 &http_status), 2041 &http_status),
2041 NULL), 2042 NULL),
2042 GNUNET_JSON_spec_mark_optional ( 2043 GNUNET_JSON_spec_mark_optional (
2043 GNUNET_JSON_spec_fixed_auto ("salt", 2044 GNUNET_JSON_spec_fixed_auto ("provider_salt",
2044 salt), 2045 provider_salt),
2045 &no_salt), 2046 &no_salt),
2046 GNUNET_JSON_spec_end () 2047 GNUNET_JSON_spec_end ()
2047 }; 2048 };
diff --git a/src/restclient/anastasis_api_config.c b/src/restclient/anastasis_api_config.c
index 9cf25c9..08b6952 100644
--- a/src/restclient/anastasis_api_config.c
+++ b/src/restclient/anastasis_api_config.c
@@ -120,8 +120,8 @@ handle_config_finished (void *cls,
120 &acfg.truth_upload_fee), 120 &acfg.truth_upload_fee),
121 TALER_JSON_spec_amount_any ("liability_limit", 121 TALER_JSON_spec_amount_any ("liability_limit",
122 &acfg.liability_limit), 122 &acfg.liability_limit),
123 GNUNET_JSON_spec_fixed_auto ("server_salt", 123 GNUNET_JSON_spec_fixed_auto ("provider_salt",
124 &acfg.salt), 124 &acfg.provider_salt),
125 GNUNET_JSON_spec_end () 125 GNUNET_JSON_spec_end ()
126 }; 126 };
127 127
diff --git a/src/restclient/anastasis_api_policy_store.c b/src/restclient/anastasis_api_policy_store.c
index 7a8925f..5cfcfcb 100644
--- a/src/restclient/anastasis_api_policy_store.c
+++ b/src/restclient/anastasis_api_policy_store.c
@@ -374,6 +374,11 @@ ANASTASIS_policy_store (
374 .purpose.size = htonl (sizeof (usp)) 374 .purpose.size = htonl (sizeof (usp))
375 }; 375 };
376 376
377 if (NULL == recovery_meta_data)
378 {
379 GNUNET_break (0);
380 return NULL;
381 }
377 tms = (unsigned long long) (payment_timeout.rel_value_us 382 tms = (unsigned long long) (payment_timeout.rel_value_us
378 / GNUNET_TIME_UNIT_MILLISECONDS.rel_value_us); 383 / GNUNET_TIME_UNIT_MILLISECONDS.rel_value_us);
379 GNUNET_CRYPTO_hash (recovery_data, 384 GNUNET_CRYPTO_hash (recovery_data,
diff --git a/src/testing/test_anastasis_api.conf b/src/testing/test_anastasis_api.conf
index 52be592..3dfc6ba 100644
--- a/src/testing/test_anastasis_api.conf
+++ b/src/testing/test_anastasis_api.conf
@@ -54,7 +54,7 @@ ANNUAL_POLICY_UPLOAD_LIMIT = 64
54 54
55INSURANCE = EUR:0 55INSURANCE = EUR:0
56 56
57SERVER_SALT = salty 57PROVIDER_SALT = salty
58 58
59 59
60# Annual fee we charge. 60# Annual fee we charge.
diff --git a/src/testing/testing_api_cmd_config.c b/src/testing/testing_api_cmd_config.c
index b4cf6e0..92a8ae1 100644
--- a/src/testing/testing_api_cmd_config.c
+++ b/src/testing/testing_api_cmd_config.c
@@ -53,7 +53,7 @@ struct ConfigState
53 /** 53 /**
54 * The salt value from server. 54 * The salt value from server.
55 */ 55 */
56 struct ANASTASIS_CRYPTO_ProviderSaltP salt; 56 struct ANASTASIS_CRYPTO_ProviderSaltP provider_salt;
57}; 57};
58 58
59 59
@@ -93,7 +93,7 @@ config_cb (void *cls,
93 TALER_TESTING_interpreter_fail (ss->is); 93 TALER_TESTING_interpreter_fail (ss->is);
94 return; 94 return;
95 } 95 }
96 ss->salt = config->salt; 96 ss->provider_salt = config->provider_salt;
97 TALER_TESTING_interpreter_next (ss->is); 97 TALER_TESTING_interpreter_next (ss->is);
98} 98}
99 99
@@ -168,7 +168,7 @@ config_traits (void *cls,
168{ 168{
169 struct ConfigState *ss = cls; 169 struct ConfigState *ss = cls;
170 struct TALER_TESTING_Trait traits[] = { 170 struct TALER_TESTING_Trait traits[] = {
171 ANASTASIS_TESTING_make_trait_salt (&ss->salt), 171 ANASTASIS_TESTING_make_trait_provider_salt (&ss->provider_salt),
172 TALER_TESTING_trait_end () 172 TALER_TESTING_trait_end ()
173 }; 173 };
174 174
diff --git a/src/testing/testing_api_cmd_policy_store.c b/src/testing/testing_api_cmd_policy_store.c
index 08e567c..f23489d 100644
--- a/src/testing/testing_api_cmd_policy_store.c
+++ b/src/testing/testing_api_cmd_policy_store.c
@@ -281,7 +281,7 @@ policy_store_run (void *cls,
281 &pss->anastasis_priv, 281 &pss->anastasis_priv,
282 pss->recovery_data, 282 pss->recovery_data,
283 pss->recovery_data_size, 283 pss->recovery_data_size,
284 NULL, 0, /* meta-data */ 284 "metadata", strlen ("metadata"),
285 (0 != (ANASTASIS_TESTING_PSO_REQUEST_PAYMENT & pss->psopt)), 285 (0 != (ANASTASIS_TESTING_PSO_REQUEST_PAYMENT & pss->psopt)),
286 pss->payment_secret_set ? &pss->payment_secret_request : NULL, 286 pss->payment_secret_set ? &pss->payment_secret_request : NULL,
287 GNUNET_TIME_UNIT_ZERO, 287 GNUNET_TIME_UNIT_ZERO,
diff --git a/src/testing/testing_cmd_recover_secret.c b/src/testing/testing_cmd_recover_secret.c
index 153143d..3b12012 100644
--- a/src/testing/testing_cmd_recover_secret.c
+++ b/src/testing/testing_cmd_recover_secret.c
@@ -67,11 +67,6 @@ struct RecoverSecretState
67 json_t *id_data; 67 json_t *id_data;
68 68
69 /** 69 /**
70 * Salt to be used to derive the id
71 */
72 struct ANASTASIS_CRYPTO_ProviderSaltP *salt;
73
74 /**
75 * Recovery information from the lookup 70 * Recovery information from the lookup
76 */ 71 */
77 struct ANASTASIS_RecoveryInformation *ri; 72 struct ANASTASIS_RecoveryInformation *ri;
@@ -188,7 +183,7 @@ recover_secret_run (void *cls,
188{ 183{
189 struct RecoverSecretState *rss = cls; 184 struct RecoverSecretState *rss = cls;
190 const struct TALER_TESTING_Command *ref; 185 const struct TALER_TESTING_Command *ref;
191 const struct ANASTASIS_CRYPTO_ProviderSaltP *salt; 186 const struct ANASTASIS_CRYPTO_ProviderSaltP *provider_salt;
192 rss->is = is; 187 rss->is = is;
193 188
194 if (NULL != rss->download_reference) 189 if (NULL != rss->download_reference)
@@ -203,8 +198,8 @@ recover_secret_run (void *cls,
203 return; 198 return;
204 } 199 }
205 if (GNUNET_OK != 200 if (GNUNET_OK !=
206 ANASTASIS_TESTING_get_trait_salt (ref, 201 ANASTASIS_TESTING_get_trait_provider_salt (ref,
207 &salt)) 202 &provider_salt))
208 { 203 {
209 GNUNET_break (0); 204 GNUNET_break (0);
210 TALER_TESTING_interpreter_fail (rss->is); 205 TALER_TESTING_interpreter_fail (rss->is);
@@ -236,7 +231,7 @@ recover_secret_run (void *cls,
236 rss->id_data, 231 rss->id_data,
237 rss->version, 232 rss->version,
238 rss->anastasis_url, 233 rss->anastasis_url,
239 salt, 234 provider_salt,
240 &policy_lookup_cb, 235 &policy_lookup_cb,
241 rss, 236 rss,
242 &core_secret_cb, 237 &core_secret_cb,
diff --git a/src/testing/testing_cmd_secret_share.c b/src/testing/testing_cmd_secret_share.c
index 7a9dbc0..26a237d 100644
--- a/src/testing/testing_cmd_secret_share.c
+++ b/src/testing/testing_cmd_secret_share.c
@@ -275,7 +275,7 @@ secret_share_run (void *cls,
275 pds.provider_url = sss->anastasis_url; 275 pds.provider_url = sss->anastasis_url;
276 { 276 {
277 const struct TALER_TESTING_Command *ref; 277 const struct TALER_TESTING_Command *ref;
278 const struct ANASTASIS_CRYPTO_ProviderSaltP *salt; 278 const struct ANASTASIS_CRYPTO_ProviderSaltP *provider_salt;
279 279
280 ref = TALER_TESTING_interpreter_lookup_command (is, 280 ref = TALER_TESTING_interpreter_lookup_command (is,
281 sss->config_ref); 281 sss->config_ref);
@@ -286,14 +286,14 @@ secret_share_run (void *cls,
286 return; 286 return;
287 } 287 }
288 if (GNUNET_OK != 288 if (GNUNET_OK !=
289 ANASTASIS_TESTING_get_trait_salt (ref, 289 ANASTASIS_TESTING_get_trait_provider_salt (ref,
290 &salt)) 290 &provider_salt))
291 { 291 {
292 GNUNET_break (0); 292 GNUNET_break (0);
293 TALER_TESTING_interpreter_fail (sss->is); 293 TALER_TESTING_interpreter_fail (sss->is);
294 return; 294 return;
295 } 295 }
296 pds.provider_salt = *salt; 296 pds.provider_salt = *provider_salt;
297 } 297 }
298 298
299 sss->sso = ANASTASIS_secret_share (is->ctx, 299 sss->sso = ANASTASIS_secret_share (is->ctx,
diff --git a/src/testing/testing_cmd_truth_upload.c b/src/testing/testing_cmd_truth_upload.c
index 99c2879..89ba790 100644
--- a/src/testing/testing_cmd_truth_upload.c
+++ b/src/testing/testing_cmd_truth_upload.c
@@ -181,15 +181,15 @@ truth_upload_run (void *cls,
181{ 181{
182 struct TruthUploadState *tus = cls; 182 struct TruthUploadState *tus = cls;
183 const struct TALER_TESTING_Command *ref; 183 const struct TALER_TESTING_Command *ref;
184 const struct ANASTASIS_CRYPTO_ProviderSaltP *salt; 184 const struct ANASTASIS_CRYPTO_ProviderSaltP *provider_salt;
185 struct ANASTASIS_CRYPTO_UserIdentifierP user_id; 185 struct ANASTASIS_CRYPTO_UserIdentifierP user_id;
186 186
187 tus->is = is; 187 tus->is = is;
188 if (NULL != tus->salt_reference) 188 if (NULL != tus->salt_reference)
189 { 189 {
190 ref = TALER_TESTING_interpreter_lookup_command 190 ref = TALER_TESTING_interpreter_lookup_command (
191 (is, 191 is,
192 tus->salt_reference); 192 tus->salt_reference);
193 if (NULL == ref) 193 if (NULL == ref)
194 { 194 {
195 GNUNET_break (0); 195 GNUNET_break (0);
@@ -197,26 +197,24 @@ truth_upload_run (void *cls,
197 return; 197 return;
198 } 198 }
199 if (GNUNET_OK != 199 if (GNUNET_OK !=
200 ANASTASIS_TESTING_get_trait_salt (ref, 200 ANASTASIS_TESTING_get_trait_provider_salt (ref,
201 &salt)) 201 &provider_salt))
202 { 202 {
203 GNUNET_break (0); 203 GNUNET_break (0);
204 TALER_TESTING_interpreter_fail (tus->is); 204 TALER_TESTING_interpreter_fail (tus->is);
205 return; 205 return;
206 } 206 }
207 } 207 }
208
209 ANASTASIS_CRYPTO_user_identifier_derive (tus->id_data, 208 ANASTASIS_CRYPTO_user_identifier_derive (tus->id_data,
210 salt, 209 provider_salt,
211 &user_id); 210 &user_id);
212
213 tus->tuo = ANASTASIS_truth_upload (is->ctx, 211 tus->tuo = ANASTASIS_truth_upload (is->ctx,
214 &user_id, 212 &user_id,
215 tus->anastasis_url, 213 tus->anastasis_url,
216 tus->method, 214 tus->method,
217 tus->instructions, 215 tus->instructions,
218 tus->mime_type, 216 tus->mime_type,
219 salt, 217 provider_salt,
220 tus->truth_data, 218 tus->truth_data,
221 tus->truth_data_size, 219 tus->truth_data_size,
222 false, /* force payment */ 220 false, /* force payment */