@@ -87,14 +87,14 @@ they appear in all capitals, as shown here.
8787
8888# # Functions
8989
90- Open Cloud Mesh defines distinct functions, it is not neccessary for an
90+ Open Cloud Mesh defines distinct functions. It is not necessary for an
9191implementation to provide all of them. In fact, it may be useful to
9292have separate implementations for different functions.
9393
9494# ## OCM Provider
9595
9696An OCM Provider is an entity that can take on the two _roles_ of a
97- _Sending Server_ and a _Receiving Server_. An OCM Provider MUST be a
97+ _Sending Server_ and a _Receiving Server_. An OCM Provider MUST be a
9898_Discoverable Server_ and SHOULD be able to receive _Notifications_.
9999
100100# ## OCM Directory Service
@@ -111,10 +111,10 @@ take on: the _Sending Server_ role and the _Receiving Server_ role.
111111
112112A Sending Server is an OCM Provider that holds Resources and exposes
113113APIs to allow access to them. It allows its users to create _Shares_
114- to give other users access to those Resources. A Sending Server MAY
114+ to give other users access to those Resources. A Sending Server MAY
115115provide its users with the ability to generate _Invites_ to establish
116- contact with other users on other OCM Providers. When doing so it MAY
117- provide a _WAYF Page_ to facilitate the Invite Flow. The WAYF page MAY
116+ contact with other users on other OCM Providers. When doing so it MAY
117+ provide a _WAYF Page_ to facilitate the Invite Flow. The WAYF page MAY
118118be limited to a set of trusted OCM Providers, for instance those in the
119119same _Federation_.
120120
@@ -124,7 +124,7 @@ same _Federation_.
124124A Receiving Server is an OCM Provider that receives _Share_ Creation
125125Notifications from Sending Servers, notifies its users about incoming
126126_Shares_, and acts as an API client to allow its users to access Remote
127- Resources. It MAY provide it's users with an _Address Book_ of
127+ Resources. It MAY provide its users with an _Address Book_ of
128128_Contacts_ and the ability to accept _Invites_.
129129
130130
@@ -139,7 +139,7 @@ elsewhere:
139139* __Discoverable Server__ - A server that tries to supply information in
140140 OCM API Discovery.
141141* __Federation__ - A group of OCM Providers that have established
142- mutual trust and agree on certain policies for interaction. A
142+ mutual trust and agree on certain policies for interaction. A
143143 Federation MAY be facilitated by a Directory Service.
144144* __FQDN__ - Fully Qualified Domain Name, such as `"cloud.example.com"`.
145145* __Invite Acceptance Gesture__ - Gesture from the Invite Receiver to
@@ -177,19 +177,19 @@ elsewhere:
177177 Invite Sender's OCM Address.
178178* __OCM Address__ - identifies a user or group "at" an OCM Server.
179179The OCM Address contains a server specific Party identifier, a host
180- locating the OCM Server and an optional port. The OCM Address is not a
180+ locating the OCM Server and an optional port. The OCM Address is not a
181181URI as it does not have scheme and the identifier may contain reserved
182182characters.
183183
184184 ocm-address = identifier "@" host [ ":" port]
185185
186- The identifier is an opaque, case-sensitive UTF-8 string. It is
187- separated from the host by the last "@" in the OCM Address. It is
188- possible to have multiple @-signs in a OCM-address, e.g. when an
189- email address is the local part of the address like
186+ The identifier is an opaque, case-sensitive UTF-8 string. It is
187+ separated from the host by the last "@" in the OCM Address. It is
188+ possible to have multiple @-signs in a OCM-address, e.g. when an
189+ email address is the local part of the address like
190190 ` [email protected] @ocm.example.org` . 191191
192- host is an IP literal encapsulated within square brackets, an IPv4
192+ host is an IP literal encapsulated within square brackets, an IPv4
193193 address in dotted decimal form, or a registered name as described in
194194 [RFC3986].
195195
@@ -198,8 +198,8 @@ characters.
198198 The optional port subcomponent can be used to specify a port to use
199199 for discovery (see Discovery Process).
200200
201- The OCM Server MUST be discoverable at the given host and optional
202- port via the Well-Known [RFC8615] path `/.well-known/ocm`. The OCM
201+ The OCM Server MUST be discoverable at the given host and optional
202+ port via the Well-Known [RFC8615] path `/.well-known/ocm`. The OCM
203203 Address MUST NOT contain a path.
204204
205205* __OCM API Discovery__ - Process of evaluating properties of a Remote
@@ -262,15 +262,15 @@ characters.
262262 another OCM Server, based on out-of-band information, federation
263263 membership or prior interactions, SHOULD be recorded in an internal
264264 registry of trusted servers, that SHOULD be updated over time based
265- on new information. The registry SHOULD include the FQDN of the
266- trusted server and the Public Key used for HTTP Signatures. It MAY
265+ on new information. The registry SHOULD include the FQDN of the
266+ trusted server and the Public Key used for HTTP Signatures. It MAY
267267 also include additional metadata such as the inviteAcceptDialog URL
268268 or supported capabilities.
269269* __WAYF Page__ - A Where-Are-You-From page is a discovery service used
270270 to identify the OCM Server of an Invite Receiver.
271271
272272In Appendix D, an object model is presented as a non-normative guide for
273- implementators to understand the relationships between these terms.
273+ implementers to understand the relationships between these terms.
274274
275275# General Flow
276276
@@ -476,11 +476,11 @@ time without notifying them.
476476
477477# ## Invite format
478478To accept an invite, two pieces of information are required : a `token`
479- and a `provider`. There are two recognized formats :
479+ and a `provider`. There are two recognized formats :
480480
481481* **Invite string format:**
482482 A base64-encoded string containing the token and the provider’s FQDN,
483- joined by an `@` sign. Example :
483+ joined by an `@` sign. Example :
484484
485485 If the `token` is `a55a966e-15c1-4cb9-a39d-4e4c54399baf` and the
486486 ` provider` is `my-cloud-storage.org`, the combined string is
@@ -495,7 +495,7 @@ and a `provider`. There are two recognized formats:
495495
496496* **Link format:**
497497 If the inviting OCM Server supports a WAYF page, the invite may be
498- provided as a link with the token as a request parameter. Example :
498+ provided as a link with the token as a request parameter. Example :
499499
500500 ` https://my-cloud-storage.org/wayf?token=
501501 a55a966e-15c1-4cb9-a39d-4e4c54399baf`
@@ -611,7 +611,7 @@ Step 4: If not, try a HTTP GET with `https://<fqdn>/ocm-provider` as
611611the URL instead.
612612Step 5 : If that results in a valid HTTP response with a valid JSON
613613response body within reasonable time, go to step 7.
614- Step 6 : If not, fail. Implementations MAY fallback to HTTP instead
614+ Step 6 : If not, fail. Implementations MAY fallback to HTTP instead
615615of HTTPS in testing setups and retry steps 2-5, in particular when
616616an optional port is given in the address.
617617Step 7 : The JSON response body is the data that was discovered.
@@ -988,7 +988,7 @@ with any related share.
988988Notifications from Sending Server to Receiving Server SHOULD use
989989httpsig [RFC9421] so the Receiving Server can authenticate the origin
990990of the notification. Receiving Servers SHOULD decline notifications
991- from Sending Servers without httpsig as it can't identify where the
991+ from Sending Servers without httpsig as it can't identify where the
992992notification is coming from.
993993
994994# ## Receiving Party Notification
@@ -1076,7 +1076,7 @@ Date: Wed, 05 Nov 2025 14:00:00 GMT
10761076Content-Type: application/x-www-form-urlencoded
10771077Digest: SHA-256=ok6mQ3WZzKc8nb7s/Jt2yY1uK7d2n8Zq7dhl3Q0s1xk=
10781078Content-Length: 101
1079- Signature-Input:
1079+ Signature-Input:
10801080 sig1=("@method" "@target-uri" "content-digest" "date"); \
10811081 created=1730815200; keyid="receiver.example.org#2025"; \
10821082 alg="rsa-sha256"
@@ -1207,7 +1207,7 @@ Implementers SHOULD NOT use it and prefer short-lived tokens instead.
12071207# # Code Flow
12081208
12091209All `{tokenEndPoint}` requests MUST be transmitted over HTTPS and
1210- signed using HTTP Signatures. Bearer tokens MUST be treated as
1210+ signed using HTTP Signatures. Bearer tokens MUST be treated as
12111211confidential and never logged, persisted beyond their lifetime, or
12121212transmitted over unsecured channels.
12131213
@@ -1231,14 +1231,14 @@ Key Words](https://datatracker.ietf.org/html/rfc8174)", May 2017.
12311231[RFC9421] Backman, A., Richer, J. and Sporny, M. "[HTTP Message
12321232Signatures](https://tools.ietf.org/html/rfc9421)", February 2024.
12331233
1234- [RFC3986] Berners-Lee, T., Fielding, R. and Masinter, L.
1234+ [RFC3986] Berners-Lee, T., Fielding, R. and Masinter, L.
12351235" [Uniform Resource Identifier (URI): Generic Syntax
12361236](https://datatracker.ietf.org/doc/html/rfc3986)" , January 2005
12371237
12381238[RFC6749] Hardt, D. (ed), "[The OAuth 2.0 Authorization Framework](
12391239https://datatracker.ietf.org/html/rfc6749)", October 2012.
12401240
1241- [RFC8615] Nottingham, M. "[Well-Known Uniform Resource Identifiers
1241+ [RFC8615] Nottingham, M. "[Well-Known Uniform Resource Identifiers
12421242(URIs)](https://datatracker.ietf.org/doc/html/rfc8615)", May 2019
12431243
12441244
@@ -1444,7 +1444,7 @@ format:
14441444
14451445An implementor of OCM MAY choose any internal object model to represent
14461446an _Address Book_, a _Contact_, an _Invite_, a _Provider_, a _Share_,
1447- and a _User_. However, the following diagrams are provided to clarify
1447+ and a _User_. The following diagrams are provided to clarify
14481448the concepts and their relationships, as a guide for implementors.
14491449
14501450# # Address Book
@@ -1456,12 +1456,12 @@ the Sending Server's database from the selection of the _Receiving
14561456Party_ in preparation for Share Creation.
14571457
14581458The Address Book entity maintains a collection of contacts for a user
1459- within the OCM provider. It serves as the primary mechanism for managing
1460- federated relationships between users across different OCM Servers.
1461- _Contacts_ may be added to the Address Book through the Invite flow or
1462- direct entry. It provides a convenient way for users to organize and
1463- access their federated contacts, and MAY allow users to generate
1464- _Invites_.
1459+ within the OCM provider. It serves as the primary mechanism for
1460+ managing federated relationships between users across different OCM
1461+ Servers. _Contacts_ may be added to the Address Book through the Invite
1462+ flow or direct entry. It provides a convenient way for users to
1463+ organize and access their federated contacts, and MAY allow users to
1464+ generate _Invites_.
14651465
14661466` ` `
14671467+-----------------+
@@ -1491,8 +1491,8 @@ _Invites_.
14911491
14921492# # Contact
14931493A Contact represents a federated user relationship established through
1494- the OCM protocol. Contacts are stored in _Address Books_ and may be
1495- created through the Invite process or via direct entry. A Contact MAY
1494+ the OCM protocol. Contacts are stored in _Address Books_ and may be
1495+ created through the Invite process or via direct entry. A Contact MAY
14961496of course contain much more detailed information about the referenced
14971497user such as if it was added via _Invites_ or direct entry.
14981498
@@ -1528,7 +1528,7 @@ user such as if it was added via _Invites_ or direct entry.
15281528# # Invite
15291529
15301530The Invite entity represents the bidirectional trust establishment
1531- mechanism in OCM. It facilitates secure contact exchange between users
1531+ mechanism in OCM. It facilitates secure contact exchange between users
15321532on different OCM Servers.
15331533
15341534` ` `
@@ -1564,7 +1564,7 @@ on different OCM Servers.
15641564# # Provider
15651565
15661566The Provider entity represents an OCM Server's capabilities and
1567- configuration as discovered through the OCM API Discovery process. It
1567+ configuration as discovered through the OCM API Discovery process. It
15681568represents both the Sending Server and Receiving Server roles, and an
15691569implementor might find it useful to have a Provider object model to
15701570store the discovered information about federation peers or other remote
@@ -1576,7 +1576,7 @@ OCM Providers.
15761576 | (OCM Server) |
15771577 +-----------------------+
15781578 | - apiVersion |
1579- | - enabled: bool |
1579+ | - enabled |
15801580 | - endPoint |
15811581 | - inviteAcceptDialog |
15821582 | - provider |
@@ -1588,22 +1588,22 @@ OCM Providers.
15881588 |
15891589 +---------+---------+----------------------+
15901590 | | |
1591- v v v
1592- +------------------+ +------------------+ +------------------+
1593- | ResourceTypes[] | | Capabilities[] | | Criteria[] |
1591+ v v v
1592+ +------------------+ +------------------+ +------------------+
1593+ | ResourceTypes[] | | Capabilities[] | | Criteria[] |
15941594+------------------+ +------------------+ +------------------+
15951595| - name | | - enforce-mfa | | - allowlist |
15961596| - shareTypes[] | | - exchange-token | | - denylist |
15971597| - protocols{} | | - invite-wayf | | - http-signatures|
15981598+------------------+ | - invites | | - invite |
15991599 | | - webdav-uri | | - token-exchange |
16001600 | +------------------+ +------------------+
1601- | supports
1602- v
1603- +------------------+
1601+ | supports
1602+ v
1603+ +------------------+
16041604| Protocols |
16051605+------------------+
1606- | - datatx |
1606+ | - ssh |
16071607| - webapp |
16081608| - webdav |
16091609| - ... |
@@ -1634,10 +1634,10 @@ from a Sending Party to a Receiving Party.
16341634 | |
16351635 | creates | accesses
16361636 v v
1637- +------------------+ notification +------------------+
1637+ +------------------+ notification +------------------+
16381638| Share |-------------------->| Receiving Server |
16391639+------------------+ +------------------+
1640- | - expiration | |
1640+ | - expiration | |
16411641| - name | | mediates access to
16421642| - owner | v
16431643| - protocol | +------------------+
@@ -1662,7 +1662,7 @@ from a Sending Party to a Receiving Party.
16621662* __expiration__: Optional expiration timestamp
16631663* __name__: Human-readable name of the shared Resource
16641664* __owner__: OCM Address of the Resource owner
1665- * __protocol__: Access protocol configuration (webdav, webapp, datatx )
1665+ * __protocol__: Access protocol name and details (webdav, ssh, webapp, ... )
16661666* __providerId__: Unique identifier for the Share at the provider
16671667* __requirements__: Array of access requirements (must-use-mfa,
16681668 must-exchange-token)
@@ -1736,8 +1736,8 @@ Shares and Invites and manage Contacts, and interact with Resources.
17361736# # Resource
17371737
17381738The Resource entity represents the data or service being shared between
1739- OCM Providers. It is the target of Shares and is accessed by the
1740- Receiving Party through the Sending Server's API. In general a Resource
1739+ OCM Providers. It is the target of Shares and is accessed by the
1740+ Receiving Party through the Sending Server's API. In general a Resource
17411741is a much more complex entity, but for the purpose of OCM we only need
17421742to model a few key properties.
17431743
0 commit comments