DoidRecord

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

: 3
: 2
————————————————————-
: 1
: 0.TYPE/URL
: http://www.dlib.org/dlib
: {Relative: 24 hours}
: PUBLIC_READ, ADMIN_WRITE
: 927314334000

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 is “http://www.dlib.org/dlib… “. The TTL (time to live) entry suggests that the record should be cached no more than 24 hours before the source of the information should be consulted again. The field grants anyone permission to read; but only the administrator has permission to update that particular element.

Field Description
string
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

uint32

last time the identifier was updated at the server

Element

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 Description
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.

string

Can be set to enum Type’s names (not values!)

uint32

an eight-bit bit-mask for access control of the element, see Permission for details

TTL of the element, see Ttl for details

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.

uint32

Spec: A 4-byte unsigned integer that records the last time the element was updated at the server. The field contains elapsed time since 00:00:00 UTC, January 1970 in seconds.

HS_ADMIN

HS_SITE, HS_SITE.PREFIX

HS_SERV, HS_SERV.PREFIX

HS_PUBKEY

HS_PUBKEY

HS_VLIST

HS_ALIAS

Ttl

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 Description
uint32

interpreted as int32 when type is 1

TtlType

Name Description
TTL_TYPE_RELATIVE
TTL_TYPE_ABSOLUTE

Permission

defines the permissions bit flags for elements

Name Description
PERMISSION_UNSPECIFIED
PERMISSION_PUBLIC_WRITE

Spec: PUBLIC_WRITE (0x01) permission that allows anyone to modify or delete the element.

PERMISSION_PUBLIC_READ

Spec: PUBLIC_READ (0x02) permission that allows anyone to read the element.

PERMISSION_ADMIN_WRITE

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

Spec: ADMIN_READ (0x08) permission that allows any authenticated administrator with “Authorized_Read” privilege (see section 4.3.1 below) to read the element.

Type

Spec: 4.3 PRE-DEFINED ELEMENT TYPES

Type is a required field in an element, although the exact type to be used is open-ended. Some types are defined in this document and have specific server and client processing semantics. DO- IRP implementations must use the defined types whenever applicable. New types can be defined if different processing rules were to apply; in such cases, those new types may be registered by an organization as identifiers for resolution using DO-IRP under a prefix controlled by the organization.

Types defined in this document are assumed to have an implicit prefix of “0.TYPE”, although the prefix is generally omitted when writing about the use of these types.

The following types have defined DO-IRP server and client processing semantics: HS_ADMIN, HS_SITE, HS_SITE.PREFIX, HS_SERV, HS_SERV.PREFIX, HS_PUBKEY, HS_SECKEY, and HS_VLIST.

Additionally, the types HS_ALIAS, HS_CERT, and HS_SIGNATURE, while not necessary for DO-IRP service use, are considered standard system types that cut across multiple applications; and all are registered under the prefix “0.TYPE”.

Historical note: the term HS in the name of these types comes from the legacy notation that identified these types as Handle System (HS) types.

Name Description
TYPE_UNSPECIFIED
TYPE_HS_ADMIN

0.TYPE/HS_ADMIN

TYPE_HS_SITE

0.TYPE/HS_SITE

TYPE_HS_SITE_PREFIX

0.TYPE/HS_SITE.PREFIX

TYPE_HS_SERV

0.TYPE/HS_SERV

TYPE_HS_SERV_PREFIX

0.TYPE/HS_SERV.PREFIX

TYPE_HS_PUBKEY

0.TYPE/HS_PUBKEY

TYPE_HS_SECKEY

0.TYPE/HS_SECKEY

TYPE_HS_VLIST

0.TYPE/HS_VLIST

TYPE_HS_ALIAS

0.TYPE/HS_ALIAS

TYPE_HS_CERT

0.TYPE/HS_CERT

TYPE_HS_SIGNATURE

0.TYPE/HS_SIGNATURE

