document_text
9 rows where source_id = "weboftrust-keria-main"
This data as json, CSV (advanced)
| id ▼ | source_id | kind | license | title | url | credit | chars | text |
|---|---|---|---|---|---|---|---|---|
| weboftrust-keria-main/10 | weboftrust-keria-main | repository prose file | Apache-2.0 | docs/README.rst | https://github.com/WebOfTrust/keria/blob/main/docs/README.rst | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/docs/README.rst. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 1234 | KERIA|GitHub Actions| |codecov| KERI Agent in the cloud Split from KERI Core DevelopmentSetup ~~~~~
Build from source ^^^^^^^^^^^^^^^^^
Build with docker ^^^^^^^^^^^^^^^^^
Running Tests ~~~~~~~~~~~~~
.. |GitHub Actions| image:: https://github.com/webOfTrust/keria/actions/workflows/python-app-ci.yml/badge.svg :target: https://github.com/WebOfTrust/keria/actions .. |codecov| image:: https://codecov.io/gh/WebOfTrust/keria/branch/main/graph/badge.svg?token=FR5CB2TPYG :target: https://codecov.io/gh/WebOfTrust/keria |
| weboftrust-keria-main/11 | weboftrust-keria-main | repository prose file | Apache-2.0 | docs/keria_app.rst | https://github.com/WebOfTrust/keria/blob/main/docs/keria_app.rst | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/docs/keria_app.rst. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 3743 | KERIA App APIkeria.app.agenting.. automodule:: keria.app.agenting :members: Agency and Agent ConfigurationA KERIA Agency can be configured with either environment variables or a configuration file. The configuration file is a JSON file. Both alternatives are shown here. Environment Variables.. code-block:: bash
JSON Configuration FileTo use the JSON configuration file option make sure to mount the JSON file to the directory you specify with the
With the absolute path version the .. code-block:: bash
The JSON file must have an object with the same name that you sent to the You can configure the cycle time, or tocks, of the escrower as well as the agent initializer. You can also configure the CURLs, IURLs, and DURLs of the agent. CURLs are Service Endpoint Location URLs creating Endpoint Role Authorizations and Location Scheme records on startup. IURLS are Introduction URLs resolved on startup (OOBIs). DURLS are Data OOBI URLs resolved on startup usually of things like ACDC credential schemas or ACDC credential CESR streams. .. code-block:: json
keria.app.aiding.. automodule:: keria.app.aiding :members: keria.app.credentialing.. automodule:: keria.app.credentialing :members: keria.app.indirecting.. automodule:: keria.app.indirecting :members: keria.app.notifying.. automodule:: keria.app.notifying :members: keria.app.presenting.. automodule:: keria.app.presenting :members: keria.app.specing.. automodule:: keria.app.specing :members: |
| weboftrust-keria-main/12 | weboftrust-keria-main | repository prose file | Apache-2.0 | docs/keria_core.rst | https://github.com/WebOfTrust/keria/blob/main/docs/keria_core.rst | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/docs/keria_core.rst. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 398 | KERIA Core APIkeria.core.authing.. automodule:: keria.core.authing :members: keria.core.httping.. automodule:: keria.core.httping :members: keria.core.keeping.. automodule:: keria.core.keeping :members: keria.core.longrunning.. automodule:: keria.core.longrunning :members: |
| weboftrust-keria-main/13 | weboftrust-keria-main | repository prose file | Apache-2.0 | docs/keria_db.rst | https://github.com/WebOfTrust/keria/blob/main/docs/keria_db.rst | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/docs/keria_db.rst. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 106 | KERIA DB APIkeria.db.basing.. automodule:: keria.db.basing :members: |
| weboftrust-keria-main/14 | weboftrust-keria-main | repository prose file | Apache-2.0 | docs/keria_end.rst | https://github.com/WebOfTrust/keria/blob/main/docs/keria_end.rst | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/docs/keria_end.rst. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 121 | KERIA Endpoint APIkeria.end.ending.. automodule:: keria.end.ending :members: |
| weboftrust-keria-main/15 | weboftrust-keria-main | repository prose file | Apache-2.0 | docs/keria_notifications.md | https://github.com/WebOfTrust/keria/blob/main/docs/keria_notifications.md | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/docs/keria_notifications.md. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 9825 | KERIA NotificationsSimple end user interaction with a KERIA server agent through notifications. Notifications allow good UX for event driven workflows in complicated, multi-step activities such as multi-signature identity management or credential issuance and presentation. SignifyTS and SignifyPy-based client applications may use the KERIA notifications API to draw user attention to tasks for the user to complete in these workflows whether single or multi-step. Notifications can be polled for and, in the future, will be sent via a server sent events (SSE) stream. OverviewNotifications are durable in that they are stored in an Agent's database in the KERIA server. An edge controller may read the notification database to list notifications, mark notifications as read, or delete notifications. Modules Using NotificationsModules leveraging notifications include: - multisig identifier operations - creation - rotation - signing (interaction) - identifier delegation, single sig or multisig - credential issuance and presentation (IPEX), single sig or multisig - challenge response and verification - out-of-band identifier (OOBI) resolution Example notificationA notification payload looks like this:
This is a notification for a multisig inception event. Example Exchange Message for NotificationThe operations in the modules listed above use KERI Exchange ("exn" / "EXN") messages to drive notifications in KERIA and are categorized by their route, the "r" field in an exchange message. When the exchange message processor, the Exchanger component from KERIpy, processes an exchange message then it delegates message processing to an exchange message handler based on the route field, the "r" attribute. This means the route is effectively a category field or secondary type field for an exchange message. Some exchange messages generate notifications and some do not. Route typesHere's the breakdown for each of the exn route types:
Route attribute for exchange message routingThe "r" attribute of an exchange message corresponds to the same field in the notification attribute "a" section, meaning the "notification.a.r" property is a route field. The route field of a notification and its corresponding exchange message will match. Typical Exchange Message Example -
|
| weboftrust-keria-main/16 | weboftrust-keria-main | repository prose file | Apache-2.0 | docs/protocol.md | https://github.com/WebOfTrust/keria/blob/main/docs/protocol.md | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/docs/protocol.md. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 15911 | Signify/KERIA Request Authentication Protocol (SKRAP)KERIA Service Endpoint InterfacesThe KERIA service will expose 3 separate HTTP endpoints on 3 separate network interfaces.
This separation allows for the Boot interface to be expose to internal infrastructure only (or disabled all together) while exposing the other two interfaces externally. If a KERIA instance is launched in static worker mode, meaning all agent workers are configured at start up only the Boot interface can be disabled completely. Agent Worker InitializationTo initiate a connection between a Signify Client and a KERIA agent, the two sides will exchange KERI AIDs with the Signify Client AID (called the "Client AID") being the delegator for the KERIA agent worker AID (called the "Agent AID"). To establish the connection the following steps are performed: Step One: Generate Client AIDThe Signify Client generates the client AID as a transferable AID with a single signing key and single rotation key and provides the signed inception event out-of-bands to the KERIA service through the Boot interface. The HTTP request must be signed by the client AID using Signify Request Authentication described below. The algorithm for generating the signing and rotation key pairs for Client AID is as follows:
The follow is an example of a Client AID generated by the SignifyPy (Python implementation) Signify Client with a passcode of
Step Two: Agent Worker CreationThe KERIA service will create an Agent Worker on behalf of the new client and create the delegated, transferable Agent AID with a single signing key and single rotation key specifying the Client AID as its delegator in its inception event.<br> The KERIA service will return the Agent AID inception event in a signed HTTP response, signed by the Agent AID. Agent AID keys can be generated using a salt or truly random depending on the requirements of the service hosting the KERIA service.
Step Three: Signify Client Delegation ApprovalNote that all HTTP requests against the Admin Interface must be signed by the Client AID and expect all responses to be signed by the Agent AID. The Signify Client will approve the delegation of the client AID with an interaction event that it sends back to the KERIA service over the Admin interface. Once these steps are complete the Signify Client can begin using the rest of the Admin interface to create AIDs, issue credentials, etc. Reconnecting to Existing Agent WorkerDocument the steps for retrieving state from the Admin interface and updating. Key Generate MethodsThe KERIA service supports the following key generation methods where the Signify Client generates the keys and only ever sends encrypted key material (if any) to the server. 1. Salty Keys - HDK key chain generated from a salt per aid that is encrypted and stored server. 2. Randy Keys - Randomly generated keys (signing and rotation) that are encrypted and store on the server. 3. Sandy Keys - Keys generated from a different salt for inception and each rotation.<br> 4. Group Keys - Signify Client/KERIA Service AIDs participating in a distributed group multisig AID. 5. HSM Keys - Signify Client uses a Signify HSM Integration Module (SHIM) to manage keys and signatures. For all key generation methods, the Signify Client creates and signs all KERI events, credentials, etc. ensuring that unencrypted private key material never leaves the client. The key generate methods are descrive in more detail in the following sections. Salty KeysThe Salty Key algorithm is used to create a hierarchical deterministic key chain for each AID by generating a unique random salt for each AID and stretching the salt using Argon2 with a The salt for each AID is encrypted with the X25519 encryption key generated from the passcode and stored on the server with other AID metadata, including the AID index and current key index. The Signify Client API must accept the AID salt as an optional parameter to creating Salty Key AIDs allowing users to manage AID salts externally or to share Salts across AIDs if required. The following Python data class represents the metadata storage for Salty Key AIDs: ```python class SaltyPrm: """ Salty prefix's parameters for creating new key pairs """ sxlt: str = '' # qualified b64 encoded AID salt pidx: int = 0 # prefix index for this keypair sequence kidx: int = 0 # key index for this keypair sequence stem: str = '' # default unique path stem for salty algo tier: str = '' # security tier for stretch index salty algo dcode: str = '' # next digest hasing code icodes: list = field(default_factory=list) # current signing key seed codes ncodes: list = field(default_factory=list) # next key seed codes transferable: bool = False ``` Salty Key Salt RotationsDocument the procedure for rotating a new Salt in for a Salty Key AID. Randy KeysThe Randy Key algorithm allows for all signing and rotation private keys to be generated solely from entropy and encrypted with the X25519 encryption key generated from the passcode and stored on the server alongside other AID metadata. The server stores the encrypted private key material for signing and rotation keys in separate LMBD sub-databases as indexed qualified base 64 CESR encoded Cipher representations. Sandy KeysGroup KeysThe Group Key algorithm is a special key generation algorith for distributed group multisig AIDs that does not manage and keys at all. Instead this algoritm allows for the specification of an AID of one of the other three types to be the "local" participant in a distributed group multisig AID. All signing operations must be performed on the Signify Client on behalf of the "local" AID for this Signify Client indexed based on the local AID's location in both the signing key list and the rotation key list. HSM Keys (Experimental)The SignifyPy Signify Client defines an experimental interface for declaring external modules that can be used as Signify HSM Integration Modules to allow all key generation and event signing to occur in an external Hardware Security Module (HSM). Two sample implementations have been defined to date, one using the Google KSM and one using a Trezure One external HSM. The following psuedo Python class represents the current, experimental interface a SHIM has to implememnt to work with SignifyPy. It is anticipated that each Signify Client implementation defines a similar interface. ```python class Shim: def incept(self, transferable=True): """ Create an AID using the Google KSM for key generation and event signing.
``` Passcode RotationTo perform a passcode rotation, the Signify Client requires both old and new passcodes and must perform the following steps:
Partial Client AID Rotaion in Support of Passcode RotationTo provide post-quantum secure passcode recovery, a passcode recovery must be accompanied by partial rotation of the Client AID. This partial rotation is possible because the user will have to provide both old and new passcodes to initiate the process. The partial rotation of the Client AID is accomplished by using the old passcode to regenerate the the prior rotation key pair called The public key for The rotation event is signed with the private keys of both
With the following attached signatures:
The first signature satisfies the current signing threshold and has only one index, 0 for signing key index. The second signature satifies the prior rotation threshold and thus uses dual index code to specify a current signing index of 1 and a prior signing index of 0. The following steps are followed to accept the passcode rotation:
Passcode Rotation RecoveryWhen each Agent Worker is loaded it will check for a saved old passcode to detect an aborted passcode rotation. If a saved encrypted old passcode is found the Agent Worker will notify the client in the response to the state call that a passcode rotation recovery is needed and lock out all other operations until it is completed successfully. To perform a passcode rotation recovery, the Signify Client requires only the new passcode and must perform the following steps:
Signify Request/Response AuthenticationSignify clients must sign all requests to the KERIA Admin Interface using the latest signing key of the Client AID and must expect all responses from the KERIA service be signed by the latest signing key of the Agent AID. Both request and response signing rely on the same set of HTTP headers to accomplish request/response signing. Metadata HeadersDocument Signature Input HeaderDocument the Signature HeaderDocument the signing method and |
| weboftrust-keria-main/6 | weboftrust-keria-main | repository prose file | Apache-2.0 | MAINTAINERS.md | https://github.com/WebOfTrust/keria/blob/main/MAINTAINERS.md | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/MAINTAINERS.md. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 1934 | MaintainersThis document lists the maintainers of this project. Current Maintainers| Name | GitHub | Discord | email | | --------------- | ----------------------------------------------------- | --------------- | -------------------------- | | Fergal O'Connor | iFergal | djlandlord | | | Daniel Lenksjö | lenkan | lenksjo_82594 | | | Kent Bull | kentbull | kentbull | | ResponsibilitiesMaintainers are responsible for:
Review ProcessAll pull requests require approval from at least 2 out of 3 maintainers before merging. Retired Maintainers| Name | GitHub | Discord | email | | ----------------------- | ------------------------------------------------------- | --------------------- | ------------------------------------- | | Phil Feairheller | pfeairheller | philfeairheller_95942 | | | Lance Byrd | 2byrds | megrimlance | | | Rodolfo Miranda | rodolfomiranda | rodo5833 | | | Kevin Griffin | m00sey | m00sey | | |
| weboftrust-keria-main/7 | weboftrust-keria-main | repository prose file | Apache-2.0 | changelog.md | https://github.com/WebOfTrust/keria/blob/main/changelog.md | WebOfTrust / keria-main, https://github.com/WebOfTrust/keria/blob/main/changelog.md. Licensed under the Apache License 2.0; the license and any notices are in the repository. Found through KERISSE. | 8884 | Changelog0.4.0 - 2026-03-23Changes in this draft cover the delta from Summary
Agent, credential, and exchange behavior
Runtime, logging, and operability
Configuration, startup, and testability
API descriptions and generated schemas
Type and response-shape compatibility
Dependency, packaging, and CI updates
0.3.0 - 2025-05-28
0.2.0-rc4 - 2025-05-28
0.2.0-rc2 and Older Releases0.2.0-rc2 - 2025-01-24
0.2.0-rc1 - 2025-01-13
0.2.0 / 0.2.0-dev6 - 2024-12-12
0.2.0-dev5 through 0.2.0-dev0 - 2024
0.1.3 and Earlier - 2024
|
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE document_text (id TEXT PRIMARY KEY, source_id TEXT, kind TEXT, license TEXT, title TEXT, url TEXT,
credit TEXT, chars INTEGER, text TEXT);