Jude Nelson
9ebdf3b855
reader_pubkeys are distinct from readers (public keys versus addresses).
2017-05-01 16:39:28 -04:00
Jude Nelson
04f857aef7
preliminary work on encryption: take the list of readers' addresses and public keys so we can encrypt and encode files and directories to be readable only to the designated recipients
2017-04-27 19:30:01 -04:00
Jude Nelson
46e3f484a9
make rmtree more amenable to batched inode deletion
2017-04-25 20:22:27 -04:00
Jude Nelson
f93799fd3f
use virtualchain key methods
2017-04-20 17:42:37 -04:00
Jude Nelson
f0f2b82d5d
clarify variable name--we don't expect json
2017-04-05 15:05:42 -04:00
Jude Nelson
61fbd0576d
expose get_mutable_data_version() and put_mutable_data_version()
2017-04-05 11:23:27 -04:00
Jude Nelson
0efdf19e36
send API password as 'bearer' ( #351 )
2017-03-27 18:08:54 -04:00
Jude Nelson
cd6232b147
enforce create/exists requirements for inodes; fix bugs found in testing with service-level faults
2017-03-23 18:55:15 -04:00
Jude Nelson
a0232a395f
datastore operations return errno
2017-03-22 23:29:49 -04:00
Jude Nelson
e14adbb87c
bugfixes in the Python client found intesting
2017-03-22 15:40:18 -04:00
Jude Nelson
5ac2853308
fix a few bugs and take extra message verification steps:
...
* when replicating an inode, replicate each (inode header, payload) pair instead of all headers and then all payloads (makes it easier to do a successful partial write)
* do not assume that we know the device IDs; allow the caller to supply them
* sign and verify the datastore record on datastore-mutate operations
* verify that all tombstones' device IDs cover the caller-given set of device IDs
2017-03-22 14:57:04 -04:00
Jude Nelson
2a7075a1da
increment dirent version
2017-03-21 11:34:46 -04:00
Jude Nelson
93caa6f10a
don't get idata by default, but request it
2017-03-17 14:37:44 -04:00
Jude Nelson
b736d55209
update parent directory version when modifying children; keep version in inode structure as well as mutable data blob; allow caller to override version checks
2017-03-17 11:46:56 -04:00
Jude Nelson
e9336b9ccf
allow multiple putfile on the same path
2017-03-16 18:00:57 -04:00
Jude Nelson
af0d5156e1
store base64-encoded file data
2017-03-16 11:29:15 -04:00
Jude Nelson
e6de9d9ab1
fix up client-side datastore API to not require an indexer proxy object
2017-03-15 18:12:02 -04:00
Jude Nelson
5dd8f7d2b4
refactored datastore API to require clients to sign everything with an external key. datastore I/O requires signed inodes, their payloads, and tombstones (for deletion)
2017-03-13 17:51:41 -04:00
Jude Nelson
3dd4d89bbf
refactor data API such that we (1) generate inodes and tombstones, (2) sign them all, and (3) replicate them. These steps must be separate.
2017-03-09 20:03:55 -05:00
Jude Nelson
ee4f897ea3
use exclusively the required storage drivers for data stores
2017-03-01 23:08:35 -05:00
Jude Nelson
90ee4f7fa8
don't json.dumps our data; delete consistency info on delete-inode and delete-datastore
2017-03-01 19:30:05 -05:00
Jude Nelson
ca9ef4324b
add "typed netstrings" to use to serialize and parse mutable data (so we don't rely on JSON, which has limits)
2017-02-28 16:26:06 -05:00
Jude Nelson
4329a657b7
fix bugs found in testing; better error messages
2017-02-24 19:18:08 -05:00
Jude Nelson
7942d74e33
make sure we return an errno on data-plane operations
2017-02-23 17:23:36 -05:00
Jude Nelson
66c2e0d9a0
datastore bugfixes found during testing
2017-02-21 12:34:18 -05:00
Jude Nelson
bf8d43b537
refactor and remove a lot of code from the storage logic. Stores are now identified by the hash of a public key derived from the app's domain and the user's master key. There is no longer a need for user objects, user lists, and private key indexes, and no longer a need for storage bootstrapping.
2017-02-20 21:00:31 -05:00
Jude Nelson
4cdf0f537a
datastore privatekey hdpath is account_key/0'
2017-02-12 19:15:56 -05:00
Jude Nelson
6fae7dc70d
differentiate between local and global private key indexes and local and global users
2017-02-12 03:33:27 -05:00
Jude Nelson
c476022976
do not require blockchain ID in data setup
2017-02-10 17:39:52 -05:00
Jude Nelson
7b17a5cdcb
rework a few things about inodes and inode data in a data store:
...
* make sure we check all inode headers before getting an inode, so we know the latest version
* have get_mutable, put_mutable, and delete_mutable update data consistency information across all write-devices
* have get_mutable remember which driver(s) succeeded, so subsequent calls on e.g. inode resolution don't needlessly query stale data
* remember data consistency information by device ID, as well as data ID.
2017-02-06 15:11:30 -05:00
Jude Nelson
04a6ccf86b
revamp mutable data API for multiple devices:
...
* get_mutable will search for the latest version of a datum across a set of known devices
* put_mutable will include the device ID in the data it replicates
* delete_mutable will delete from all devices
* datastore inodes will rely on their headers to identify the globally-latest version of the inode data
* user lists and private key indexes will track cross-device versioning so that an update from one device will always be processed by the others.
2017-01-30 01:39:26 -05:00
Jude Nelson
e44235cd62
get_mutable: try each data store until we get fresh data; data_setup: refactor and clean up; stop trying to auto-migrate name profiles (since we don't need the profile any longer)
2017-01-23 19:07:00 -05:00
Jude Nelson
20dfe8b9a7
keep the private key indexes, public user keys, and user lists on shared storage (not just local storage).
...
* add support for getting, setting, and deleting user state from storage providers
* add support for generating and saving per-identity and per-user private key indexes
* make sure get_mutable() operates on *non-local* data storage providers for shared data.
2017-01-18 18:44:10 -05:00
Jude Nelson
667512f37d
stricter requirements for datastore names and user IDs; also, add a 'type' field to the datastore (to differentiate between collections and datastores)
2017-01-17 19:04:10 -05:00
Jude Nelson
e4455caf96
Repository re-organization
2017-01-17 11:16:19 -05:00