Files
sonr/proto/did/v1/models.proto
T

116 lines
2.5 KiB
Protocol Buffer
Raw Normal View History

2024-08-31 12:49:44 -04:00
syntax = "proto3";
package did.v1;
2024-09-05 01:24:57 -04:00
import "did/v1/constants.proto";
2024-08-31 12:49:44 -04:00
import "did/v1/genesis.proto";
2024-09-05 01:24:57 -04:00
import "gogoproto/gogo.proto";
2024-08-31 12:49:44 -04:00
2024-09-05 01:24:57 -04:00
option go_package = "github.com/onsonr/sonr/x/did/types";
2024-08-31 12:49:44 -04:00
2024-09-05 01:24:57 -04:00
// Accumulator defines a BLS accumulator
message Accumulator {
bytes accumulator = 1;
2024-08-31 12:49:44 -04:00
}
// Credential defines a WebAuthn credential
message Credential {
string id = 1;
string credential_type = 2;
bytes credential_id = 3;
repeated string transport = 4;
string subject = 6;
string controller = 7;
2024-09-05 01:24:57 -04:00
}
// DID defines a parsed DID string
message DID {
DIDNamespace method = 1;
string network = 2;
string subject = 3;
string identifier = 4;
repeated string paths = 5;
}
2024-08-31 12:49:44 -04:00
// Document defines a DID document
message Document {
string id = 1;
repeated VerificationMethod verification_methods = 2;
repeated string authentication = 4;
repeated string assertion_method = 5;
repeated string capability_delegation = 7;
repeated string capability_invocation = 8;
2024-09-05 01:24:57 -04:00
repeated string service = 9;
2024-08-31 12:49:44 -04:00
}
// Metadata defines additional information provided to a did
message Metadata {
string origin_uri = 1;
map<string, string> public = 2;
map<string, Property> private = 3;
}
2024-09-05 01:24:57 -04:00
// Permissions contains a list of grants and access control rules for
2024-08-31 12:49:44 -04:00
// a Service.
message Permissions {
repeated DIDNamespace grants = 1;
repeated PermissionScope scopes = 2;
}
// Profile defines an associated public identity for a did subject
message Profile {
string id = 1;
string subject = 2;
string controller = 3;
2024-09-05 01:24:57 -04:00
Metadata metadata = 4;
2024-08-31 12:49:44 -04:00
}
// Property defines a Zero-Knowledge accumulator which can be used to
// anonymously prove a given value to a DID subject
message Property {
bytes accumulator = 1;
bytes key = 2;
}
// PubKey defines a public key for a did
message PubKey {
2024-09-05 01:24:57 -04:00
KeyRole role = 1;
KeyAlgorithm algorithm = 2;
KeyEncoding encoding = 3;
bytes raw = 4;
string hex = 5;
string multibase = 6;
map<string, string> jwk = 7;
}
// Service defines a Decentralized Service on the Sonr Blockchain
message Service {
string id = 1;
string controller = 2;
string origin = 3;
Permissions permissions = 4;
OpenIDConfig openid = 5;
Metadata metadata = 6;
}
// Token defines a macron token
message Token {
string id = 1;
string controller = 2;
bytes macron = 3;
2024-08-31 12:49:44 -04:00
}
// VerificationMethod defines a verification method
message VerificationMethod {
string id = 1;
string controller = 2;
2024-09-05 01:24:57 -04:00
DIDNamespace method = 3;
PubKey public_key = 4;
Service service = 7;
2024-08-31 12:49:44 -04:00
}
2024-09-05 01:24:57 -04:00
// Witness defines a BLS witness
message Witness {
bytes witness = 1;
}