wiki:API

API

Client API to the nebulostore client library.

This API is synchronous; do we need an asynchronous version of the api?

Types

  • objectKey - a key for locating an object; objKey is constructed by nebulostore (and not by the client application)
  • dirKey - a key for locating a directory; dirKey is an objectKey
  • UserId - a representation of public identity; a unique key that characterizes a user
  • Collection<UserId> recipients - a collection of UserIds of intended recipients of the message; used for broadcast encryption
  • NebuloFile - packed array of bytes (future work: cache, streams, etc)

Object IO

NebuloFile getObject(ObjKey objKey)

ObjKey append(DirKey dir, Object object, Collection<publicKey> recipients) - transaction: appends an object to a directory and puts an object into the storage space;

void modify(ObjKey objKey, Object object, Collection<publicKey> recipients) - replaces an object identified by objKey with a new version; old version(s) may be available

void delete(ObjKey objKey) - deletes an object. Access control questions: deleting my object from a directory that I'm not an owner? Garbage collection: deleting a directory that has child objects?

Notifications

void registerCallback(objKey object, callBackFunction function) - callbacks (executed when an object is modified): how to handle in multi-threading

Directories/organization

Collection<Entry> listDir(DirKey dirKey) - returns a list of entries corresponding to the content of the directory that can be decrypted by the current user; each entry is a tuple (description, ObjKey); either one can be null

DirKey appendDir(DirKey parentDirKey, Collection<publicKey> recipients) - creates a new directory; a link to that directory is placed in parentDirKey

ObjKey move(ObjKey currKey, DirKey newParentDirKey) - moves an object from its current dir to the new dir

Mapping of keys from application space to nebulostore

ObjKey getKey(AppKey appKey) - maps an application-specific appKey to a nebulostore object/directory; there are just a few such mapping defined in the system, stored by DHT/superpeers ObjKey putKey(AppKey appKey) - creates a new mapping from application-specific key (an identifier: an array of bytes) to a nebulostore object

Cryptographic helper functions

void registerCryptoKey(Collection<dirKey> directories, byte[] cryptoKey) - registers a cryptographic private key that decyphers data from directories

Last modified 5 years ago Last modified on 10/14/13 19:02:09