Simple JSON files, referenced by a Profile URI:
curl https://example.com/spxp/alice
{
"ver" : "0.3",
"name" : "Crypto Alice",
"shortInfo" : "I love cryptography.",
"gender" : "female",
"email" : "cryptoalice@example.com"
}
Profiles are identified by a unique Profile Key:
{
"ver" : "0.3",
"name" : "Crypto Alice",
"shortInfo" : "I love cryptography.",
"gender" : "female",
"email" : "cryptoalice@example.com",
"publicKey" : {
"kid" : "C8xSIBPKRTcXxFix",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "skpRppgAopeYo9MWRdExl26rGA_z701tMoiuJ-jIjU8"
}
}
Authenticated by Digital Signatures:
{
"ver" : "0.3",
"name" : "Crypto Alice",
"shortInfo" : "I love cryptography.",
"gender" : "female",
"email" : "cryptoalice@example.com",
"publicKey" : {
"kid" : "C8xSIBPKRTcXxFix",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "skpRppgAopeYo9MWRdExl26rGA_z701tMoiuJ-jIjU8"
},
"signature" : {
"key" : "C8xSIBPKRTcXxFix",
"sig" : "WnRIWY8eoU5qPzWlgYjaT_j5x1MnQKpS2vD-8sC2ScnqEldHcLDnIEwRz1fOkGklq1ojNB4D2tRJVbEBrFB3AA"
}
}
Can verifyably reference other profiles:
{
"ver" : "0.3",
"name" : "Crypto Alice",
"shortInfo" : "I love cryptography.",
"gender" : "female",
"email" : "cryptoalice@example.com",
"hometown" : {
"uri" : "https://example.com/spxp/emerald.city",
"publicKey" : {
"kid" : "DJlPdI5nMAYjDevc",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "1B7B4OpoRBA6UvtewqF9cb_P1PiXVpc4f1THHfkzLmY"
}
},
"publicKey" : {
"kid" : "C8xSIBPKRTcXxFix",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "skpRppgAopeYo9MWRdExl26rGA_z701tMoiuJ-jIjU8"
},
"signature" : {
"key" : "C8xSIBPKRTcXxFix",
"sig" : "WnRIWY8eoU5qPzWlgYjaT_j5x1MnQKpS2vD-8sC2ScnqEldHcLDnIEwRz1fOkGklq1ojNB4D2tRJVbEBrFB3AA"
}
}
Privacy by JWE based encryption:
{
"ver" : "0.3",
"name" : "Crypto Alice",
"shortInfo" : "I love cryptography.",
"gender" : "female",
"email" : "cryptoalice@example.com",
"hometown" : {
"uri" : "https://example.com/spxp/emerald.city",
"publicKey" : {
"kid" : "DJlPdI5nMAYjDevc",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "1B7B4OpoRBA6UvtewqF9cb_P1PiXVpc4f1THHfkzLmY"
}
},
"publicKey" : {
"kid" : "C8xSIBPKRTcXxFix",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "skpRppgAopeYo9MWRdExl26rGA_z701tMoiuJ-jIjU8"
},
"private" : [
"eyJraWQiOiJBQkNELjEyMzQiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..SfT0skkIjzru5ylj.eDnedk0RIWIk6m6YQwwwzeZg7q1GH87HW5wUqKJcWRCNZHgI5hCUmDATDzW_eeUsQp8mkkQ4fpqlrBmX5lwv3vsdmgL4r-18GVhxGhbq6GxtbR8YE2MPTxJUZ3D56QHld8ZkOV5pOu7h5BhO9f2zKNEB2j0xbNEqgr259_T983VEoqqp0Rrze1qgmshMQLkZsUrbHsnDaPsp28bhRb_zMInvhBNfa6M.zYtiVMmo-TC_BhJDGPwoHA"
],
"signature" : {
"key" : "C8xSIBPKRTcXxFix",
"sig" : "WnRIWY8eoU5qPzWlgYjaT_j5x1MnQKpS2vD-8sC2ScnqEldHcLDnIEwRz1fOkGklq1ojNB4D2tRJVbEBrFB3AA"
}
}
Extra data provided by additional endpoints:
{
"ver" : "0.3",
"name" : "Crypto Alice",
"shortInfo" : "I love cryptography.",
"gender" : "female",
"email" : "cryptoalice@example.com",
"hometown" : {
"uri" : "https://example.com/spxp/emerald.city",
"publicKey" : {
"kid" : "DJlPdI5nMAYjDevc",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "1B7B4OpoRBA6UvtewqF9cb_P1PiXVpc4f1THHfkzLmY"
}
},
"publicKey" : {
"kid" : "C8xSIBPKRTcXxFix",
"kty" : "OKP",
"crv" : "Ed25519",
"x" : "skpRppgAopeYo9MWRdExl26rGA_z701tMoiuJ-jIjU8"
},
"private" : [
"eyJraWQiOiJBQkNELjEyMzQiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..SfT0skkIjzru5ylj.eDnedk0RIWIk6m6YQwwwzeZg7q1GH87HW5wUqKJcWRCNZHgI5hCUmDATDzW_eeUsQp8mkkQ4fpqlrBmX5lwv3vsdmgL4r-18GVhxGhbq6GxtbR8YE2MPTxJUZ3D56QHld8ZkOV5pOu7h5BhO9f2zKNEB2j0xbNEqgr259_T983VEoqqp0Rrze1qgmshMQLkZsUrbHsnDaPsp28bhRb_zMInvhBNfa6M.zYtiVMmo-TC_BhJDGPwoHA"
],
"friendsEndpoint" : "friends/alice",
"postsEndpoint" : "posts?profile=alice",
"signature" : {
"key" : "C8xSIBPKRTcXxFix",
"sig" : "WnRIWY8eoU5qPzWlgYjaT_j5x1MnQKpS2vD-8sC2ScnqEldHcLDnIEwRz1fOkGklq1ojNB4D2tRJVbEBrFB3AA"
}
}
Time series of posts:
curl https://example.com/spxp/posts?profile=alice
{
"data" : [
{
"seqts" : "2018-09-17T14:04:27.373",
"createts" : "2018-09-16T12:23:18.751",
"type" : "text",
"message" : "Hello, world!",
"signature" : {
"key" : "C8xSIBPKRTcXxFix",
"sig" : "bDOgcT4uxTKYMTuOJXDbAPc1UA2p-aGdxwplUWNStzyDRIRPu9UxaTU1IoZ1ELjBY5iRf4FEBPV09Uw9TOYuCA"
}
}, {
"seqts" : "2018-09-15T12:35:47.735",
"type" : "web",
"message" : "Interesting read...",
"link" : "https://example.com",
"signature" : {
"key" : "C8xSIBPKRTcXxFix",
"sig" : "skQBzttDURV-N4kqK9fgyWw4Ddixsmld4nnilC_XUqSZhXfeNfw_4PrIlLwaFdHDTO-au4iaZM64oSWLP-z0BA"
}
}
],
"more" : true
}
Clients follow profiles and present data based on user preferences:
Based on rock-solid standards:
- HTTP (RFC7230 family)
- JSON (RFC7519)
- JWE (RFC7516)
- JWK (RFC7517)
- Curve 25519 (RFC7748, RFC8032, RFC8037)