MessageHeader

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
—————————————————————
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.

Field Description
uint32

Spec: 6.2.2.3

The is a 32-bit bit-mask that defines various control options for protocol operation. The following figure shows the location of each option flag in the field.

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 field

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 set to RC_SERVER_NOT_RESP.

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

Spec: 6.2.2.4

The is a two-byte unsigned integer. The in a request refers to the of the HS_SITE element used by the client (to access the server). Servers can check the in the request to find out if the client has up-to-date service information.

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 field. Clients with out-of-date service information can update the service information. If the server cannot fulfill a client’s request due to expired service information, it should reject the request and return an error message with set to RC_EXPIRED_SITE_INFO.

Spec: 6.2.2.5

The is a one-byte unsigned integer that specifies the number of service recursions. Service recursion happens if the server has to forward the client’s request to another server. Any request directly from the client must have its set to 0. If the server has to send a recursive request on behalf of the client, it must increment the by

  1. Any response from the server must maintain the same as the one in the request. To prevent an infinite loop of service recursion, the server should be configurable to stop sending a recursive request when the reaches a certain value.

Spec: 6.2.2.6

The is a 4-byte unsigned integer that specifies the time when the message should be considered expired, relative to January 1st, 1970 GMT, in seconds. It is set to zero if no expiration is expected.

HsAdmin

Spec: 4.3.1 IDENTIFIER ADMINISTRATOR: HS_ADMIN

An administrative operation on an identifier record or on the DO-IRP service (e.g., add, delete or modify an element) can only be performed by an administrator that is authenticated and that has adequate privileges.

We defined an “administrator” as an entity represented by an identifier and an element index within that identifier record. This identifier-index is a reference to an element that must contain a public key or secret key to be used when challenging the entity to authenticate itself.

An authenticated administrator is an entity that has demonstrated that it possesses either the private key matching the public key, or the secret key, pointed to by the administrator’s identifier- index element reference.

The privileges or authorizations that an administrator has over an identifier record is specified in one or more elements of type HS_ADMIN within that identifier record. Each HS_ADMIN element can be used to define a set of administrators sharing the same administration privilege. Identifiers with multiple administrators of different privileges may have multiple HS_ADMIN elements. HS_ADMIN elements are used by DO-IRP servers to authenticate administrators before fulfilling any DO-IRP administration request. However, as an implementation option, an identifier record without an HS_ADMIN element can be modified by a qualified DO-IRP server administrator.

An HS_ADMIN element is one whose field is HS_ADMIN and whose field consists of the following entries encoded as binary data:

Field Description

See AdminPermission enum below for details.

Spec: Specifies the record’s administrator. It consists of the administrator’s identifier and element index (as defined above), encoded as a 4-byte length followed by that many UTF-8 encoded bytes, followed by a 4-byte unsigned integer for the index of the element that is referenced in the administrator’s identifier record. The referred element in the administrator’s identifier record must either be an identity authentication element (such as an HS_PUBKEY or HS_SECKEY element) or an HS_VLIST element, which specifies a group of administrators consisting of a list of one or more administrator identification and authentication elements references. (See HS_VLIST paragraph below for more description as well as HS_VLIST in section 4.2.8 for its detailed specification). An index value of 0 implies that the reference is to all elements in the administrator’s identifier record; this means all HS_SECKEY or HS_PUBKEY elements in that record can be used.

HsSite

Spec: 4.3.2 SERVICE SITE INFORMATION: HS_SITE

HS_SITE is used to provide information about a DO-IRP service to inform a DO-IRP clients how to contact it. This information specifies the server’s address, its protocol version, its public key. Each prefix identifier should have one or more HS_SITE elements in its prefix identifier record. This is called the service information for the prefix and denotes, among other things, the location of servers where any existing identifier that is based on that prefix can be created, updated, deleted, or resolved. A user that tries to resolve an identifier that does not exist will get a “identifier not found” response from the local service specified in the HS_SITE information. Attempts to resolve an invalid identifier, namely one that does not exist within the designated LIS, will get a “identifier not found” response from that local service.

