Package doirp_v3.v1
Services
service DoIrpService doirp_v3/v1/service.proto
Spec: 7.2 QUERY OPERATION (OC_RESOLUTION)
A query operation consists of a client sending a query request to the responsible server and the server returning the query result to the client. Query requests are used to retrieve identifier elements assigned to any given identifier.
Spec: 7.7.1 ADD ELEMENT(S) (OC_ADD_ELEMENT)
Clients add elements to existing identifier records by sending ADD_ELEMENT requests to the
responsible server. The Message Header of the ADD_ELEMENT request must set its
rpc RemoveElement
Request: doirp_v3.v1.RemoveElementRequest
Response:
doirp_v3.v1.RemoveElementResponse
Spec: 7.7.2 REMOVE ELEMENT(S) (OC_REMOVE_ELEMENT)
Clients remove existing elements by sending REMOVE_ELEMENT requests to the responsible
server. The Message Header of the REMOVE_ELEMENT request must set its
rpc ModifyElement
Request: doirp_v3.v1.ModifyElementRequest
Response:
doirp_v3.v1.ModifyElementResponse
Spec: 7.7.3 MODIFY ELEMENT(S) (OC_MODIFY_ELEMENT)
Clients can make modifications to an existing element by sending MODIFY_ELEMENT requests to
the responsible server. The Message Header of the MODIFY_ELEMENT request must set its
Spec: 7.7.4 CREATE IDENTIFIER (OC_CREATE_ID)
Clients can create new identifiers by sending CREATE_ID requests to the responsible server.
Spec: 7.7.5 DELETE IDENTIFIER (OC_DELETE_ID)
Clients delete existing identifiers by sending DELETE_ID requests to the responsible DO-IRP server.
The Message Header of the DELETE_ID request must set its
rpc ChallengeResponse
Request: doirp_v3.v1.ChallengeResponseRequest
Response:
doirp_v3.v1.ChallengeResponseResponse
Spec: 7.5 CLIENT AUTHENTICATION
Clients are asked to authenticate themselves as administrators when querying for any element with ADMIN_READ but no PUBLIC_READ permission. Client authentication is also required for any administration requests that require administrator privileges. This includes adding, removing, or modifying identifiers or elements.
Client authentication consists of multiple messages exchanged between the client and server. Such
messages include the challenge from the server to the client to authenticate the client, the
challenge-response from the client in response to the server's challenge, and the verification
request and response message if secret key authentication takes place. Messages exchanged
during the authentication are correlated via a unique
The authentication starts with a response message from the server that contains a challenge to the
client. The client must respond to the challenge with a challenge-response message. The server
validates the challenge-response, either by verifying the digital signature inside the challenge-
response, or by sending a verification request to another server (herein referred to as the
verification server), that maintains the secret key for the administrator. The purpose of the
challenge and the challenge-response is to prove to the server that the client possesses the private
key (or the secret key) of the administrator. If the authentication fails, an error response will be
sent back with the
Upon successful client authentication, the server must also make sure that the administrator is
authorized for the request. If the administrator has sufficient privileges, the server will process the
request and send back the result. If the administrator does not have sufficient privileges, the
server will return an error message with
Authentication is not about encryption (although encryption may be used in the process) and is accomplished by use of a Message Authentication Code or digital signature verification.
The following sections provide details of each message exchanged during the authentication process.
7.5.1 CHALLENGE FROM SERVER TO CLIENT
The Message Header of the CHALLENGE must keep the same
where
Note that the server will not sign the challenge if the client did not request the server to do so. If
the client worries about whether it is speaking to the right server, it may ask the server to sign the
7.5.2 CHALLENGE-RESPONSE FROM CLIENT TO SERVER
The Message Header of the CHALLENGE_RESPONSE must set its
Messages
message DoidRecord doirp_v3/v1/core.proto
Spec: 4 DATA MODEL
Each identifier may have a set of elements assigned to it, which are collectively known as the identifier's "Identifier Record". There is no inherent limit to the number of elements in each identifier record. Records can optionally contain an element which is a signature certifying the contents of the record; additionally, if requested by a client, messages used to transmit records shall be signed for security. Each such element has a specified "type" which is represented by a unique identifier of its own. DO-IRP servers maintain these Identifier Records and typically return an instance of each such requested Identifier Record in response to a request for resolution of that designated identifier. More tailored requests can result in specific elements of an identifier record being shown in a given returned identifier record.
4.1 IDENTIFIER RECORD
An identifier record thus consists of one or more elements, each of which contains multiple fields including its type, a value associated with that type, and a unique index number that distinguishes that element from other elements in the record, especially those with the same type. The specific type shown in an element may define the syntax, structure, possible semantics, or any other necessary descriptive characteristics of the element's value field. Each element also contains a set of administrative information such as a timestamp, Time to Live ("TTL") and certain associated permissions. Pre-defined types are discussed in section 4.3.
Figure 4.1 below shows the identifier "35.1234/abc" with a sample record with three elements with indexes 1,2 and 3; The element 1 is shown in detail below.
Identifier "35.1234/abc" | | V
|
Figure 4.1: Identifier "35.1234/abc" and its set of three elements
Figure 4.1 shows a single element whose index is set to 1. The type for this element is URL [5],
which is represented in the system by the resolvable identifier 0.TYPE/URL. In general, a type is
represented as a unique identifier and will either be a system type or a user created type. The URL
data as stated in the
| Field | Type | Description | |
|---|---|---|---|
| 1 | doid |
string
|
|
| 2 | elements |
repeated
doirp_v3.v1.Element
|
|
| 3 | created_at |
uint32
|
The following two timestamp fields are not in the spec, added for convenience. Both are 4-byte unsigned integers representing the elapsed time since 00:00:00 UTC, January 1970 in seconds. the created time of the identifier |
| 4 | updated_at |
uint32
|
last time the identifier was updated at the server |
message Ttl (Nested in doirp_v3.v1.Element ) doirp_v3/v1/core.proto
Spec: An octet followed by a 4-byte integer that specifies the Time-To-Live of the element. It is used to describe how long the element should be cached by clients before the source of the information (i.e., the corresponding DO-IRP server) should again be consulted. A zero value for a TTL indicates that the element should only be used for the transaction in progress and should not be cached. Any non-zero TTL is defined in terms of a TTL type (specified in the first octet), followed by the TTL value (the 32-bit integer that follows the TTL type). The TTL type indicates whether the TTL value is relative (octet 0x00) or absolute (octet 0x01). An absolute TTL value is an unsigned integer which defines the time to live as an expiration in terms of seconds since 00:00:00 UTC, January 1st 1970. A relative TTL specifies the time to live in terms of the number of seconds elapsed since the element was obtained by the client from any DO-IRP server. A relative TTL which would be negative if interpreted as a signed integer indicates that the element should not be cached.
| Field | Type | Description | |
|---|---|---|---|
| 1 | type |
doirp_v3.v1.Element.Ttl.TtlType
|
|
| 2 | seconds |
uint32
|
interpreted as int32 when |
message Element doirp_v3/v1/core.proto
Spec: 4.1 IDENTIFIER RECORD
Thus, an element may be thought of as group of fields which are defined below, along with the standard binary encoding of an element used by the DO-IRP protocol.
| Field | Type | Description | |
|---|---|---|---|
| 1 | index |
uint32
|
Spec: An unsigned 32-bit integer that uniquely differentiates an element from all the other elements in the identifier record. The index 0 is reserved. For maximum compatibility with existing implementations, indexes greater than or equal to 2^31 (which would represent negative values if interpreted as signed integers) should not be used. |
| 2 | type |
string
|
Spec: A UTF8-string that specifies the identifier for the type of the value field in the element. The The UTF8-string in the |
| 3 | permission |
uint32
|
an eight-bit bit-mask for access control of the element, see |
| 4 | ttl |
doirp_v3.v1.Element.Ttl
|
TTL of the element, see |
| 5 | created_at |
uint32
|
A 4-byte unsigned integer that records the created of the identifier. The field contains elapsed time since 00:00:00 UTC, January 1970 in seconds. This field is not in the spec, added for convenience. |
| 6 | updated_at |
uint32
|
Spec: |
| 7 | value |
bytes
|
Spec: A sequence of octets (preceded by its length in a 4-byte unsigned integer).
The syntax, format, and semantics of these octets are determined by the This field is for custom element types defined by the IRS users. For standard types, use the dedicated typed fields defined below. |
| 8 | hs_admin |
doirp_v3.v1.element.HsAdmin
|
Spec: 4.3.1 IDENTIFIER ADMINISTRATOR: HS_ADMIN
See |
| 9 | hs_site |
doirp_v3.v1.element.HsSite
|
Spec: 4.3.2 SERVICE SITE INFORMATION: HS_SITE
4.3.3 SERVICE SITE INFORMATION: HS_SITE.PREFIX
See |
| 10 | hs_serv |
doirp_v3.v1.element.HsServ
|
Spec: 4.3.4 SERVICE IDENTIFIER: HS_SERV
4.3.5 SERVICE IDENTIFIER: HS_SERV.PREFIX
See |
| 11 | hs_pubkey |
doirp_v3.v1.element.HsPubkey
|
Spec: 4.3.6 IDENTITY: HS_PUBKEY
See |
| 12 | hs_seckey |
bytes
|
require minimum length of 16 bytes for security |
| 13 | hs_vlist |
repeated
doirp_v3.v1.common.ElementRef
|
Spec: 4.3.8 VALUE LIST: HS_VLIST HS_VLIST allows referencing a list of elements in other identifiers, and allows the referenced
elements to be updated without requiring an update of the referring identifier record. An HS_VLIST
element is one whose HS_VLIST elements may be used to define administrator groups for identifiers. Each administrator
(as defined in 4.3.1) in the HS_VLIST includes is a member of the administrator group. Each element
reference is defined in terms of an |
| 14 | hs_alias |
string
|
referenced DOID |
message MessageHeader doirp_v3/v1/core.proto
Spec: 6.2.2 MESSAGE HEADER
The Message Header contains the common data elements among any protocol operation. It has a fixed size of 24 octets and consists of eight fields.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 .---------------------------------------------------------------. | OpCode | |---------------------------------------------------------------| | ResponseCode | |---------------------------------------------------------------| | OpFlag | |---------------------------------------------------------------| | SiteInfoSerialNumber | RecursionCount| | |---------------------------------------------------------------| | ExpirationTime | |---------------------------------------------------------------| | BodyLength | '---------------------------------------------------------------'
Figure 6.2.2: Message Header Fields
Every message that is not truncated must have a Message Header. If a message has to be truncated for its transmission, the Message Header must appear in the first truncated portion of the message.
This is different from the Message Envelope, which appears in each truncated portion of the message.
OpCode op_code = 1;
| Field | Type | Description | |
|---|---|---|---|
| 2 | response_code |
doirp_v3.v1.ResponseCode
|
|
| 3 | op_flag |
uint32
|
Spec:
6.2.2.3 The 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 .---------------------------------------------------------------. |AT |CT |ENC|REC|CA |CN |KC |PO |RD |OWE|MNS|DNR| Reserved | |---------------------------------------------------------------| | Reserved | '---------------------------------------------------------------' Figure 6.2.2.3: Option flags in the AT AuThoritative bit. A request with the AT bit set (to 1) indicates that the request should be directed to the primary service site (instead of any mirroring sites). A response message with the AT bit set (to 1) indicates that the message is returned from a primary server (within the primary service site) CT CerTified bit. A request with the CT bit set (to 1) asks the server to sign its response with its digital signature by including a Message Credential (see section 6.2.4). A response with the CT bit set (to 1) indicates that the message is signed. The server must sign its response if the request has its CT bit set (to 1). If the server fails to provide a valid signature in its response, the client should discard the response and treat the request as failed. ENC ENCryption bit. A request with the ENC bit set (to 1) requires the server to encrypt its response using the pre-established session key. REC
RECursive bit. A request with the REC bit set (to 1) asks the server to forward the query on
behalf of the client if the request has to be processed by another DO-IRP server. The server
may honor the request by forwarding the request to the appropriate server and passing on
any result back to the client. The server may also deny any such request by sending a
response with CA Cache Authentication. This bit is reserved. CN ContiNuous bit. A message with the CN bit set (to 1) tells the message recipient that more messages that are part of the same request (or response) will follow. This happens if a request (or response) has data that is sent as multiple messages. Unlike truncation at the level of the Message Envelope, which breaks down a single message into multiple for reasons of transport such as UDP message size, this indicates a request or response that is deliberately sent as multiple messages. This is used for example for the responses to requests to list identifiers. KC Keep Connection bit. A message with the KC bit set requests that the message recipient keep the TCP connection open (after the response is sent back). This allows the same TCP connection to be used for multiple operations. PO Public Only bit. Used by query operations only. A query request with the PO bit set (to 1) indicates that the client is only asking for elements that have the PUB_READ permission. A request with PO bit set to zero asks for all the elements regardless of their read permission. If any of the elements require ADMIN_READ permission, the server must authenticate the client as an administrator. RD Request-Digest bit. A request with the RD bit set (to 1) asks the server to include in its response the message digest of the request. A response message with the RD bit set (to 1) indicates that the first field in the Message Body contains the message digest of the original request. The message digest can be used to check the integrity of the server response. Details of these are discussed in section 6.2.3. OWE Overwrite when exists. When this bit is set on a request with OpCode OC_CREATE_ID or OC_ADD_ELEMENT, elements which already exist will be overwritten by the elements presented in the request. Otherwise the request will result in an error. MNS Mint new suffix. When this bit is set on a request to create an identifier, the "identifier" field of the request will be considered the initial portion of the eventual identifier, which will be extended by the server to a new complete identifier. The initial portion should contain the slash. DNR Do not refer. When this bit is set, a request which would normally result in a service referral or prefix referral response, will instead be applied on the server where the request is |
| 4 | site_info_serial_number |
uint32
|
Spec:
6.2.2.4 The When possible, the server should fulfill a client's request even if the service information used by
the client is out-of-date. However, the response message should specify the latest version of
service information in the |
| 5 | recursion_count |
uint32
|
Spec:
6.2.2.5 The |
| 6 | expiration_time |
uint32
|
Spec:
6.2.2.6 The |
message Error doirp_v3/v1/service.proto
Spec: 7.3 ERROR RESPONSE FROM SERVER
A server will return an error message if it encounters an error when processing a request. Any
error response from the server must maintain the same
| Field | Type | Description | |
|---|---|---|---|
| 1 | message |
string
|
Spec: |
| 2 | element_indexes |
repeated
uint32
|
Spec: An example would be a server that is asked to add three elements, with indexes 1, 2, and 3, and
elements with indexes of 1 and 2 already in existence. In this case, the server could return an
error message with |
message ResolveResult doirp_v3/v1/service.proto
| Field | Type | Description | |
|---|---|---|---|
| 1 | record |
doirp_v3.v1.DoidRecord
|
message ServiceReferral doirp_v3/v1/service.proto
Spec: 7.4 SERVICE REFERRAL AND PREFIX REFERRAL
A server may receive requests for identifiers that are managed by some other server or service.
When this happens, the server has the option to either return a referral message that directs the
client to the proper DO-IRP service, or simply return an error message with
DO-IRP servers use the HS_SITE.PREFIX and HS_SERV.PREFIX element types in order to determine
whether to send an RC_PREFIX_REFERRAL request. When a DO-IRP server is asked to resolve a
prefix identifier 0.NA/
Since this behavior is purely in the server, server configuration can override this. This specification does not define under what conditions servers will send other prefix referral or service referral responses.
The Message Header of a service referral must maintain the same
| Field | Type | Description | |
|---|---|---|---|
| 1 | referral_doid |
string
|
Spec: |
| 2 | elements |
repeated
doirp_v3.v1.Element
|
Spec: |
message ResolveRequest doirp_v3/v1/service.proto
Spec: 7.2.1 QUERY REQUEST (OC_RESOLUTION)
The Message Header of any query request must set its
The Message Body for any query request is defined as follows:
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | doid |
string
|
Spec: |
| 3 | indexes |
repeated
uint32
|
Spec: |
| 4 | types |
repeated
string
|
Spec: |
message ResolveResponse doirp_v3/v1/service.proto
Spec: 7.2.2 SUCCESSFUL QUERY RESPONSE
The Message Header of any query response must set its
The message body of the successful query response is defined as follows:
where
7.2.3 UNSUCCESSFUL QUERY RESPONSE
If a server cannot fulfill a client's request, it must return an error message. The general format for any error message from the server is specified in section 7.3 of this document.
For example, a server must return an error message if the queried identifier does not exist in its
database. The error message will have an empty message body and have its
Note that a server should NOT return an RC_ID_NOT_FOUND message if the server is not
responsible for the identifier being queried. It is possible that the queried identifier exists but is
managed by another DO-IRP server (under some other DO-IRP service). When this happens, the
server should either send a service referral (see section 7.4) or simply return an error message with
If the identifier exists, but there are no elements which match the client's query, then the server must return an RC_ELEMENT_NOT_FOUND message.
The server may return an error message with
Servers should return an RC_ACCESS_DENIED message if the request does not have its PO flag set and asks for a specific element (via the index) that has neither PUBLIC_READ nor ADMIN_READ permission.
A server may ask its client to authenticate itself as the administrator during the resolution. This happens if the request does not have its PO flag set and any element in the query has ADMIN_READ permission, but no PUBLIC_READ permission. Details of client authentication are described in section 7.5
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | error |
doirp_v3.v1.Error
|
|
| 3 | result |
doirp_v3.v1.ResolveResult
|
contains |
| 4 | service_referral |
doirp_v3.v1.ServiceReferral
|
a service referral (see section 7.4) |
message AddElementRequest doirp_v3/v1/service.proto
Spec: 7.7.1 ADD ELEMENT(S) (OC_ADD_ELEMENT)
Clients add elements to existing identifier records by sending ADD_ELEMENT requests to the
responsible server. The Message Header of the ADD_ELEMENT request must set its
The Message Body of the ADD_ELEMENT request is encoded as follows:
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | doid |
string
|
Spec: |
| 3 | elements |
repeated
doirp_v3.v1.Element
|
Spec: |
message AddElementResponse doirp_v3/v1/service.proto
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | error |
doirp_v3.v1.Error
|
message RemoveElementRequest doirp_v3/v1/service.proto
Spec: 7.7.2 REMOVE ELEMENT(S) (OC_REMOVE_ELEMENT)
Clients remove existing elements by sending REMOVE_ELEMENT requests to the responsible
server. The Message Header of the REMOVE_ELEMENT request must set its
The Message Body of any REMOVE_ELEMENT request is encoded as follows:
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | doid |
string
|
Spec: |
| 3 | indexes |
repeated
uint32
|
Spec: |
message RemoveElementResponse doirp_v3/v1/service.proto
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | error |
doirp_v3.v1.Error
|
message ModifyElementRequest doirp_v3/v1/service.proto
Spec: 7.7.3 MODIFY ELEMENT(S) (OC_MODIFY_ELEMENT)
Clients can make modifications to an existing element by sending MODIFY_ELEMENT requests to
the responsible server. The Message Header of the MODIFY_ELEMENT request must set its
The Message Body of any MODIFY_ELEMENT request is defined as follows:
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | doid |
string
|
Spec: |
| 3 | elements |
repeated
doirp_v3.v1.Element
|
Spec: |
message ModifyElementResponse doirp_v3/v1/service.proto
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | error |
doirp_v3.v1.Error
|
message CreateDoidRequest doirp_v3/v1/service.proto
Spec: 7.7.4 CREATE IDENTIFIER (OC_CREATE_ID)
Clients can create new identifiers by sending CREATE_ID requests to the responsible server. The
Message Header of any CREATE_ID request must set its
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | record |
doirp_v3.v1.DoidRecord
|
contains |
message CreateDoidResponse doirp_v3/v1/service.proto
Spec: 7.7.4 CREATE IDENTIFIER
The Message Body of a successful Create Identifier Response is defined as follows:
The
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | error |
doirp_v3.v1.Error
|
|
| 3 | doid |
string
|
Spec: |
message DeleteDoidRequest doirp_v3/v1/service.proto
Spec: 7.7.5 DELETE IDENTIFIER (OC_DELETE_ID)
Clients delete existing identifiers by sending DELETE_ID requests to the responsible DO-IRP server.
The Message Header of the DELETE_ID request must set its
The Message Body of any DELETE_ID request is defined as follows:
The server that receives the DELETE_ID request must first authenticate the client as the administrator with the DELETE_ID privilege. Upon successful authentication, the server will proceed to delete the identifier along with any elements assigned to the identifier. If successful, the server will return an RC_SUCCESS message to the client.
Each DELETE_ID request must be carried out as a transaction. If any part of the DELETE_ID process
fails, the entire operation must be rolled back. For example, if the server fails to remove any
elements assigned to the identifier (before deleting the identifier), it must return an error message
without deleting the identifier. A DELETE_ID request that asks to delete a non-existing identifier will
also be treated as an error. The server will return an error message with the
DELETE_ID requests can also be used to delete prefix identifiers.
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | doid |
string
|
Spec: |
message DeleteDoidResponse doirp_v3/v1/service.proto
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | error |
doirp_v3.v1.Error
|
message ChallengeResponseRequest doirp_v3/v1/service.proto
Spec: 7.5.2 CHALLENGE-RESPONSE FROM CLIENT TO SERVER
The Message Header of the CHALLENGE_RESPONSE must set its
The Message Body of the CHALLENGE_RESPONSE request is defines as follows:
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
|
| 2 | auth_type |
doirp_v3.v1.ChallengeResponseRequest.AuthType
|
Spec: |
| 3 | key_ref |
doirp_v3.v1.common.ElementRef
|
Spec:
|
| 5 | challenge_response |
bytes
|
Spec:
A 4-byte unsigned integer indicating the length of the following byte array, which contains
either the Message Authentication Code (MAC) or the digital signature over the challenge
from the server. The |
message ChallengeResponseResponse doirp_v3/v1/service.proto
| Field | Type | Description | |
|---|---|---|---|
| 1 | header |
doirp_v3.v1.MessageHeader
|
Enums
enum OpCode doirp_v3/v1/core.proto
Spec:
6.2.2.1
The
A detailed description of each of these
| Name | Number | Description |
|---|---|---|
OP_CODE_RESERVED |
0 | Reserved |
OP_CODE_RESOLUTION |
1 | Identifier query |
OP_CODE_GET_SITEINFO |
2 | Get HS_SITE element |
OP_CODE_CREATE_ID |
100 | Create new identifier |
OP_CODE_DELETE_ID |
101 | Delete existing identifier |
OP_CODE_ADD_ELEMENT |
102 | Add element(s) |
OP_CODE_REMOVE_ELEMENT |
103 | Remove element(s) |
OP_CODE_MODIFY_ELEMENT |
104 | Modify element(s) |
OP_CODE_LIST_IDS |
105 | List identifiers |
OP_CODE_LIST_DERIVED_PREFIXES |
106 | List derived prefixes |
OP_CODE_CHALLENGE_RESPONSE |
200 | Response to challenge |
OP_CODE_VERIFY_RESPONSE |
201 | Verify challenge response |
OP_CODE_HOME_PREFIX |
300 | Home prefix (instruct server to consider itself responsible for the prefix) |
OP_CODE_UNHOME_PREFIX |
301 | Unhome prefix |
OP_CODE_LIST_HOMED_PREFIXES |
302 | List homed prefixes |
OP_CODE_SESSION_SETUP |
400 | Session setup request |
OP_CODE_SESSION_TERMINATE |
401 | Session termination request |
enum ResponseCode doirp_v3/v1/core.proto
Spec:
6.2.2.2
The
Detailed descriptions of these
| Name | Number | Description |
|---|---|---|
RESPONSE_CODE_RESERVED |
0 | Reserved for request |
RESPONSE_CODE_SUCCESS |
1 | Success response |
RESPONSE_CODE_ERROR |
2 | General error |
RESPONSE_CODE_SERVER_BUSY |
3 | Server too busy to respond |
RESPONSE_CODE_PROTOCOL_ERROR |
4 | Corrupted or unrecognizable message |
RESPONSE_CODE_OPERATION_DENIED |
5 | Unsupported operation |
RESPONSE_CODE_RECUR_LIMIT_EXCEEDED |
6 | Too many recursions for the request |
RESPONSE_CODE_SERVER_BACKUP |
7 | Server storage is temporarily read-only as for backup |
RESPONSE_CODE_ID_NOT_FOUND |
100 | Identifier not found |
RESPONSE_CODE_ID_ALREADY_EXIST |
101 | Identifier already exists |
RESPONSE_CODE_INVALID_ID |
102 | Encoding (or syntax) error |
RESPONSE_CODE_ELEMENT_NOT_FOUND |
200 | Element not found |
RESPONSE_CODE_ELEMENT |
201 | ALREADY_EXIST Element already exists |
RESPONSE_CODE_ELEMENT_INVALID |
202 | Invalid Element |
RESPONSE_CODE_EXPIRED_SITE_INFO |
300 | SITE_INFO out of date |
RESPONSE_CODE_SERVER_NOT_RESP |
301 | Server not responsible |
RESPONSE_CODE_SERVICE_REFERRAL |
302 | Server referral |
RESPONSE_CODE_PREFIX_REFERRAL |
303 | Prefix referral |
RESPONSE_CODE_INVALID_ADMIN |
400 | Not an admin for operation |
RESPONSE_CODE_ACCESS_DENIED |
401 | Insufficient permissions |
RESPONSE_CODE_AUTHEN_NEEDED |
402 | Authentication required |
RESPONSE_CODE_AUTHEN_FAILED |
403 | Failed to authenticate |
RESPONSE_CODE_INVALID_CREDENTIAL |
404 | Invalid message credential |
RESPONSE_CODE_AUTHEN_TIMEOUT |
405 | Authentication timed out |
RESPONSE_CODE_UNABLE_TO_AUTHEN |
406 | Unexpected error authenticating |
RESPONSE_CODE_SESSION_TIMEOUT |
500 | Session expired |
RESPONSE_CODE_SESSION_FAILED |
501 | Unable to establish session |
RESPONSE_CODE_SESSION_KEY_INVALID |
502 | Invalid session key or session authentication failure |
RESPONSE_CODE_SESSION_MSG_REJECTED |
505 | Potential session replay attack |
enum Permission doirp_v3/v1/core.proto
defines the permissions bit flags for elements
| Name | Number | Description |
|---|---|---|
PERMISSION_UNSPECIFIED |
0 | |
PERMISSION_PUBLIC_WRITE |
1 | Spec: PUBLIC_WRITE (0x01) permission that allows anyone to modify or delete the element. |
PERMISSION_PUBLIC_READ |
2 | Spec: PUBLIC_READ (0x02) permission that allows anyone to read the element. |
PERMISSION_ADMIN_WRITE |
4 | Spec: ADMIN_WRITE (0x04) permission that allows any authenticated administrator with Modify_Element Delete_Element privileges (see 4.3.1) to update or delete the element |
PERMISSION_ADMIN_READ |
8 | Spec: ADMIN_READ (0x08) permission that allows any authenticated administrator with "Authorized_Read" privilege (see section 4.3.1 below) to read the element. |
enum Type doirp_v3/v1/core.proto
This is for generating consts, won't be used directly in .proto files.
| Name | Number | Description |
|---|---|---|
TYPE_UNSPECIFIED |
0 | |
TYPE_HS_ADMIN |
1 | 0.TYPE/HS_ADMIN |
TYPE_HS_SITE |
2 | 0.TYPE/HS_SITE |
TYPE_HS_SITE_PREFIX |
3 | 0.TYPE/HS_SITE.PREFIX |
TYPE_HS_SERV |
4 | 0.TYPE/HS_SERV |
TYPE_HS_SERV_PREFIX |
5 | 0.TYPE/HS_SERV.PREFIX |
TYPE_HS_PUBKEY |
6 | 0.TYPE/HS_PUBKEY |
TYPE_HS_SECKEY |
7 | 0.TYPE/HS_SECKEY |
TYPE_HS_VLIST |
8 | 0.TYPE/HS_VLIST |
TYPE_HS_ALIAS |
9 | 0.TYPE/HS_ALIAS |
TYPE_HS_CERT |
10 | 0.TYPE/HS_CERT |
TYPE_HS_SIGNATURE |
11 | 0.TYPE/HS_SIGNATURE |
enum AuthType doirp_v3/v1/service.proto
| Name | Number | Description |
|---|---|---|
AUTH_TYPE_HS_SECKEY |
0 | |
AUTH_TYPE_HS_PUBKEY |
1 |