Mouro

DIDI-SSI-Mouro es un fork de uPort Trust Graph Server (aka EdgeServer). Es responsable de almacenar los datos y la informaci贸n del usuario.

Mouro es un gestor de base de datos, el cual se comunica con una base de datos SQLite para almacenar las credenciales emitidas por el didi-server y los distintos issuers. Permite el acceso a los usuarios de DIDI a sus credenciales y verifica el estado de los mismos.

Otra dato interesante, es que se crea un archivo de DB SQLite por cada DID.

Mouro

Los diferentes colores en las l铆neas no tienen un signifaco espec铆fico. Es para segu铆r con mayor facilidad las dependencias. A -> B representa que el m贸dulo A utiliza a B

Llamadas

Types

Las query cuentan con 2 tipos.

Edge

Representa una credencial emitida.

type Edge {
hash: ID!
jwt: String!
from: Identity!
to: Identity!
type: String
time: Int!
tag: String
visibility: VisibilityEnum
retention: Int
data: String
}
Identity

Contiene un identificador descentralizado.

type Identity {
did: String!
}

Headers

Las llamadas requieren de la generaci贸n de un token vac铆o firmado por el DID del usuario que realiza la llamada, este se ingresa en la secci贸n 鈥淗TTPHEADERS鈥 y tiene el siguiente formato:

{
"Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NkstUiJ9.eyJpYXQiOjE1ODAyMjY0NzEsImV4cCI6MTU4MDIyNjk3MS4xMTIsImlzcyI6ImRpZDpldGhyOjB4REZBNTE4Y2VhRWQxYmZlNmY3MDRFNTFBMThkNGJCMEExNDcxNGNkMiJ9.NdihoBy4uEMsCLaitRIETQ-fnB2SGJLyxfApked_42T9lZHJkIcGRQmxweOaer-UuG3A4R7-LOQYN76MivlQCgA"
}

Query

me

Retorna la informaci贸n del usuario a partir del token:

me: Identity

Ejemplo:

query {
me() {
did
}
}
hash

Dado un DID, retorna el hash de recuperaci贸n desde Swarm.

hash(did: String): String

Ejemplo:

query {
hash(did: 鈥渄id:ethr:...鈥)
}

Si el user que realiza la llamada es DIDI-SERVER, este puede obtener cualquier hash. En cambio, un user solo puede obtener su propio hash de Swarm.

edgeByJwt

Obtiene un certificado a partir de su jwt y did.
edgeByJwt(edgeJWT: String, did: String): Edge

Ejemplo:

query {
edgeByJwt(edgeJWT: 鈥...鈥, did: 鈥渄id:ethr:....鈥) {
jwt,
hash
}
}

Si el user que relealiza la llamada es DIDI-Server. Este puede obtener cuaquier Edge(credencial), en cambio, un user solo puede obtener su propio Edge.

findEdges

Retorna los certificados emitidos a toDID.

findEdges(toDID: String, type: [String], since: Int tag: [String], revoked: Int = 0 ): [Edge!]!

Adem谩s, por cada Edge realiza una comparaci贸n en la que el toDID debe coincidir con el user del token de autorizaci贸n o el DIDI-Server.

Mutations

addEdge

Guarda un nuevo certificado en el archivo de SQLite perteneciente al did del parametro. El 煤nico autorizado a realizar esta accion es DIDI-Server. Es decir que el mismo usuario no puede guardar una credencial emiitda hacia su did.

addEdge(edgeJWT: String, did: String):Edge Ejemplo:

mutation {
addEdge(edgeJWT: 鈥...鈥, did: 鈥渄id:ethr:....鈥) {
jwt,
hash
}
}
removeEdge

Revoca un jwt previamente emitido. Solo funciona si el did se corresponde con el del due帽o del token o el DIDI-Server.

removeEdge(hash: String, did: String):String