The service information is managed by the system administrator. It must reflect the configuration of the DO-IRP service for each of the prefixes it manages. An additional layer of indirection is provided by the use of HS_SERV, which is called a service identifier; HS_SERV allows multiple prefixes to reference a single set of HS_SITE elements, as described in section 4.3.4. DO-IRP clients depend on the service information to locate a responsible DO-IRP server before they can send their service requests. The service information can also be used by clients to authenticate any service response from the server.

An HS_SITE element is one whose field is HS_SITE and whose field consists of the following entries encoded as binary data:

Field Description
uint32

current version number: 1

Spec: A 2-byte integer value that identifies the highest DO-IRP protocol version understood by servers of the site. The higher byte of the value identifies the major version and the lower byte the minor version. Details of the message format for DO-IRP protocol version 3.0 are specified in section 6.2. Although the terminology used is the same, this field does not denote the protocol version of this DO-IRP specification. Rather, it denotes the protocol version as specified by the prefix administrator for the implementation of the local service that supports the identifier record. Local services which support the DO-IRP protocol version 3.0 specified in this document should be described with HS_SITE elements specifying 3.0.

uint32

This should be automatically increased on the IRS service side

uint32

Spec: An 8-bit mask that identifies the primary site(s) of the DO-IRP service. The first bit of the octet is the bit. It indicates whether the HS_SITE element is a primary site. A primary site is the one that supports administrative operations for its identifiers. The second bit of the octet is the bit. It indicates whether the service has multiple primary sites. A entry with zero value indicates that the service has a single primary site and all administration has to be done at that site. A non-zero entry indicates that the service has multiple primary sites. Each primary site may be used to administer identifiers managed under the service.

hash option used by the service site to distribute identifiers among its multiple servers; not meaningful for a typical service site with a single server.

string

Spec: An UTF8-string entry reserved for future use.

map<string, string>

represented as map from to here for convenience

a list of s each defines a server that is part of the service

HsServ

Spec: 4.3.4 SERVICE IDENTIFIER: HS_SERV

Any DO-IRP service can be defined in terms of one or more HS_SITE elements. These HS_SITE elements may be assigned directly to the relevant prefix identifier, or an additional level of indirection may be introduced through the use of an HS_SERV element in the prefix identifier record. The value of the HS_SERV element contains the service identifier, meaning an identifier whose record contains the HS_SITE elements defining the DO-IRP service. This way, the HS_SITE elements can be maintained in a separate record

Use of service identifiers allows sharing of service information among multiple prefixes. It also allows changes to service configuration (e.g., adding a new site) to be made in one place rather than in every prefix identifier involved.

Although not typical, a prefix identifier may have multiple HS_SITE and multiple HS_SERV elements. In such a case the service information for the prefix should be considered as the concatenation of the HS_SITE elements in the prefix identifier record, together with the service information from all of the HS_SERV elements.

The use of service identifiers raises several special considerations. Multiple levels of service identifier redirection should be avoided due to their lack of efficiency, but are not signaled as an error. Looped reference of service identifiers or HS_SERV elements that refer to non-existent service identifiers should be caught and error conditions passed back to the user.

4.3.5 SERVICE IDENTIFIER: HS_SERV.PREFIX

HS_SERV.PREFIX serves the same role with respect to HS_SITE.PREFIX as HS_SERV serves with respect to HS_SITE. If a prefix identifier has an HS_SERV.PREFIX element, the data of that element is an identifier, whose corresponding record describes, via one or more HS_SITE.PREFIX elements and/or recursively via HS_SERV.PREFIX elements, the service information at which clients may be able to resolve derived prefixes of the original prefix.

Field Description
string

An identifier whose record contains the HS_SITE elements defining the DO-IRP service.

