Improve keyring PIN handling

Replace explicit [<pin,pin...>] command-line arguments with --entry-pin=<pin>
options.  Update test scripts accordlingly.

Add --keyring-pin=<pin> option (with one test case).
This commit is contained in:
Andrew Bettison 2013-02-13 16:49:52 +10:30
parent 7f52ac0ae3
commit f66a894a63
9 changed files with 183 additions and 167 deletions

View File

@ -1201,11 +1201,10 @@ int app_rhizome_add_file(const struct parsed_command *parsed, void *context)
{ {
if (config.debug.verbose) if (config.debug.verbose)
DEBUG_parsed(parsed); DEBUG_parsed(parsed);
const char *filepath, *manifestpath, *authorSidHex, *pin, *bskhex; const char *filepath, *manifestpath, *authorSidHex, *bskhex;
cli_arg(parsed, "filepath", &filepath, NULL, ""); cli_arg(parsed, "filepath", &filepath, NULL, "");
if (cli_arg(parsed, "author_sid", &authorSidHex, cli_optional_sid, "") == -1) if (cli_arg(parsed, "author_sid", &authorSidHex, cli_optional_sid, "") == -1)
return -1; return -1;
cli_arg(parsed, "pin", &pin, NULL, "");
cli_arg(parsed, "manifestpath", &manifestpath, NULL, ""); cli_arg(parsed, "manifestpath", &manifestpath, NULL, "");
if (cli_arg(parsed, "bsk", &bskhex, cli_optional_bundle_key, NULL) == -1) if (cli_arg(parsed, "bsk", &bskhex, cli_optional_bundle_key, NULL) == -1)
return -1; return -1;
@ -1224,7 +1223,7 @@ int app_rhizome_add_file(const struct parsed_command *parsed, void *context)
if (create_serval_instance_dir() == -1) if (create_serval_instance_dir() == -1)
return -1; return -1;
if (!(keyring = keyring_open_with_pins((char *)pin))) if (!(keyring = keyring_open_instance_cli(parsed)))
return -1; return -1;
if (rhizome_opendb() == -1) if (rhizome_opendb() == -1)
return -1; return -1;
@ -1408,11 +1407,10 @@ int app_rhizome_extract_bundle(const struct parsed_command *parsed, void *contex
{ {
if (config.debug.verbose) if (config.debug.verbose)
DEBUG_parsed(parsed); DEBUG_parsed(parsed);
const char *manifestpath, *filepath, *manifestid, *pins, *bskhex; const char *manifestpath, *filepath, *manifestid, *bskhex;
if ( cli_arg(parsed, "manifestid", &manifestid, cli_manifestid, "") == -1 if ( cli_arg(parsed, "manifestid", &manifestid, cli_manifestid, "") == -1
|| cli_arg(parsed, "manifestpath", &manifestpath, NULL, "") == -1 || cli_arg(parsed, "manifestpath", &manifestpath, NULL, "") == -1
|| cli_arg(parsed, "filepath", &filepath, NULL, "") == -1 || cli_arg(parsed, "filepath", &filepath, NULL, "") == -1
|| cli_arg(parsed, "pin,pin...", &pins, NULL, "") == -1
|| cli_arg(parsed, "bsk", &bskhex, cli_optional_bundle_key, NULL) == -1) || cli_arg(parsed, "bsk", &bskhex, cli_optional_bundle_key, NULL) == -1)
return -1; return -1;
@ -1421,7 +1419,7 @@ int app_rhizome_extract_bundle(const struct parsed_command *parsed, void *contex
return -1; return -1;
if (rhizome_opendb() == -1) if (rhizome_opendb() == -1)
return -1; return -1;
if (!(keyring = keyring_open_with_pins(pins))) if (!(keyring = keyring_open_instance_cli(parsed)))
return -1; return -1;
int ret=0; int ret=0;
@ -1537,8 +1535,7 @@ int app_rhizome_list(const struct parsed_command *parsed, void *context)
{ {
if (config.debug.verbose) if (config.debug.verbose)
DEBUG_parsed(parsed); DEBUG_parsed(parsed);
const char *pins, *service, *name, *sender_sid, *recipient_sid, *offset, *limit; const char *service, *name, *sender_sid, *recipient_sid, *offset, *limit;
cli_arg(parsed, "pin,pin...", &pins, NULL, "");
cli_arg(parsed, "service", &service, NULL, ""); cli_arg(parsed, "service", &service, NULL, "");
cli_arg(parsed, "name", &name, NULL, ""); cli_arg(parsed, "name", &name, NULL, "");
cli_arg(parsed, "sender_sid", &sender_sid, cli_optional_sid, ""); cli_arg(parsed, "sender_sid", &sender_sid, cli_optional_sid, "");
@ -1548,7 +1545,7 @@ int app_rhizome_list(const struct parsed_command *parsed, void *context)
/* Create the instance directory if it does not yet exist */ /* Create the instance directory if it does not yet exist */
if (create_serval_instance_dir() == -1) if (create_serval_instance_dir() == -1)
return -1; return -1;
if (!(keyring = keyring_open_with_pins(pins))) if (!(keyring = keyring_open_instance_cli(parsed)))
return -1; return -1;
if (rhizome_opendb() == -1) if (rhizome_opendb() == -1)
return -1; return -1;
@ -1559,9 +1556,7 @@ int app_keyring_create(const struct parsed_command *parsed, void *context)
{ {
if (config.debug.verbose) if (config.debug.verbose)
DEBUG_parsed(parsed); DEBUG_parsed(parsed);
const char *pin; if (!keyring_open_instance())
cli_arg(parsed, "pin,pin...", &pin, NULL, "");
if (!keyring_open_with_pins(pin))
return -1; return -1;
return 0; return 0;
} }
@ -1570,9 +1565,7 @@ int app_keyring_list(const struct parsed_command *parsed, void *context)
{ {
if (config.debug.verbose) if (config.debug.verbose)
DEBUG_parsed(parsed); DEBUG_parsed(parsed);
const char *pins; keyring_file *k = keyring_open_instance_cli(parsed);
cli_arg(parsed, "pin,pin...", &pins, NULL, "");
keyring_file *k = keyring_open_with_pins(pins);
if (!k) if (!k)
return -1; return -1;
int cn, in; int cn, in;
@ -1600,10 +1593,11 @@ int app_keyring_add(const struct parsed_command *parsed, void *context)
DEBUG_parsed(parsed); DEBUG_parsed(parsed);
const char *pin; const char *pin;
cli_arg(parsed, "pin", &pin, NULL, ""); cli_arg(parsed, "pin", &pin, NULL, "");
keyring_file *k = keyring_open_with_pins(""); keyring_file *k = keyring_open_instance_cli(parsed);
if (!k) if (!k)
return -1; return -1;
const keyring_identity *id = keyring_create_identity(k, k->contexts[0], pin); keyring_enter_pin(k, pin);
const keyring_identity *id = keyring_create_identity(k, k->contexts[k->context_count - 1], pin);
if (id == NULL) { if (id == NULL) {
keyring_free(k); keyring_free(k);
return WHY("Could not create new identity"); return WHY("Could not create new identity");
@ -1644,15 +1638,14 @@ int app_keyring_set_did(const struct parsed_command *parsed, void *context)
{ {
if (config.debug.verbose) if (config.debug.verbose)
DEBUG_parsed(parsed); DEBUG_parsed(parsed);
const char *sid, *did, *pin, *name; const char *sid, *did, *name;
cli_arg(parsed, "sid", &sid, str_is_subscriber_id, ""); cli_arg(parsed, "sid", &sid, str_is_subscriber_id, "");
cli_arg(parsed, "did", &did, cli_optional_did, ""); cli_arg(parsed, "did", &did, cli_optional_did, "");
cli_arg(parsed, "name", &name, NULL, ""); cli_arg(parsed, "name", &name, NULL, "");
cli_arg(parsed, "pin", &pin, NULL, "");
if (strlen(name)>63) return WHY("Name too long (31 char max)"); if (strlen(name)>63) return WHY("Name too long (31 char max)");
if (!(keyring = keyring_open_with_pins(pin))) if (!(keyring = keyring_open_instance_cli(parsed)))
return -1; return -1;
unsigned char packedSid[SID_SIZE]; unsigned char packedSid[SID_SIZE];
@ -2136,6 +2129,7 @@ int app_network_scan(const struct parsed_command *parsed, void *context)
Keep this list alphabetically sorted for user convenience. Keep this list alphabetically sorted for user convenience.
*/ */
#define KEYRING_PIN_OPTIONS ,"[--keyring-pin=<pin>]","[--entry-pin=<pin>]..."
struct command_line_option command_line_options[]={ struct command_line_option command_line_options[]={
{app_dna_lookup,{"dna","lookup","<did>","[<timeout>]",NULL},0, {app_dna_lookup,{"dna","lookup","<did>","[<timeout>]",NULL},0,
"Lookup the SIP/MDP address of the supplied telephone number (DID)."}, "Lookup the SIP/MDP address of the supplied telephone number (DID)."},
@ -2177,20 +2171,20 @@ struct command_line_option command_line_options[]={
"Append a manifest to the end of the file it belongs to."}, "Append a manifest to the end of the file it belongs to."},
{app_rhizome_hash_file,{"rhizome","hash","file","<filepath>",NULL},CLIFLAG_STANDALONE, {app_rhizome_hash_file,{"rhizome","hash","file","<filepath>",NULL},CLIFLAG_STANDALONE,
"Compute the Rhizome hash of a file"}, "Compute the Rhizome hash of a file"},
{app_rhizome_add_file,{"rhizome","add","file","<author_sid>","<pin>","<filepath>","[<manifestpath>]","[<bsk>]",NULL},CLIFLAG_STANDALONE, {app_rhizome_add_file,{"rhizome","add","file" KEYRING_PIN_OPTIONS,"<author_sid>","<filepath>","[<manifestpath>]","[<bsk>]",NULL},CLIFLAG_STANDALONE,
"Add a file to Rhizome and optionally write its manifest to the given path"}, "Add a file to Rhizome and optionally write its manifest to the given path"},
{app_rhizome_import_bundle,{"rhizome","import","bundle","<filepath>","<manifestpath>",NULL},CLIFLAG_STANDALONE, {app_rhizome_import_bundle,{"rhizome","import","bundle","<filepath>","<manifestpath>",NULL},CLIFLAG_STANDALONE,
"Import a payload/manifest pair into Rhizome"}, "Import a payload/manifest pair into Rhizome"},
{app_rhizome_list,{"rhizome","list","[<pin,pin...>]","[<service>]","[<name>]","[<sender_sid>]","[<recipient_sid>]","[<offset>]","[<limit>]",NULL},CLIFLAG_STANDALONE, {app_rhizome_list,{"rhizome","list" KEYRING_PIN_OPTIONS,"[<service>]","[<name>]","[<sender_sid>]","[<recipient_sid>]","[<offset>]","[<limit>]",NULL},CLIFLAG_STANDALONE,
"List all manifests and files in Rhizome"}, "List all manifests and files in Rhizome"},
{app_rhizome_extract_bundle,{"rhizome","extract","bundle", {app_rhizome_extract_bundle,{"rhizome","extract","bundle" KEYRING_PIN_OPTIONS,
"<manifestid>","[<manifestpath>]","[<filepath>]","[<pin,pin...>]","[<bsk>]",NULL},CLIFLAG_STANDALONE, "<manifestid>","[<manifestpath>]","[<filepath>]","[<bsk>]",NULL},CLIFLAG_STANDALONE,
"Extract a manifest and decrypted file to the given paths."}, "Extract a manifest and decrypted file to the given paths."},
{app_rhizome_extract_bundle,{"rhizome","extract","manifest", {app_rhizome_extract_bundle,{"rhizome","extract","manifest" KEYRING_PIN_OPTIONS,
"<manifestid>","[<manifestpath>]","[<pin,pin...>]",NULL},CLIFLAG_STANDALONE, "<manifestid>","[<manifestpath>]",NULL},CLIFLAG_STANDALONE,
"Extract a manifest from Rhizome and write it to the given path"}, "Extract a manifest from Rhizome and write it to the given path"},
{app_rhizome_extract_bundle,{"rhizome","extract","file", {app_rhizome_extract_bundle,{"rhizome","extract","file" KEYRING_PIN_OPTIONS,
"<manifestid>","[<filepath>]","[<pin,pin...>]","[<bsk>]",NULL},CLIFLAG_STANDALONE, "<manifestid>","[<filepath>]","[<bsk>]",NULL},CLIFLAG_STANDALONE,
"Extract a file from Rhizome and write it to the given path"}, "Extract a file from Rhizome and write it to the given path"},
{app_rhizome_dump_file,{"rhizome","dump","file","<fileid>","[<filepath>]",NULL},CLIFLAG_STANDALONE, {app_rhizome_dump_file,{"rhizome","dump","file","<fileid>","[<filepath>]",NULL},CLIFLAG_STANDALONE,
"Extract a file from Rhizome and write it to the given path without attempting decryption"}, "Extract a file from Rhizome and write it to the given path without attempting decryption"},
@ -2205,11 +2199,11 @@ struct command_line_option command_line_options[]={
"Fetch all new content from the specified Rhizome Direct server. Return when done."}, "Fetch all new content from the specified Rhizome Direct server. Return when done."},
{app_keyring_create,{"keyring","create",NULL},0, {app_keyring_create,{"keyring","create",NULL},0,
"Create a new keyring file."}, "Create a new keyring file."},
{app_keyring_list,{"keyring","list","[<pin,pin...>]",NULL},CLIFLAG_STANDALONE, {app_keyring_list,{"keyring","list" KEYRING_PIN_OPTIONS,NULL},CLIFLAG_STANDALONE,
"List identites in specified key ring that can be accessed using the specified PINs"}, "List identites in specified key ring that can be accessed using the specified PINs"},
{app_keyring_add,{"keyring","add","[<pin>]",NULL},CLIFLAG_STANDALONE, {app_keyring_add,{"keyring","add" KEYRING_PIN_OPTIONS,"[<pin>]",NULL},CLIFLAG_STANDALONE,
"Create a new identity in the keyring protected by the provided PIN"}, "Create a new identity in the keyring protected by the provided PIN"},
{app_keyring_set_did,{"set","did","<sid>","<did>","<name>","[<pin>]",NULL},CLIFLAG_STANDALONE, {app_keyring_set_did,{"set","did" KEYRING_PIN_OPTIONS,"<sid>","<did>","<name>",NULL},CLIFLAG_STANDALONE,
"Set the DID for the specified SID. Optionally supply PIN to unlock the SID record in the keyring."}, "Set the DID for the specified SID. Optionally supply PIN to unlock the SID record in the keyring."},
{app_id_self,{"id","self",NULL},0, {app_id_self,{"id","self",NULL},0,
"Return my own identity(s) as URIs"}, "Return my own identity(s) as URIs"},

View File

@ -123,7 +123,8 @@ keyring_file *keyring_open(char *file)
keyring_free(k); keyring_free(k);
return NULL; return NULL;
} }
k->contexts[0]->KeyRingPin=strdup(""); /* Implied empty PIN if none provided */ // First context is always with null keyring PIN.
k->contexts[0]->KeyRingPin=strdup("");
k->contexts[0]->KeyRingSaltLen=KEYRING_PAGE_SIZE-KEYRING_BAM_BYTES; k->contexts[0]->KeyRingSaltLen=KEYRING_PAGE_SIZE-KEYRING_BAM_BYTES;
k->contexts[0]->KeyRingSalt=malloc(k->contexts[0]->KeyRingSaltLen); k->contexts[0]->KeyRingSalt=malloc(k->contexts[0]->KeyRingSaltLen);
if (!k->contexts[0]->KeyRingSalt) { if (!k->contexts[0]->KeyRingSalt) {
@ -257,20 +258,23 @@ void keyring_free_keypair(keypair *kp)
/* Create a new keyring context for the loaded keyring file. /* Create a new keyring context for the loaded keyring file.
We don't need to load any identities etc, as that happens when we enter We don't need to load any identities etc, as that happens when we enter
an identity pin. an identity pin.
If the pin is NULL, it is assumed to be blank. If the pin is NULL, it is assumed to be blank.
The pin does NOT have to be numeric, and has no practical length limitation, The pin does NOT have to be numeric, and has no practical length limitation,
as it is used as an input into a hashing function. But for sanity sake, let's as it is used as an input into a hashing function. But for sanity sake, let's
limit it to 16KB. limit it to 16KB.
*/ */
int keyring_enter_keyringpin(keyring_file *k,char *pin) int keyring_enter_keyringpin(keyring_file *k, const char *pin)
{ {
if (!k) return WHY("k is null"); if (!k) return WHY("k is null");
if (k->context_count>=KEYRING_MAX_CONTEXTS) if (k->context_count>=KEYRING_MAX_CONTEXTS)
return WHY("Too many loaded contexts already"); return WHY("Too many loaded contexts already");
if (k->context_count<1) if (k->context_count<1)
return WHY("Cannot enter PIN without keyring salt being available"); return WHY("Cannot enter PIN without keyring salt being available");
int cn;
for (cn = 0; cn < k->context_count; ++cn)
if (strcmp(k->contexts[cn]->KeyRingPin, pin) == 0)
return 1;
k->contexts[k->context_count]=calloc(sizeof(keyring_context),1); k->contexts[k->context_count]=calloc(sizeof(keyring_context),1);
if (!k->contexts[k->context_count]) return WHY("Could not allocate new keyring context structure"); if (!k->contexts[k->context_count]) return WHY("Could not allocate new keyring context structure");
keyring_context *c=k->contexts[k->context_count]; keyring_context *c=k->contexts[k->context_count];
@ -1325,25 +1329,7 @@ void keyring_identity_extract(const keyring_identity *id, const unsigned char **
} }
} }
int keyring_enter_pins(keyring_file *k, const char *pinlist) keyring_file *keyring_open_instance()
{
char pin[1024];
int i,j=0;
for(i=0;i<=strlen(pinlist);i++)
if (pinlist[i]==','||pinlist[i]==0)
{
pin[j]=0;
keyring_enter_pin(k,pin);
j=0;
}
else
if (j<1023) pin[j++]=pinlist[i];
return 0;
}
keyring_file *keyring_open_with_pins(const char *pinlist)
{ {
keyring_file *k = NULL; keyring_file *k = NULL;
IN(); IN();
@ -1354,7 +1340,25 @@ keyring_file *keyring_open_with_pins(const char *pinlist)
RETURN(NULL); RETURN(NULL);
if ((k = keyring_open(keyringFile)) == NULL) if ((k = keyring_open(keyringFile)) == NULL)
RETURN(NULL); RETURN(NULL);
keyring_enter_pins(k,pinlist); RETURN(k);
}
keyring_file *keyring_open_instance_cli(const struct parsed_command *parsed)
{
IN();
keyring_file *k = keyring_open_instance();
if (k == NULL)
RETURN(NULL);
const char *kpin = NULL;
cli_arg(parsed, "--keyring-pin", &kpin, NULL, "");
keyring_enter_keyringpin(k, kpin);
// Always open all PIN-less entries.
keyring_enter_pin(k, "");
// Open all entries for which an entry PIN has been given.
unsigned i;
for (i = 0; i < parsed->labelc; ++i)
if (strn_str_cmp(parsed->labelv[i].label, parsed->labelv[i].len, "--entry-pin") == 0)
keyring_enter_pin(k, parsed->labelv[i].text);
RETURN(k); RETURN(k);
} }

View File

@ -86,10 +86,10 @@ int overlayServerMode()
/* Get keyring available for use. /* Get keyring available for use.
Required for MDP, and very soon as a complete replacement for the Required for MDP, and very soon as a complete replacement for the
HLR for DNA lookups, even in non-overlay mode. */ HLR for DNA lookups, even in non-overlay mode. */
keyring=keyring_open_with_pins(""); keyring = keyring_open_instance();
if (!keyring) { if (!keyring)
return WHY("Could not open serval keyring file."); return WHY("Could not open serval keyring file.");
} keyring_enter_pin(keyring, "");
/* put initial identity in if we don't have any visible */ /* put initial identity in if we don't have any visible */
keyring_seed(keyring); keyring_seed(keyring);

View File

@ -265,9 +265,9 @@ extern keyring_file *keyring;
/* Public calls to keyring management */ /* Public calls to keyring management */
keyring_file *keyring_open(char *file); keyring_file *keyring_open(char *file);
keyring_file *keyring_open_with_pins(const char *pinlist); keyring_file *keyring_open_instance();
keyring_file *keyring_open_instance_cli(const struct parsed_command *parsed);
int keyring_enter_pin(keyring_file *k, const char *pin); int keyring_enter_pin(keyring_file *k, const char *pin);
int keyring_enter_pins(keyring_file *k, const char *pinlist);
int keyring_set_did(keyring_identity *id,char *did,char *name); int keyring_set_did(keyring_identity *id,char *did,char *name);
int keyring_sanitise_position(const keyring_file *k,int *cn,int *in,int *kp); int keyring_sanitise_position(const keyring_file *k,int *cn,int *in,int *kp);
int keyring_next_keytype(const keyring_file *k, int *cn, int *in, int *kp, int keytype); int keyring_next_keytype(const keyring_file *k, int *cn, int *in, int *kp, int keytype);

View File

@ -420,7 +420,7 @@ int getKeyring(char *backing_file)
exit(WHY("Keyring being opened twice")); exit(WHY("Keyring being opened twice"));
keyring=keyring_open(backing_file); keyring=keyring_open(backing_file);
/* unlock all entries with blank pins */ /* unlock all entries with blank pins */
keyring_enter_pins(keyring,""); keyring_enter_pin(keyring, "");
} }
keyring_seed(keyring); keyring_seed(keyring);

View File

@ -388,7 +388,7 @@ rhizome_add_file() {
local size="${2:-64}" local size="${2:-64}"
[ -e "$name" ] || create_file "$name" $size [ -e "$name" ] || create_file "$name" $size
local sidvar="SID$instance_name" local sidvar="SID$instance_name"
executeOk_servald rhizome add file "${!sidvar}" '' "$name" "$name.manifest" executeOk_servald rhizome add file "${!sidvar}" "$name" "$name.manifest"
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 --author="${!sidvar}" "$name" --and-others assert_rhizome_list --fromhere=1 --author="${!sidvar}" "$name" --and-others
extract_manifest_vars "$name.manifest" extract_manifest_vars "$name.manifest"
@ -401,8 +401,8 @@ rhizome_update_file() {
local sidvar="SID$instance_name" local sidvar="SID$instance_name"
[ "$new_name" != "$orig_name" ] && cp "$orig_name.manifest" "$new_name.manifest" [ "$new_name" != "$orig_name" ] && cp "$orig_name.manifest" "$new_name.manifest"
$SED -i -e '/^date=/d;/^filehash=/d;/^filesize=/d;/^version=/d;/^name=/d' "$new_name.manifest" $SED -i -e '/^date=/d;/^filehash=/d;/^filesize=/d;/^version=/d;/^name=/d' "$new_name.manifest"
executeOk_servald rhizome add file "${!sidvar}" '' "$new_name" "$new_name.manifest" executeOk_servald rhizome add file "${!sidvar}" "$new_name" "$new_name.manifest"
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 "$new_name" assert_rhizome_list --fromhere=1 "$new_name"
extract_manifest_vars "$new_name.manifest" extract_manifest_vars "$new_name.manifest"
} }

View File

@ -32,17 +32,18 @@ assert_keyring_list() {
tfw_cat --stdout tfw_cat --stdout
} }
doc_KeyringCreate="Creating a keyring overrwites any existing keyring" doc_KeyringCreate="Create keyring destroys existing keys"
test_KeyringCreate() { test_KeyringCreate() {
executeOk_servald keyring add ''
executeOk_servald keyring add '' executeOk_servald keyring add ''
executeOk_servald keyring list executeOk_servald keyring list
assert_keyring_list 1 assert_keyring_list 2
executeOk_servald keyring create executeOk_servald keyring create
assert_keyring_list 0 assert_keyring_list 0
} }
doc_KeyringPinless="Add and list all PIN-less keys" doc_Pinless="No keyring PIN with PIN-less identities"
test_KeyringPinless() { test_Pinless() {
executeOk_servald keyring add '' executeOk_servald keyring add ''
executeOk_servald keyring list executeOk_servald keyring list
assert_keyring_list 1 assert_keyring_list 1
@ -54,31 +55,48 @@ test_KeyringPinless() {
assert_keyring_list 3 assert_keyring_list 3
} }
doc_KeyringEntryPin="Add and list PIN-locked keys" doc_IdentityPins="No keyring PIN with identity PINs"
test_KeyringEntryPin() { test_IdentityPins() {
executeOk_servald keyring add 'one' executeOk_servald keyring add 'one'
executeOk_servald keyring list executeOk_servald keyring list
assert_keyring_list 0 assert_keyring_list 0
executeOk_servald keyring list 'one' executeOk_servald keyring list --entry-pin 'one'
assert_keyring_list 1 assert_keyring_list 1
executeOk_servald keyring add 'two' executeOk_servald keyring add 'two'
executeOk_servald keyring list executeOk_servald keyring list
assert_keyring_list 0 assert_keyring_list 0
executeOk_servald keyring list 'one' executeOk_servald keyring list --entry-pin 'one'
assert_keyring_list 1 assert_keyring_list 1
executeOk_servald keyring list 'one,two' executeOk_servald keyring list --entry-pin 'one' --entry-pin 'two'
assert_keyring_list 2 assert_keyring_list 2
executeOk_servald keyring add 'three' executeOk_servald keyring add 'three'
executeOk_servald keyring list executeOk_servald keyring list
assert_keyring_list 0 assert_keyring_list 0
executeOk_servald keyring list 'one' executeOk_servald keyring list --entry-pin 'one'
assert_keyring_list 1 assert_keyring_list 1
executeOk_servald keyring list 'one,two' executeOk_servald keyring list --entry-pin 'one' --entry-pin 'two'
assert_keyring_list 2 assert_keyring_list 2
executeOk_servald keyring list 'one,two,three' executeOk_servald keyring list --entry-pin 'one' --entry-pin 'two' --entry-pin 'three'
assert_keyring_list 3 assert_keyring_list 3
executeOk_servald keyring list 'two,three,one' executeOk_servald keyring list --entry-pin 'two' --entry-pin 'three'
assert_keyring_list 2
executeOk_servald keyring list --entry-pin 'three'
assert_keyring_list 1
}
doc_KeyringPinIdentityPinless="Keyring PIN with PIN-less identities"
test_KeyringPinIdentityPinless() {
executeOk_servald keyring add --keyring-pin=hello ''
executeOk_servald keyring list --keyring-pin=hello
assert_keyring_list 1
executeOk_servald keyring add --keyring-pin=hello ''
executeOk_servald keyring list --keyring-pin=hello
assert_keyring_list 2
executeOk_servald keyring add --keyring-pin=hello ''
executeOk_servald keyring list --keyring-pin=hello
assert_keyring_list 3 assert_keyring_list 3
executeOk_servald keyring list
assert_keyring_list 0
} }
runTests "$@" runTests "$@"

View File

@ -56,7 +56,7 @@ setup_AddNoAuthorNoManifest() {
echo "A test file" >file1 echo "A test file" >file1
} }
test_AddNoAuthorNoManifest() { test_AddNoAuthorNoManifest() {
executeOk_servald rhizome add file '' '' file1 executeOk_servald rhizome add file '' file1
assert_stdout_add_file file1 assert_stdout_add_file file1
} }
@ -69,7 +69,7 @@ setup_AddNoManifest() {
echo "A test file" >file1 echo "A test file" >file1
} }
test_AddNoManifest() { test_AddNoManifest() {
executeOk_servald rhizome add file $SIDB1 '' file1 executeOk_servald rhizome add file $SIDB1 file1
assert_stdout_add_file file1 assert_stdout_add_file file1
} }
@ -80,7 +80,7 @@ setup_AddNoAuthor() {
echo "A test file" >file1 echo "A test file" >file1
} }
test_AddNoAuthor() { test_AddNoAuthor() {
executeOk_servald rhizome add file '' '' file1 file1.manifest executeOk_servald rhizome add file file1 file1.manifest
assert_stdout_add_file file1 assert_stdout_add_file file1
assertGrep --matches=0 file1.manifest '^BK=' assertGrep --matches=0 file1.manifest '^BK='
} }
@ -93,12 +93,12 @@ setup_AddNoAuthor() {
echo "crypt=1" >file1.manifest echo "crypt=1" >file1.manifest
} }
test_AddNoAuthor() { test_AddNoAuthor() {
executeOk_servald rhizome add file '' '' file1 file1.manifest executeOk_servald rhizome add file '' file1 file1.manifest
tfw_cat --stdout --stderr tfw_cat --stdout --stderr
assert_stdout_add_file file1 assert_stdout_add_file file1
extract_stdout_secret file1_secret extract_stdout_secret file1_secret
assertGrep --matches=0 file1.manifest '^BK=' assertGrep --matches=0 file1.manifest '^BK='
executeOk_servald rhizome extract file $re_manifestid file1x '' $file1_secret executeOk_servald rhizome extract file $re_manifestid file1x $file1_secret
tfw_cat --stdout --stderr tfw_cat --stdout --stderr
assert diff file1 file1x assert diff file1 file1x
} }
@ -113,7 +113,7 @@ setup_AddNonExistManifest() {
} }
test_AddNonExistManifest() { test_AddNonExistManifest() {
assert --error-on-fail [ ! -e file1.manifest ] assert --error-on-fail [ ! -e file1.manifest ]
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
assert_stdout_add_file file1 assert_stdout_add_file file1
assert [ -r file1.manifest ] assert [ -r file1.manifest ]
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
@ -131,7 +131,7 @@ setup_AddManifest() {
echo -e 'name=wah\ndate=12345' >file1.manifest echo -e 'name=wah\ndate=12345' >file1.manifest
} }
test_AddManifest() { test_AddManifest() {
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
tfw_cat --stdout --stderr -v file1.manifest tfw_cat --stdout --stderr -v file1.manifest
assert_stdout_add_file file1 name=wah assert_stdout_add_file file1 name=wah
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
@ -148,7 +148,7 @@ setup_AddEmpty() {
assert_rhizome_list assert_rhizome_list
} }
test_AddEmpty() { test_AddEmpty() {
executeOk_servald rhizome add file $SIDB1 '' '' .manifest executeOk_servald rhizome add file $SIDB1 '' .manifest
tfw_cat --stdout --stderr -v .manifest tfw_cat --stdout --stderr -v .manifest
assert_stdout_add_file '' assert_stdout_add_file ''
assert_manifest_complete .manifest assert_manifest_complete .manifest
@ -170,11 +170,11 @@ setup_AddThenList() {
} }
test_AddThenList() { test_AddThenList() {
# Add first file # Add first file
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 --author=$SIDB1 file1 assert_rhizome_list --fromhere=1 --author=$SIDB1 file1
# Add second file # Add second file
executeOk_servald rhizome add file $SIDB1 '' file2 file2.manifest executeOk_servald rhizome add file $SIDB1 file2 file2.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 --author=$SIDB1 file1 file2 assert_rhizome_list --fromhere=1 --author=$SIDB1 file1 file2
} }
@ -184,7 +184,7 @@ setup_ExtractManifestAfterAdd() {
setup_servald setup_servald
setup_rhizome setup_rhizome
echo "A test file" >file1 echo "A test file" >file1
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 --author=$SIDB1 file1 assert_rhizome_list --fromhere=1 --author=$SIDB1 file1
extract_manifest_id manifestid file1.manifest extract_manifest_id manifestid file1.manifest
@ -213,7 +213,7 @@ setup_ExtractManifestFileAfterAdd() {
setup_servald setup_servald
setup_rhizome setup_rhizome
echo "A test file" >file1 echo "A test file" >file1
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 --author=$SIDB1 file1 assert_rhizome_list --fromhere=1 --author=$SIDB1 file1
extract_manifest_id manifestid file1.manifest extract_manifest_id manifestid file1.manifest
@ -244,7 +244,7 @@ setup_ExtractManifestToStdout() {
setup_servald setup_servald
setup_rhizome setup_rhizome
echo "A test file" >file1 echo "A test file" >file1
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
extract_manifest_id manifestid file1.manifest extract_manifest_id manifestid file1.manifest
extract_manifest_version version file1.manifest extract_manifest_version version file1.manifest
extract_manifest_filehash filehash file1.manifest extract_manifest_filehash filehash file1.manifest
@ -275,7 +275,7 @@ setup_ExtractManifestAfterAddNoAuthor() {
setup_servald setup_servald
setup_rhizome setup_rhizome
echo "A test file" >file1 echo "A test file" >file1
executeOk_servald rhizome add file '' '' file1 file1.manifest executeOk_servald rhizome add file '' file1 file1.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
extract_manifest_id manifestid file1.manifest extract_manifest_id manifestid file1.manifest
@ -320,7 +320,7 @@ test_ExtractManifestInvalidID() {
execute --exit-status=255 $servald rhizome extract manifest 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE foo.manifest execute --exit-status=255 $servald rhizome extract manifest 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE foo.manifest
assertStdoutLineCount '==' 0 assertStdoutLineCount '==' 0
assert [ ! -e foo.manifest ] assert [ ! -e foo.manifest ]
execute --exit-status=255 $servald rhizome extract manifest '' foo.manifest execute --exit-status=255 $servald rhizome extract manifest foo.manifest
assertStdoutLineCount '==' 0 assertStdoutLineCount '==' 0
assert [ ! -e foo.manifest ] assert [ ! -e foo.manifest ]
} }
@ -330,7 +330,7 @@ setup_ExtractFileAfterAdd() {
setup_servald setup_servald
setup_rhizome setup_rhizome
echo "A test file" >file1 echo "A test file" >file1
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
tfw_cat --stderr tfw_cat --stderr
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 --author=$SIDB1 file1 assert_rhizome_list --fromhere=1 --author=$SIDB1 file1
@ -384,7 +384,7 @@ test_ExtractFileInvalidID() {
execute --exit-status=255 $servald rhizome extract file 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE foo execute --exit-status=255 $servald rhizome extract file 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE foo
assertStdoutLineCount '==' 0 assertStdoutLineCount '==' 0
assert [ ! -e foo ] assert [ ! -e foo ]
execute --exit-status=255 $servald rhizome extract file '' foo execute --exit-status=255 $servald rhizome extract file foo
assertStdoutLineCount '==' 0 assertStdoutLineCount '==' 0
assert [ ! -e foo ] assert [ ! -e foo ]
execute --exit-status=255 $servald rhizome dump file 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEx foo execute --exit-status=255 $servald rhizome dump file 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEx foo
@ -393,7 +393,7 @@ test_ExtractFileInvalidID() {
execute --exit-status=255 $servald rhizome dump file 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE foo execute --exit-status=255 $servald rhizome dump file 0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDE foo
assertStdoutLineCount '==' 0 assertStdoutLineCount '==' 0
assert [ ! -e foo ] assert [ ! -e foo ]
execute --exit-status=255 $servald rhizome dump file '' foo execute --exit-status=255 $servald rhizome dump file foo
assertStdoutLineCount '==' 0 assertStdoutLineCount '==' 0
assert [ ! -e foo ] assert [ ! -e foo ]
} }
@ -408,10 +408,10 @@ setup_AddDuplicate() {
echo "Another test file" >file2 echo "Another test file" >file2
echo "A test file, second version" >file1_2 echo "A test file, second version" >file1_2
# Add first file # Add first file
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
extract_stdout_secret file1_secret extract_stdout_secret file1_secret
# Add second file # Add second file
executeOk_servald rhizome add file $SIDB1 '' file2 file2.manifest executeOk_servald rhizome add file $SIDB1 file2 file2.manifest
extract_stdout_secret file2_secret extract_stdout_secret file2_secret
# Make sure they are both in the list. # Make sure they are both in the list.
executeOk_servald rhizome list executeOk_servald rhizome list
@ -421,7 +421,7 @@ test_AddDuplicate() {
# Add first file again - nothing should change in its manifests, and it # Add first file again - nothing should change in its manifests, and it
# should appear that the add command succeeded (with perhaps some grumbling # should appear that the add command succeeded (with perhaps some grumbling
# on stderr). # on stderr).
execute --exit-status=2 $servald rhizome add file $SIDB1 '' file1 file1.manifestA execute --exit-status=2 $servald rhizome add file $SIDB1 file1 file1.manifestA
assert [ -s file1.manifestA ] assert [ -s file1.manifestA ]
assert_stdout_add_file file1 assert_stdout_add_file file1
extract_stdout_secret file1_dup_secret extract_stdout_secret file1_dup_secret
@ -430,7 +430,7 @@ test_AddDuplicate() {
strip_signatures file1.manifest file1.manifestA strip_signatures file1.manifest file1.manifestA
assert diff file1.manifest file1.manifestA assert diff file1.manifest file1.manifestA
# Repeat for second file. # Repeat for second file.
execute --exit-status=2 $servald rhizome add file $SIDB1 '' file2 file2.manifestA execute --exit-status=2 $servald rhizome add file $SIDB1 file2 file2.manifestA
assert [ -s file2.manifestA ] assert [ -s file2.manifestA ]
assert_stdout_add_file file2 assert_stdout_add_file file2
extract_stdout_secret file2_dup_secret extract_stdout_secret file2_dup_secret
@ -450,7 +450,7 @@ test_AddMismatched() {
# Try to add another file using an existing manifest, should fail and leave # Try to add another file using an existing manifest, should fail and leave
# the manifest file unchanged. # the manifest file unchanged.
cp file1.manifest file1_2.manifest cp file1.manifest file1_2.manifest
execute $servald rhizome add file $SIDB1 '' file1_2 file1_2.manifest execute $servald rhizome add file $SIDB1 file1_2 file1_2.manifest
assertExitStatus '!=' 0 assertExitStatus '!=' 0
assert diff file1.manifest file1_2.manifest assert diff file1.manifest file1_2.manifest
# And rhizome store should be unchanged. # And rhizome store should be unchanged.
@ -472,7 +472,7 @@ setup_AddUpdateSameVersion() {
} }
test_AddUpdateSameVersion() { test_AddUpdateSameVersion() {
tfw_cat -v file1_2.manifest tfw_cat -v file1_2.manifest
execute $servald rhizome add file $SIDB1 '' file1_2 file1_2.manifest execute $servald rhizome add file $SIDB1 file1_2 file1_2.manifest
assertExitStatus --stderr '!=' 0 assertExitStatus --stderr '!=' 0
tfw_cat -v file1_2.manifest tfw_cat -v file1_2.manifest
assert cmp file1_2.manifest file1_2.manifest.orig assert cmp file1_2.manifest file1_2.manifest.orig
@ -491,7 +491,7 @@ setup_AddUpdateNewVersion() {
} }
test_AddUpdateNewVersion() { test_AddUpdateNewVersion() {
tfw_cat -v file1_2.manifest tfw_cat -v file1_2.manifest
executeOk_servald rhizome add file $SIDB1 '' file1_2 file1_2.manifest executeOk_servald rhizome add file $SIDB1 file1_2 file1_2.manifest
tfw_cat --stderr tfw_cat --stderr
assert_stdout_add_file file1_2 name=file1 assert_stdout_add_file file1_2 name=file1
assert_manifest_newer file1.manifest file1_2.manifest assert_manifest_newer file1.manifest file1_2.manifest
@ -506,7 +506,7 @@ setup_AddUpdateDiscoverAuthor() {
} }
test_AddUpdateDiscoverAuthor() { test_AddUpdateDiscoverAuthor() {
tfw_cat -v file1_2.manifest tfw_cat -v file1_2.manifest
executeOk_servald rhizome add file '' '' file1_2 file1_2.manifest executeOk_servald rhizome add file '' file1_2 file1_2.manifest
tfw_cat --stderr tfw_cat --stderr
# Rhizome store contents have new payload. # Rhizome store contents have new payload.
executeOk_servald rhizome list executeOk_servald rhizome list
@ -520,7 +520,7 @@ setup_AddUpdateNoAuthor() {
} }
test_AddUpdateNoAuthor() { test_AddUpdateNoAuthor() {
tfw_cat -v file1_2.manifest tfw_cat -v file1_2.manifest
execute $servald rhizome add file $SIDB1 '' file1_2 file1_2.manifest execute $servald rhizome add file $SIDB1 file1_2 file1_2.manifest
tfw_cat --stderr tfw_cat --stderr
assertExitStatus '!=' 0 assertExitStatus '!=' 0
# Rhizome store contents have old payload. # Rhizome store contents have old payload.
@ -534,7 +534,7 @@ setup_AddUpdateNoAuthorWithSecret() {
} }
test_AddUpdateNoAuthorWithSecret() { test_AddUpdateNoAuthorWithSecret() {
tfw_cat -v file1_2.manifest tfw_cat -v file1_2.manifest
executeOk_servald rhizome add file $SIDB1 '' file1_2 file1_2.manifest "$file1_secret" executeOk_servald rhizome add file $SIDB1 file1_2 file1_2.manifest "$file1_secret"
tfw_cat --stderr tfw_cat --stderr
# Rhizome store contents have new payload. # Rhizome store contents have new payload.
executeOk_servald rhizome list executeOk_servald rhizome list
@ -550,7 +550,7 @@ setup_AddUpdateAutoVersion() {
test_AddUpdateAutoVersion() { test_AddUpdateAutoVersion() {
tfw_cat -v file1_2.manifest tfw_cat -v file1_2.manifest
sleep 0.001 # Ensure that at least one millisecond has elapsed sleep 0.001 # Ensure that at least one millisecond has elapsed
executeOk_servald rhizome add file $SIDB1 '' file1_2 file1_2.manifest executeOk_servald rhizome add file $SIDB1 file1_2 file1_2.manifest
assert_manifest_newer file1.manifest file1_2.manifest assert_manifest_newer file1.manifest file1_2.manifest
# Rhizome store contents reflect new payload. # Rhizome store contents reflect new payload.
executeOk_servald rhizome list executeOk_servald rhizome list
@ -565,7 +565,7 @@ setup_AddUnsupportedService() {
echo -e 'service=Fubar' >file1.manifest echo -e 'service=Fubar' >file1.manifest
} }
test_AddUnsupportedService() { test_AddUnsupportedService() {
execute $servald rhizome add file $SIDB1 '' file1 file1.manifest execute $servald rhizome add file $SIDB1 file1 file1.manifest
assertExitStatus '!=' 0 assertExitStatus '!=' 0
} }
@ -577,7 +577,7 @@ setup_EncryptedPayload() {
echo -e "service=file\nname=private\ncrypt=1" >file1.manifest echo -e "service=file\nname=private\ncrypt=1" >file1.manifest
} }
test_EncryptedPayload() { test_EncryptedPayload() {
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
tfw_cat --stdout --stderr tfw_cat --stdout --stderr
assert_stdout_add_file file1 assert_stdout_add_file file1
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
@ -600,7 +600,7 @@ setup_MeshMSAddCreate() {
echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest
} }
test_MeshMSAddCreate() { test_MeshMSAddCreate() {
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
assert_stdout_add_file file1 assert_stdout_add_file file1
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
extract_manifest_crypt crypt file1.manifest extract_manifest_crypt crypt file1.manifest
@ -620,7 +620,7 @@ setup_MeshMSAddGrow() {
echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest
} }
test_MeshMSAddGrow() { test_MeshMSAddGrow() {
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
assert_stdout_add_file file1 assert_stdout_add_file file1
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
@ -633,7 +633,7 @@ test_MeshMSAddGrow() {
ofilehashes+=("$filehash") ofilehashes+=("$filehash")
echo -e "id=$id\nBK=$bk\nservice=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest echo -e "id=$id\nBK=$bk\nservice=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest
echo "Message$m" >>file1 echo "Message$m" >>file1
executeOk_servald rhizome add file $SIDB1 '' file1 file1.manifest executeOk_servald rhizome add file $SIDB1 file1 file1.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 file1 assert_rhizome_list --fromhere=1 file1
extract_manifest_id idx file1.manifest extract_manifest_id idx file1.manifest
@ -658,7 +658,7 @@ setup_MeshMSAddMissingSender() {
echo -e "service=MeshMS1\nrecipient=$SIDB2" >file1.manifest echo -e "service=MeshMS1\nrecipient=$SIDB2" >file1.manifest
} }
test_MeshMSAddMissingSender() { test_MeshMSAddMissingSender() {
execute $servald rhizome add file $SIDB1 '' file1 file1.manifest execute $servald rhizome add file $SIDB1 file1 file1.manifest
assertExitStatus '!=' 0 assertExitStatus '!=' 0
} }
@ -672,7 +672,7 @@ setup_MeshMSAddMissingRecipient() {
echo -e "service=MeshMS1\nsender=$SIDB1" >file1.manifest echo -e "service=MeshMS1\nsender=$SIDB1" >file1.manifest
} }
test_MeshMSAddMissingRecipient() { test_MeshMSAddMissingRecipient() {
execute $servald rhizome add file $SIDB1 '' file1 file1.manifest execute $servald rhizome add file $SIDB1 file1 file1.manifest
assertExitStatus '!=' 0 assertExitStatus '!=' 0
} }
@ -684,7 +684,7 @@ setup_MeshMSAddMissingAuthor() {
echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB2" >file1.manifest
} }
test_MeshMSAddMissingAuthor() { test_MeshMSAddMissingAuthor() {
executeOk_servald rhizome add file '' '' file1 file1.manifest executeOk_servald rhizome add file '' file1 file1.manifest
assert_stdout_add_file file1 assert_stdout_add_file file1
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
@ -699,21 +699,21 @@ setup_ListFilter() {
echo "File2" > file2 echo "File2" > file2
echo "File3" > file3 echo "File3" > file3
echo "File4" > file4 echo "File4" > file4
executeOk_servald rhizome add file '' '' file1 file1.manifest executeOk_servald rhizome add file '' file1 file1.manifest
assert_stdout_add_file file1 assert_stdout_add_file file1
executeOk_servald rhizome add file '' '' file2 file2.manifest executeOk_servald rhizome add file '' file2 file2.manifest
assert_stdout_add_file file2 assert_stdout_add_file file2
executeOk_servald rhizome add file '' '' file3 file3.manifest executeOk_servald rhizome add file '' file3 file3.manifest
assert_stdout_add_file file3 assert_stdout_add_file file3
executeOk_servald rhizome add file '' '' file4 file4.manifest executeOk_servald rhizome add file '' file4 file4.manifest
assert_stdout_add_file file4 assert_stdout_add_file file4
} }
test_ListFilter() { test_ListFilter() {
executeOk_servald rhizome list '' file executeOk_servald rhizome list file
assert_rhizome_list file1 file2 file3 file4 assert_rhizome_list file1 file2 file3 file4
executeOk_servald rhizome list '' file 'file%' executeOk_servald rhizome list file 'file%'
assert_rhizome_list file1 file2 file3 file4 assert_rhizome_list file1 file2 file3 file4
executeOk_servald rhizome list '' '' 'file2' executeOk_servald rhizome list '' 'file2'
assert_rhizome_list file2 assert_rhizome_list file2
} }
@ -729,49 +729,49 @@ setup_MeshMSListFilter() {
echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB4" >file3.manifest echo -e "service=MeshMS1\nsender=$SIDB1\nrecipient=$SIDB4" >file3.manifest
echo "Message3" >file4 echo "Message3" >file4
echo -e "service=MeshMS1\nsender=$SIDB2\nrecipient=$SIDB3" >file4.manifest echo -e "service=MeshMS1\nsender=$SIDB2\nrecipient=$SIDB3" >file4.manifest
executeOk_servald rhizome add file '' '' file1 file1.manifest executeOk_servald rhizome add file '' file1 file1.manifest
assert_stdout_add_file file1 assert_stdout_add_file file1
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
executeOk_servald rhizome add file '' '' file2 file2.manifest executeOk_servald rhizome add file '' file2 file2.manifest
assert_stdout_add_file file2 assert_stdout_add_file file2
assert_manifest_complete file2.manifest assert_manifest_complete file2.manifest
executeOk_servald rhizome add file '' '' file3 file3.manifest executeOk_servald rhizome add file '' file3 file3.manifest
assert_stdout_add_file file3 assert_stdout_add_file file3
assert_manifest_complete file3.manifest assert_manifest_complete file3.manifest
executeOk_servald rhizome add file '' '' file4 file4.manifest executeOk_servald rhizome add file '' file4 file4.manifest
assert_stdout_add_file file4 assert_stdout_add_file file4
assert_manifest_complete file4.manifest assert_manifest_complete file4.manifest
executeOk_servald rhizome list executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 file1 file2 file3 file4 assert_rhizome_list --fromhere=1 file1 file2 file3 file4
} }
test_MeshMSListFilter() { test_MeshMSListFilter() {
executeOk_servald rhizome list '' file executeOk_servald rhizome list file
assert_rhizome_list assert_rhizome_list
executeOk_servald rhizome list '' MeshMS1 executeOk_servald rhizome list MeshMS1
assert_rhizome_list --fromhere=1 file1 file2 file3 file4 assert_rhizome_list --fromhere=1 file1 file2 file3 file4
executeOk_servald rhizome list '' '' '' $SIDB1 executeOk_servald rhizome list '' '' $SIDB1
assert_rhizome_list --fromhere=1 file1 file2 file3 assert_rhizome_list --fromhere=1 file1 file2 file3
executeOk_servald rhizome list '' '' '' $SIDB2 executeOk_servald rhizome list '' '' $SIDB2
assert_rhizome_list --fromhere=1 file4 assert_rhizome_list --fromhere=1 file4
executeOk_servald rhizome list '' '' $SIDB3
assert_rhizome_list
executeOk_servald rhizome list '' '' $SIDB4
assert_rhizome_list
executeOk_servald rhizome list '' '' '' $SIDB1
assert_rhizome_list
executeOk_servald rhizome list '' '' '' $SIDB2
assert_rhizome_list --fromhere=1 file1
executeOk_servald rhizome list '' '' '' $SIDB3 executeOk_servald rhizome list '' '' '' $SIDB3
assert_rhizome_list --fromhere=1 file2 file4
executeOk_servald rhizome list file '' '' $SIDB3
assert_rhizome_list assert_rhizome_list
executeOk_servald rhizome list '' '' '' $SIDB4 executeOk_servald rhizome list '' '' '' $SIDB4
assert_rhizome_list
executeOk_servald rhizome list '' '' '' '' $SIDB1
assert_rhizome_list
executeOk_servald rhizome list '' '' '' '' $SIDB2
assert_rhizome_list --fromhere=1 file1
executeOk_servald rhizome list '' '' '' '' $SIDB3
assert_rhizome_list --fromhere=1 file2 file4
executeOk_servald rhizome list '' file '' '' $SIDB3
assert_rhizome_list
executeOk_servald rhizome list '' '' '' '' $SIDB4
assert_rhizome_list --fromhere=1 file3 assert_rhizome_list --fromhere=1 file3
executeOk_servald rhizome list '' '' '' $SIDB1 $SIDB4 executeOk_servald rhizome list '' '' $SIDB1 $SIDB4
assert_rhizome_list --fromhere=1 file3 assert_rhizome_list --fromhere=1 file3
executeOk_servald rhizome list '' '' '' $SIDB2 $SIDB4 executeOk_servald rhizome list '' '' $SIDB2 $SIDB4
assert_rhizome_list assert_rhizome_list
executeOk_servald rhizome list '' '' '' $SIDB2 $SIDB3 executeOk_servald rhizome list '' '' $SIDB2 $SIDB3
assert_rhizome_list --fromhere=1 file4 assert_rhizome_list --fromhere=1 file4
} }
@ -781,7 +781,7 @@ setup_ImportForeignBundle() {
setup_rhizome setup_rhizome
set_instance +A set_instance +A
echo "Hello from A" >fileA echo "Hello from A" >fileA
executeOk_servald rhizome add file $SIDA1 '' fileA fileA.manifest executeOk_servald rhizome add file $SIDA1 fileA fileA.manifest
assert_stdout_add_file fileA assert_stdout_add_file fileA
set_instance +B set_instance +B
} }
@ -799,7 +799,7 @@ setup_ImportOwnBundle() {
setup_servald setup_servald
setup_rhizome setup_rhizome
echo "Hello from B" >fileB echo "Hello from B" >fileB
executeOk_servald rhizome add file $SIDB2 '' fileB fileB.manifest executeOk_servald rhizome add file $SIDB2 fileB fileB.manifest
assert_stdout_add_file fileB assert_stdout_add_file fileB
extract_manifest_id manifestid fileB.manifest extract_manifest_id manifestid fileB.manifest
extract_manifest_version version fileB.manifest extract_manifest_version version fileB.manifest
@ -839,7 +839,7 @@ setup_ImportCombinedBundle() {
setup_rhizome setup_rhizome
set_instance +A set_instance +A
echo "Hello from A" >fileA echo "Hello from A" >fileA
executeOk_servald rhizome add file $SIDA1 '' fileA fileA.manifest executeOk_servald rhizome add file $SIDA1 fileA fileA.manifest
assert_stdout_add_file fileA assert_stdout_add_file fileA
extract_manifest_id manifestid fileA.manifest extract_manifest_id manifestid fileA.manifest
extract_manifest_filehash filehash fileA.manifest extract_manifest_filehash filehash fileA.manifest

View File

@ -77,14 +77,14 @@ setup_FileTransfer() {
test_FileTransfer() { test_FileTransfer() {
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
assert_rhizome_received file1 assert_rhizome_received file1
set_instance +A set_instance +A
rhizome_update_file file1 file2 rhizome_update_file file1 file2
set_instance +B set_instance +B
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file2 assert_rhizome_list --fromhere=0 file2
assert_rhizome_received file2 assert_rhizome_received file2
} }
@ -95,7 +95,7 @@ setup_EncryptedTransfer() {
set_instance +A set_instance +A
echo "Clear Text" >file1 echo "Clear Text" >file1
echo -e "service=MeshMS1\nsender=$SIDA\nrecipient=$SIDB" >file1.manifest echo -e "service=MeshMS1\nsender=$SIDA\nrecipient=$SIDB" >file1.manifest
executeOk_servald rhizome add file $SIDA '' file1 file1.manifest executeOk_servald rhizome add file $SIDA file1 file1.manifest
extract_manifest_id BID file1.manifest extract_manifest_id BID file1.manifest
extract_manifest_version VERSION file1.manifest extract_manifest_version VERSION file1.manifest
start_servald_instances +A +B start_servald_instances +A +B
@ -136,14 +136,14 @@ setup_HTTPTransport() {
test_HTTPTransport() { test_HTTPTransport() {
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
assert_rhizome_received file1 assert_rhizome_received file1
set_instance +A set_instance +A
rhizome_update_file file1 file2 rhizome_update_file file1 file2
set_instance +B set_instance +B
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file2 assert_rhizome_list --fromhere=0 file2
assert_rhizome_received file2 assert_rhizome_received file2
} }
@ -163,14 +163,14 @@ setup_MDPTransport() {
test_MDPTransport() { test_MDPTransport() {
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
assert_rhizome_received file1 assert_rhizome_received file1
set_instance +A set_instance +A
rhizome_update_file file1 file2 rhizome_update_file file1 file2
set_instance +B set_instance +B
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file2 assert_rhizome_list --fromhere=0 file2
assert_rhizome_received file2 assert_rhizome_received file2
} }
@ -193,7 +193,7 @@ setup_FileTransferBigMDP() {
test_FileTransferBigMDP() { test_FileTransferBigMDP() {
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
assert_rhizome_received file1 assert_rhizome_received file1
} }
@ -216,7 +216,7 @@ setup_FileTransferBig() {
test_FileTransferBig() { test_FileTransferBig() {
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
assert_rhizome_received file1 assert_rhizome_received file1
} }
@ -246,7 +246,7 @@ test_FileTransferMulti() {
wait_until bundle_received_by $BID:$VERSION +B +C +D +E wait_until bundle_received_by $BID:$VERSION +B +C +D +E
for i in B C D E; do for i in B C D E; do
set_instance +$i set_instance +$i
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
assert_rhizome_received file1 assert_rhizome_received file1
done done
@ -277,7 +277,7 @@ test_FileTransferMultiMDP() {
wait_until bundle_received_by $BID:$VERSION +B +C +D +E wait_until bundle_received_by $BID:$VERSION +B +C +D +E
for i in B C D E; do for i in B C D E; do
set_instance +$i set_instance +$i
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1 assert_rhizome_list --fromhere=0 file1
assert_rhizome_received file1 assert_rhizome_received file1
done done
@ -300,7 +300,7 @@ setup_FileTransferDelete() {
test_FileTransferDelete() { test_FileTransferDelete() {
wait_until bundle_received_by $BID:$VERSION +B wait_until bundle_received_by $BID:$VERSION +B
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 file1_2 assert_rhizome_list --fromhere=0 file1_2
assert_rhizome_received file1_2 assert_rhizome_received file1_2
} }
@ -332,7 +332,7 @@ name. We decided against this approach as the VOMP channel driver was written
in time to avoid it. in time to avoid it.
EOF EOF
set_instance +B set_instance +B
executeOk_servald rhizome add file $SIDB '' README.WHYNOTSIPS README.WHYNOTSIPS.manifest executeOk_servald rhizome add file $SIDB README.WHYNOTSIPS README.WHYNOTSIPS.manifest
assert_manifest_complete README.WHYNOTSIPS.manifest assert_manifest_complete README.WHYNOTSIPS.manifest
assert_stdout_add_file README.WHYNOTSIPS assert_stdout_add_file README.WHYNOTSIPS
set_instance +A set_instance +A
@ -350,7 +350,7 @@ test_HttpImport() {
--form 'manifest=@README.WHYNOTSIPS.manifest' \ --form 'manifest=@README.WHYNOTSIPS.manifest' \
"$addr_localhost:$PORTA/rhizome/import" "$addr_localhost:$PORTA/rhizome/import"
tfw_cat http.headers http.output tfw_cat http.headers http.output
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 README.WHYNOTSIPS assert_rhizome_list --fromhere=0 README.WHYNOTSIPS
assert_rhizome_received README.WHYNOTSIPS assert_rhizome_received README.WHYNOTSIPS
} }
@ -371,7 +371,7 @@ test_HttpAddLocal() {
echo 'File file1' >file1 echo 'File file1' >file1
executeOk curl --silent --form 'data=@file1' "http://${addr_localhost}:$PORTA/rhizome/secretaddfile" --output file1.manifest executeOk curl --silent --form 'data=@file1' "http://${addr_localhost}:$PORTA/rhizome/secretaddfile" --output file1.manifest
assert_manifest_complete file1.manifest assert_manifest_complete file1.manifest
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 file1 assert_rhizome_list --fromhere=1 file1
extract_manifest_name name file1.manifest extract_manifest_name name file1.manifest
assert [ "$name" = file1 ] assert [ "$name" = file1 ]
@ -421,13 +421,13 @@ test_DirectPush() {
tfw_cat --stdout --stderr tfw_cat --stdout --stderr
assert bundle_received_by $BID_B1:$VERSION_B1 $BID_B2:$VERSION_B2 $BID_B3:$VERSION_B3 +A assert bundle_received_by $BID_B1:$VERSION_B1 $BID_B2:$VERSION_B2 $BID_B3:$VERSION_B3 +A
set_instance +A set_instance +A
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 fileA1 fileA2 fileA3 --fromhere=0 fileB1 fileB2 fileB3 assert_rhizome_list --fromhere=1 fileA1 fileA2 fileA3 --fromhere=0 fileB1 fileB2 fileB3
assert_rhizome_received fileB1 assert_rhizome_received fileB1
assert_rhizome_received fileB2 assert_rhizome_received fileB2
assert_rhizome_received fileB3 assert_rhizome_received fileB3
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 fileB1 fileB2 fileB3 assert_rhizome_list --fromhere=1 fileB1 fileB2 fileB3
} }
@ -442,10 +442,10 @@ test_DirectPull() {
tfw_cat --stdout --stderr tfw_cat --stdout --stderr
assert bundle_received_by $BID_A1:$VERSION_A1 $BID_A2:$VERSION_A2 $BID_A2:$VERSION_A2 --stderr assert bundle_received_by $BID_A1:$VERSION_A1 $BID_A2:$VERSION_A2 $BID_A2:$VERSION_A2 --stderr
set_instance +A set_instance +A
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 fileA1 fileA2 fileA3 assert_rhizome_list --fromhere=1 fileA1 fileA2 fileA3
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 fileA1 fileA2 fileA3 --fromhere=1 fileB1 fileB2 fileB3 assert_rhizome_list --fromhere=0 fileA1 fileA2 fileA3 --fromhere=1 fileB1 fileB2 fileB3
assert_rhizome_received fileA1 assert_rhizome_received fileA1
assert_rhizome_received fileA2 assert_rhizome_received fileA2
@ -463,13 +463,13 @@ test_DirectSync() {
tfw_cat --stdout --stderr tfw_cat --stdout --stderr
assert bundle_received_by $BID_A1:$VERSION_A1 $BID_A2:$VERSION_A2 $BID_A2:$VERSION_A2 --stderr assert bundle_received_by $BID_A1:$VERSION_A1 $BID_A2:$VERSION_A2 $BID_A2:$VERSION_A2 --stderr
set_instance +A set_instance +A
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=1 fileA1 fileA2 fileA3 --fromhere=0 fileB1 fileB2 fileB3 assert_rhizome_list --fromhere=1 fileA1 fileA2 fileA3 --fromhere=0 fileB1 fileB2 fileB3
assert_rhizome_received fileB1 assert_rhizome_received fileB1
assert_rhizome_received fileB2 assert_rhizome_received fileB2
assert_rhizome_received fileB3 assert_rhizome_received fileB3
set_instance +B set_instance +B
executeOk_servald rhizome list '' executeOk_servald rhizome list
assert_rhizome_list --fromhere=0 fileA1 fileA2 fileA3 --fromhere=1 fileB1 fileB2 fileB3 assert_rhizome_list --fromhere=0 fileA1 fileA2 fileA3 --fromhere=1 fileB1 fileB2 fileB3
assert_rhizome_received fileA1 assert_rhizome_received fileA1
assert_rhizome_received fileA2 assert_rhizome_received fileA2