Manifest Specification
Sample Ring Manifests
{
"manifest": {
"name": "Test Ring",
"url": "http://192.168.1.113:8000",
"description": "A ring for testing",
"manifest_type": "ring",
"keyset": {
"keys": [
{
"kty": "OKP",
"crv": "Ed25519",
"x": "NjClgero69BySgTSP5dpNUOIMn7jvFEB3WqV_l_Aw2o",
"kid": "bbfe469e489049226a5f23790e9a6df4b4d1572fc11f9a44ac26ad9ca358395b",
"alg": "EdDSA",
"use": "sig"
},
{
"kty": "OKP",
"crv": "X25519",
"x": "w5I72skiVbk6xuqC4_PBtvoFww-wTJgCeamltQe9thY",
"kid": "0d4acb3c81f53048433d7519c0f89ce08c9b0b7aaede98f8a93f95385385300a",
"alg": "ECDH-ES",
"use": "enc"
}
]
},
"members": {
"http://site1:8001": {
"description": "Site 1",
"keyset": {
"keys": [
{
"alg": "EdDSA",
"crv": "Ed25519",
"kid": "fe1a7aa43cfb5d603bb4e9ed9dc4845e5686e2d8308107041ad5272c27b3f8df",
"kty": "OKP",
"use": "sig",
"x": "SHR0Q1VYTnhTVkF0cmVzbFNsNTFTYTBaYl84V1ZlYzZ5TWpYYUR2a0ppYw"
}
]
},
"name": "Site 1",
"standing": "good",
"url": "http://site1:8001"
},
"http://site2:8002": {
"description": "Site 2",
"keyset": {
"keys": [
{
"alg": "EdDSA",
"crv": "Ed25519",
"kid": "176bc682fb2810b6e9970ffe82c48989a430aaa027f37cb16122a39e78da6c96",
"kty": "OKP",
"use": "sig",
"x": "c3dmUU1DVWNmMmZMRUY2dmZHQ1NuUkJKVFVpdVJJTFlObW9aUm5JZGgwRQ"
}
]
},
"name": "Site 2",
"standing": "neutral",
"url": "http://site2:8002"
}
},
"timestamp": 1775488042
},
"signature": "-cGPJZtB6w5rFccjmKiK8QAVC1xTSO5sdZ6PWlUsd4GUXbFgTXdrzG9TA09xfPWB6zhxiUy2IMTnNUfQ9_WwCw"
}
Sample Site Manifest
{
"manifest": {
"name": "Site 1",
"url": "http://site1:8001",
"description": "Site 1",
"manifest_type": "member",
"manifest_version": 2,
"keyset": {
"keys": [
{
"kty": "OKP",
"crv": "Ed25519",
"x": "HttCUXNxSVAtreslSl51Sa0Zb_8WVec6yMjXaDvkJic",
"kid": "9d2cb51ae91c4eb4ae582d92b3b0b18abce52816d41211ab93a9d9faa7ed0b3a",
"alg": "EdDSA",
"use": "sig"
}
]
},
"rings": {
"http://192.168.1.113:8000": {
"description": "A ring for testing",
"keyset": {
"keys": [
{
"alg": "EdDSA",
"crv": "Ed25519",
"kid": "bbfe469e489049226a5f23790e9a6df4b4d1572fc11f9a44ac26ad9ca358395b",
"kty": "OKP",
"use": "sig",
"x": "NjClgero69BySgTSP5dpNUOIMn7jvFEB3WqV_l_Aw2o"
},
{
"alg": "ECDH-ES",
"crv": "X25519",
"kid": "0d4acb3c81f53048433d7519c0f89ce08c9b0b7aaede98f8a93f95385385300a",
"kty": "OKP",
"use": "enc",
"x": "w5I72skiVbk6xuqC4_PBtvoFww-wTJgCeamltQe9thY"
}
]
},
"name": "Test Ring",
"votes": {
"http://site2:8002": "mErgdxwJuVwgJXnzzSYwzTufNgplLlaI-GSotBWTMUXaJuHKqWsqmxYWbfd9jpskhwdAuCwIaxkywGtttZ0BJZJ3xr2qhObfqysyM2bREbwR8kPK52FHv0PKIz3FHuMb_D60zP5CYUKlvX5Tb8-67StFHAtGMoMJgH3JR0t_NnkTuEPUhfaMdhiTdUrGqKgTit8oBs--IwbGoDKBpstqEAAh7oYatMiN2d4oR_aUQE_VD7yBnI3r4UKLTEw"
}
}
},
"timestamp": 1775488091
},
"signature": "ES0vjngExy6MhgM4HFsj3qz1mkznx3G7-I2IZ7ZLoMuTIyzNquBz0Pp7MOi_1Ga19S9LYzLi0gREf-meyA98CA"
}
Votes
Vote objects are encrypted with the ring server’s public key, but they follow this structure:
{
"description": "Great stuff",
"standing": "good",
"timestamp": 1765492040,
"vote_subject_url": "https://alice-zone.net"
}
JWKS
Ringspace exchanges keys in JSON Web Key Set format. Any time a keyset field occurs, the value is a JWKS. This allows for a more conventional, standard key exchange mechanism, and future adoption of additional ciphers/key types. The x field is the public key in Base64URL (URL Safe, no padding) format.