HsPubkey

Spec: 4.3.6 IDENTITY: HS_PUBKEY

An element of type HS_PUBKEY stores a public key. The element can be used as an administrative identity, for referring to in HS_ADMIN or HS_VLIST elements for authorization, or for identifying the administrative identity in DO-IRP authentication. A reference to the element for use as an administrative identity is as a pair of the identifier and the index of the element within the identifier record; in this document this is often written with a colon as :.

The of the element is a binary encoding of the public key which for key types considered in this specification is as follows. First, there is a UTF8-string that describes the key type; then, a two- byte option field reserved for future use; and finally, a key-type-dependent number of length- prefixed byte-arrays that contains the public key itself.

Field Description
string

a UTF8-string that describes the key type, see Type for details

uint32

a two-byte option field reserved for future use

bytes[]

a key-type-dependent number of byte-arrays that contains the public key itself.

HsSeckey

Spec: 4.3.7 IDENTITY: HS_SECKEY

An element of type HS_SECKEY is used to store a secret key. The element can be used as an administrative identity, for referring to in HS_ADMIN or HS_VLIST elements for authorization, or for identifying the administrative identity in DO-IRP authentication.

The of the element is the secret key. In order to protect the secret key, the of the element should be set to forbid PUBLIC_READ. This is the only common usage of any other than PUBLIC_READ, ADMIN_READ, and ADMIN_WRITE.

Use of public keys is recommended over use of secret keys for DO-IRP authentication.

Field Description
bytes
HsVlist

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 is HS_VLIST and whose consists of a 4-byte unsigned integer followed by a list of references to other elements. The integer specifies the number of references in the list. The references may refer to elements under the same identifier or elements from other identifiers. Each reference is encoded as an UTF8-string followed by a 4-byte unsigned integer that identifies the referenced identifier and its index.

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 : pair. An administrator group may also contain other administrator groups as its members. This allows administrator groups to be defined in a hierarchical fashion. Care must be taken, however, to avoid a cyclic definition of administrators or administrator groups. Multiple levels of administrator groups should be avoided due to their lack of efficiency, but will not be signaled as an error. Client software should be prepared to detect any potential cyclic definition of administrators that refer to non-existent elements and treat them as errors.

Field Description

list of references to other elements

HsAlias

Spec: 4.3.9 ALIASES: HS_ALIAS

It is possible that the set of elements (i.e., type-value pairs) of a digital object may be included in other digital objects and thus multiple identifiers could be associated with the same information represented in digital form, thus creating, in effect, multiple different digital objects all with the same information represented in digital form. DO-IRP does not specify a specific mechanism for identifier records to reference all such alternatives, but various DO-IRP implementations and their users should use the pre-defined HS_ALIAS type in such cases.

An HS_ALIAS element is one whose field is HS_ALIAS and whose field contains a reference to another identifier. An identifier whose record contains an HS_ALIAS element is an alias to the identifier referenced in the HS_ALIAS element. An alias record should not have any additional elements other than HS_ALIAS or HS_ADMIN (for administration) elements. This is necessary to prevent any inconsistency between an identifier and its aliases.

During an identifier resolution, a client may get back an HS_ALIAS element. This indicates that the identifier in question is an alias identifier. The client may then retry the query against the identifier specified in the HS_ALIAS element until final results are obtained.

The use of HS_ALIAS introduces a number of special considerations. For example, multiple levels of aliases should be avoided for the sake of efficiency, but are not signaled as an error. Alias loops and aliases that point to non-existent identifiers should be caught and error conditions passed back to the user.

Field Description
string

reference identifier

OpCode

Spec: 6.2.2.1

The stands for operation code, which is a four-byte unsigned integer that specifies the intended operation.

A detailed description of each of these s can be found in section 7 of this document. In general, clients use the to tell the server what kind of operation they want to accomplish. Response from the server must maintain the same as the original request and use the to indicate the result.

