CryptoGnome Protocol Details

Data Model

CryptoGnome models each repository as a collection of versioned objects. Each of these objects may be either content-typed BLOBs or collections of other versioned objects. These only behaviors supported by these objects support the semantics of versioned storage and retireval of the BLOB text.

HTTP as RPC Transport

The HTTP POST method essentially creates an RPC transport within HTTP. In RFC 1945, the following statement is made:

The actual function performed by the POST method is determined by the server and is usually dependent on the Request-URI ... Applications must not cache responses to a POST request because the application has no way of knowing that the server would return an equivalent response on some future request.

CryptoGnome URLs

There is really no difference between an HTTP URL and a CryptoGnome URL, but there are conventions about the semantics of the URL'S components. RFC 1808 informally defines the following components of URL syntax:

URL Component    Structure
url <scheme> :// <net-loc> / <path> ; <params> ? <query> # <fragment>
<scheme> : scheme name, as per Section 2.1 of RFC 1738
// <net-loc> network location and login information, as per Section 3.1 of RFC 1738
/ <path> URL path, as per Section 3.1 of RFC 1738
; <params> object parameters (e.g., ";type=a" as in Section 3.2.2 of RFC 1738
? <query> query information, as per Section 3.3 of RFC 1738
# <fragment> fragment identifier

For CryptoGnome URLs, the <scheme> is either http or (in Ordo anyway) vo, the difference being that vo URLs have a well-defined default value for the <net-loc> component, which the http <scheme> does not. Specifically, the default <net-loc> for the vo <scheme> is localhost:8002. This means that there is a precise mapping of vo URLs to http URLs, as well as ensuring that every valid http URL is a valid CryptoGnome URL, while de-emphasizing the network location of versioned objects under the vo <scheme>.

CryptoGnome also makes (optional) use of the ; <params> construction which is not a part of standard http URLs. The <params> value indicates which specific version of the repository object is the receiver of the <query> method invocation.

Transfer Encoding

Use XEmacs! SourceForge
David Rush
Last modified: Wed Nov 15 11:28:56 GMT 2000