fixed some bugs with BK handling. keyring gets loaded when

adding authored bundle so that we can lookup RS.
BK variable name case harmonised.
This commit is contained in:
gardners 2012-05-16 15:19:24 +09:30
parent 33f7ea7103
commit d51545b87a
3 changed files with 11 additions and 4 deletions

View File

@ -1054,10 +1054,16 @@ int app_config_get(int argc, const char *const *argv, struct command_line_option
int app_rhizome_add_file(int argc, const char *const *argv, struct command_line_option *o) int app_rhizome_add_file(int argc, const char *const *argv, struct command_line_option *o)
{ {
const char *filepath, *manifestpath,*authorisingSid; const char *filepath, *manifestpath,*authorisingSid,*pin;
cli_arg(argc, argv, o, "filepath", &filepath, NULL, ""); cli_arg(argc, argv, o, "filepath", &filepath, NULL, "");
cli_arg(argc, argv, o, "manifestpath", &manifestpath, NULL, ""); cli_arg(argc, argv, o, "manifestpath", &manifestpath, NULL, "");
cli_arg(argc, argv, o, "sid", &authorisingSid,NULL,""); cli_arg(argc, argv, o, "sid", &authorisingSid,NULL,"");
cli_arg(argc, argv, o, "pin", &pin,NULL,"");
keyring=keyring_open_with_pins(pin);
if (!keyring) { WHY("keyring add: Failed to create/open keyring file");
return -1; }
/* Ensure the Rhizome database exists and is open */ /* Ensure the Rhizome database exists and is open */
if (create_serval_instance_dir() == -1) if (create_serval_instance_dir() == -1)
@ -1067,7 +1073,7 @@ int app_rhizome_add_file(int argc, const char *const *argv, struct command_line_
* it, otherwise create a blank manifest. */ * it, otherwise create a blank manifest. */
rhizome_manifest *m = NULL; rhizome_manifest *m = NULL;
int manifest_file_supplied = 0; int manifest_file_supplied = 0;
if (manifestpath[0] && access(manifestpath, R_OK) == 0) { if (manifestpath[0] && access(manifestpath, R_OK) == 0) {
m = rhizome_read_manifest_file(manifestpath, 0, 0); // no verify m = rhizome_read_manifest_file(manifestpath, 0, 0); // no verify
if (!m) if (!m)
return WHY("Manifest file could not be loaded -- not added to rhizome"); return WHY("Manifest file could not be loaded -- not added to rhizome");
@ -1520,7 +1526,7 @@ command_line_option command_line_options[]={
"Get specified configuration variable."}, "Get specified configuration variable."},
{app_rhizome_add_file,{"rhizome","add","file","<filepath>","[<manifestpath>]",NULL},CLIFLAG_STANDALONE, {app_rhizome_add_file,{"rhizome","add","file","<filepath>","[<manifestpath>]",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_add_file,{"rhizome","add","authored","file","<filepath>","<sid>","[<manifestpath>]",NULL},CLIFLAG_STANDALONE, {app_rhizome_add_file,{"rhizome","add","authored","file","<filepath>","<sid>","<pin>","[<manifestpath>]",NULL},CLIFLAG_STANDALONE,
"Add a file to Rhizome and remember who authored it, so that they can modify the bundle later."}, "Add a file to Rhizome and remember who authored it, so that they can modify the bundle later."},
{app_rhizome_list,{"rhizome","list","[<service>]","[<sender_sid>]","[<recipient_sid>]","[<offset>]","[<limit>]",NULL},CLIFLAG_STANDALONE, {app_rhizome_list,{"rhizome","list","[<service>]","[<sender_sid>]","[<recipient_sid>]","[<offset>]","[<limit>]",NULL},CLIFLAG_STANDALONE,
"List all manifests and files in Rhizome"}, "List all manifests and files in Rhizome"},

View File

@ -397,6 +397,7 @@ int overlay_get_nexthop(unsigned char *d,unsigned char *nexthop,int *nexthoplen,
return 0; return 0;
} else { } else {
/* Is not a direct neighbour */ /* Is not a direct neighbour */
return WHY("Calculating next-hop destination for nodes that are not direct neighbours is not yet implemented"); return WHY("Calculating next-hop destination for nodes that are not direct neighbours is not yet implemented");
} }
} }

View File

@ -135,7 +135,7 @@ int rhizome_bk_xor(const char *author,
*/ */
int rhizome_extract_privatekey(rhizome_manifest *m,const char *authorHex) int rhizome_extract_privatekey(rhizome_manifest *m,const char *authorHex)
{ {
char *bk = rhizome_manifest_get(m, "bk", NULL, 0); char *bk = rhizome_manifest_get(m, "BK", NULL, 0);
if (!bk) return WHY("Cannot obtain private key as manifest lacks BK field"); if (!bk) return WHY("Cannot obtain private key as manifest lacks BK field");
unsigned char bkBytes[crypto_sign_edwards25519sha512batch_SECRETKEYBYTES]; unsigned char bkBytes[crypto_sign_edwards25519sha512batch_SECRETKEYBYTES];