Commit Graph

36 Commits

Author SHA1 Message Date
Jude Nelson
02db42b896 improve API and data structures so file and directory signatures and hashes are completely separate from the data. Also, make return types more consistent 2017-05-17 00:19:24 -04:00
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