Name Description
OP_CODE_RESERVED

Reserved

OP_CODE_RESOLUTION

Identifier query

OP_CODE_GET_SITEINFO

Get HS_SITE element

OP_CODE_CREATE_ID

Create new identifier

OP_CODE_DELETE_ID

Delete existing identifier

OP_CODE_ADD_ELEMENT

Add element(s)

OP_CODE_REMOVE_ELEMENT

Remove element(s)

OP_CODE_MODIFY_ELEMENT

Modify element(s)

OP_CODE_LIST_IDS

List identifiers

OP_CODE_LIST_DERIVED_PREFIXES

List derived prefixes

OP_CODE_CHALLENGE_RESPONSE

Response to challenge

OP_CODE_VERIFY_RESPONSE

Verify challenge response

OP_CODE_HOME_PREFIX

Home prefix (instruct server to consider itself responsible for the prefix)

OP_CODE_UNHOME_PREFIX

Unhome prefix

OP_CODE_LIST_HOMED_PREFIXES

List homed prefixes

OP_CODE_SESSION_SETUP

Session setup request

OP_CODE_SESSION_TERMINATE

Session termination request

ResponseCode

Spec: 6.2.2.2

The is a 4-byte unsigned integer that is given by a server to indicate the result of any service request.

Detailed descriptions of these s can be found in section 7 of this document. In general, any request from a client must have its set to 0. The response message from the server must have a non-zero to indicate the result. For example, a response message from a server with set to RC_SUCCESS indicates that the server has successfully fulfilled the client’s request.

Name Description
RESPONSE_CODE_RESERVED

Reserved for request

RESPONSE_CODE_SUCCESS

Success response

RESPONSE_CODE_ERROR

General error

RESPONSE_CODE_SERVER_BUSY

Server too busy to respond

RESPONSE_CODE_PROTOCOL_ERROR

Corrupted or unrecognizable message

RESPONSE_CODE_OPERATION_DENIED

Unsupported operation

RESPONSE_CODE_RECUR_LIMIT_EXCEEDED

Too many recursions for the request

RESPONSE_CODE_SERVER_BACKUP

Server storage is temporarily read-only as for backup

RESPONSE_CODE_ID_NOT_FOUND

Identifier not found

RESPONSE_CODE_ID_ALREADY_EXIST

Identifier already exists

RESPONSE_CODE_INVALID_ID

Encoding (or syntax) error

RESPONSE_CODE_ELEMENT_NOT_FOUND

Element not found

RESPONSE_CODE_ELEMENT

ALREADY_EXIST Element already exists

RESPONSE_CODE_ELEMENT_INVALID

Invalid Element

RESPONSE_CODE_EXPIRED_SITE_INFO

SITE_INFO out of date

RESPONSE_CODE_SERVER_NOT_RESP

Server not responsible

RESPONSE_CODE_SERVICE_REFERRAL

Server referral

RESPONSE_CODE_PREFIX_REFERRAL

Prefix referral

RESPONSE_CODE_INVALID_ADMIN

Not an admin for operation

RESPONSE_CODE_ACCESS_DENIED

Insufficient permissions

RESPONSE_CODE_AUTHEN_NEEDED

Authentication required

RESPONSE_CODE_AUTHEN_FAILED

Failed to authenticate

RESPONSE_CODE_INVALID_CREDENTIAL

Invalid message credential

RESPONSE_CODE_AUTHEN_TIMEOUT

Authentication timed out

RESPONSE_CODE_UNABLE_TO_AUTHEN

Unexpected error authenticating

RESPONSE_CODE_SESSION_TIMEOUT

Session expired

RESPONSE_CODE_SESSION_FAILED

Unable to establish session

RESPONSE_CODE_SESSION_KEY_INVALID

Invalid session key or session authentication failure

RESPONSE_CODE_SESSION_MSG_REJECTED

Potential session replay attack