diff options
author | friendica <info@friendica.com> | 2012-06-18 18:13:36 -0700 |
---|---|---|
committer | friendica <info@friendica.com> | 2012-06-18 18:13:36 -0700 |
commit | 3e461abe6e93424ab8558ad21553fc6f268e750f (patch) | |
tree | 485ef3c81789aa860a8ba59efe84005d5bcd7bf7 | |
parent | 341a5a26724155a4866681a741e33552be41f6ec (diff) | |
download | volse-hubzilla-3e461abe6e93424ab8558ad21553fc6f268e750f.tar.gz volse-hubzilla-3e461abe6e93424ab8558ad21553fc6f268e750f.tar.bz2 volse-hubzilla-3e461abe6e93424ab8558ad21553fc6f268e750f.zip |
some psuedo code for the basic building blocks of zot-2012 - these are just ideas without a lot of the details yet filled in and this should NOT be used as any kind of definitive reference.
-rw-r--r-- | spec/zot-2012.txt | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/spec/zot-2012.txt b/spec/zot-2012.txt new file mode 100644 index 000000000..d2a4a5815 --- /dev/null +++ b/spec/zot-2012.txt @@ -0,0 +1,154 @@ + +First create a global unique userid + + +Site userid: +https://macgirvin.com/1 + +$guuid = base64url_encode(hash('whirlpool','https://macgirvin.com/1.' . mt_rand(1000000,9999999),1); + + +Then create a hashed site destination. + +$gduid = base64url_encode(hash('whirlpool', $guuid . 'https://macgirvin.com',1); + +These two keys will identify you as a person+site pair in the future. +You will also obtain a password upon introducing yourself to a site. +This can be used to edit locations in the future. You will always keep your global unique userid + + +Introduce yourself to a site: + + +POST https://example.com/post + +{ +'type' => 'register' +'person' => $guuid +'address' => $gduid +'site' => 'https://macgirvin.com' +'info' => 'mike@macgirvin.com' +} + +Returns: + +{ +'success' => 'true' +'pass' => me_encrypt($random_string) +} + +--- +Add location +--- + +POST https://example.com + +{ +'type' => 'location' +'person' => $guuid +'address' => $new_gduid +'site' => 'https://newsite.com' +'info' => 'mike@macgirvin.com' +'pass' => me_encrypt($gduid . '.' . $pass) +} + +Returns: + +{ +'success' => 'true' +'pass' => me_encrypt($random_string) +} + +--- +Remove location +--- + +POST https://example.com + +{ +'type' => 'remove_location' +'person' => $guuid +'address' => $gduid +'pass' => me_encrypt($pass) +} + +Returns: + +{ +'success' => 'true' +'message' => 'OK' +} + + +------------ +Make friends +------------ +This message may be reversed/repeated by the destination site to confirm + + +POST https://example.com/post + +{ +'type' => 'contact_add' +'person' => $gduid +'address' => $guuid +'target' => 'bobjones@example.com' +'flags' => HIDDEN=0,FOLLOW=1,SHARE=1 +'confirm' => me_encrypt($guuid . '.' . $pass) +} + +Returns: + +{ +'success' => 'true' +'message' => 'OK' +} + + + + + + + +------- +Message +------- + +POST https://example.com/post + +{ +'type' => 'post' +'person' => $guuid +'address' => $gduid +'post' => $post_id +} + +Returns: +{ +'success' => 'true' +'message' => 'OK' +} + + +-------- +Callback +-------- + +POST https://macgirvin.com + +{ +'retrieve' => $post_id +'challenge' => you_encrypt('abc123') +'verify' => me_encrypt('xyz456' . '.' . $gduid) +} + +Returns: + +{ +'success' => 'true' +'message' => 'OK' +'response' => 'abc123' +'data' => encrypted or raw structured post +} + + |