TrsstProject / trsst

Trsst protocol implementation draft
172 stars 13 forks source link

trsst

What is trsst?

It depends on who you are.

All of these are correct.

Download Alpha v0.2

Current binaries are downloadable here: https://github.com/TrsstProject/trsst/releases

License

All Trsst Project source code is licensed under the Apache License, Version 2.0. http://www.apache.org/licenses/LICENSE-2.0

Frequently Asked Questions

The FAQ is currently kept here: https://github.com/TrsstProject/trsst/wiki/Frequently-Asked-Questions

Development Howto

Requires Java and Maven.

To build:

mvn clean install

To run:

java -jar target/trsst-client-0.2-SNAPSHOT-exe.jar

Usage:

post [<id>] [--status <text>] [--encrypt <pubkey>]
 -a,--attach             Attach the specified file, or - for std input
 -b,--base <url>         Set base URL for this feed
 -c,--content <text>     Specify entry content on command line
 -e,--encrypt <pubkey>   Encrypt entry for specified public key
 -g,--tag <text>         Add a tag
 -i,--icon <url>         Set as this feed's icon or specify url
 -l,--logo <url>         Set as this feed's logo or specify url
 -m,--mail <email>       Set this feed's author email
 -n,--name <text>        Set this feed's author name
 -p,--pass <text>        Specify passphrase on the command line
 -r,--mention <id>       Add a mention
 -s,--status <text>      Specify status update on command line
    --strict             Require SSL certs
    --subtitle <text>    Set this feed's subtitle
 -t,--title <text>       Set this feed's title
 -u,--url <url>          Attach the specified url to the new entry
 -v,--verb <verb>        Specify an activitystreams verb for this entry
    --vanity <prefix>    Generate feed id with specified prefix

pull <id>...
 -d,--decrypt <id>   Decrypt entries as specified recipient id
 -h,--host <url>     Set host server for this operation

push <url> <id>...
 -d,--decrypt <id>   Decrypt entries as specified recipient id
 -h,--host <url>     Set host server for this operation

serve
    --api          Expose client API
    --clear        Turn off SSL
    --gui          Launch embedded GUI
    --port <arg>   Specify port
    --tor          Use TOR (experimental)

Example: start a server.

$ java -jar target/trsst-client-0.2-SNAPSHOT-exe.jar serve --port 8181

Services now available at: https://192.168.1.5:8181/feed

Example: create a new empty feed.

$ java -jar target/trsst-client-0.2-SNAPSHOT-exe.jar post

Starting temporary service at: http://192.168.1.5:51341
Generating new feed id... 
New feed id created: M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:trsst="http://trsst.com/spec/0.1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xml:space="default">
  <updated>2014-03-10T20:34:13.440Z</updated>
  <trsst:sign>
  MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEvzJUjrJSRS0NHsKq1yHur5xdhH35ao4IVTDF_WuwZti3AiAt2gZ8Sehp83PV8yD9ONlw5-DiXYbgY5PUgJTVcQ</trsst:sign>
  <trsst:encrypt>
  MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE9FJDVs846H1ne1G5upDY8CIgF_HhmCILl-967JRQTjYTzRVwHMz5mFakwOKdYBcea9Q_1wLL1L-nqWznUh_uQg</trsst:encrypt>
  <id>urn:feed:M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1</id>
  <ds:Signature>
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
      <ds:Reference URI="">
        <ds:Transforms>
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <ds:DigestValue>
        GK1D1kLSydLFRXCHJnPk2p9LjUQ=</ds:DigestValue>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>
    CGjdfB+n6uAjIDQ8UCp+GMyjlP4OazvIwzoHKZ2FL8dRGK7PVfLq/dPaGt2SysHHlmCKNhmvQ2BE
    2+hQAUtQ7g==</ds:SignatureValue>
  </ds:Signature>
</feed>

Example: create a new post on a preexisting feed.

$ java -jar target/trsst-client-0.2-SNAPSHOT-exe.jar post --status "First Post" M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1

Starting temporary service at: http://192.168.1.5:51371
Obtaining keys for feed id: M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1
Using existing account id: M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xml:space="default" xml:base="http://192.168.1.5:51371/M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1">
  <updated>2014-03-10T20:35:03.379Z</updated>
  <id>urn:feed:M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1</id>
  <sign xmlns="http://trsst.com/spec/0.1">
  MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEvzJUjrJSRS0NHsKq1yHur5xdhH35ao4IVTDF_WuwZti3AiAt2gZ8Sehp83PV8yD9ONlw5-DiXYbgY5PUgJTVcQ</sign>
  <encrypt xmlns="http://trsst.com/spec/0.1">
  MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE9FJDVs846H1ne1G5upDY8CIgF_HhmCILl-967JRQTjYTzRVwHMz5mFakwOKdYBcea9Q_1wLL1L-nqWznUh_uQg</encrypt>
  <ds:Signature>
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
      <ds:Reference URI="">
        <ds:Transforms>
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <ds:DigestValue>
        n/4ocrBhhFr/9+uIzmKkGQ0ufbk=</ds:DigestValue>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>
    68l6RxoG8ZAs3QvRs3HNeQipHE/QYuRD9jhqfZzoJO2PzfdCJ9DU2/XdDEwFBJzp96fJjW/fmQWI
    VEuQa+GBQw==</ds:SignatureValue>
  </ds:Signature>
  <entry>
    <updated>2014-03-10T20:35:03.379Z</updated>
    <id>
    urn:entry:M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1:144adb4ae53</id>
    <published>2014-03-10T20:35:03.379Z</published>
    <title type="text">First Post</title>
    <rights type="text">attribution, no derivatives, revoked if
    deleted</rights>
    <ds:Signature>
      <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
        <ds:Reference URI="">
          <ds:Transforms>
            <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
          </ds:Transforms>
          <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
          <ds:DigestValue>
          fghpP3mG0nzB5Sj4kyqlNbRGsDY=</ds:DigestValue>
        </ds:Reference>
      </ds:SignedInfo>
      <ds:SignatureValue>
      ys+J0FryCApGD/juC20q9YrbVTIH5wQqmhgvuFmYZdBlhEVpIUg6XaFNbjc4eiAnxMs5r1qACp9n
      NB1GrL7MuQ==</ds:SignatureValue>
    </ds:Signature>
  </entry>
</feed>

Example: create an encrypted post on a preexisting feed.

$ java -jar target/trsst-client-0.2-SNAPSHOT-exe.jar post --status "Secret Post" M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1
-- encrypt MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEQn1eOiToQlurH0gIE0AsBTJNBF1jrOSSIr8i4RSRdvx7dtkD1hre0vgPabJMLH9QktK6AYhl31xkf3xqp_mPxw

Starting temporary service at: http://192.168.1.5:51384
Obtaining keys for feed id: M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1
Using existing account id: M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xml:space="default" xml:base="http://192.168.1.5:51371/M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1">
  <updated>2014-03-10T20:37:10.244Z</updated>
  <id>urn:feed:M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1</id>
  <sign xmlns="http://trsst.com/spec/0.1">
  MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEvzJUjrJSRS0NHsKq1yHur5xdhH35ao4IVTDF_WuwZti3AiAt2gZ8Sehp83PV8yD9ONlw5-DiXYbgY5PUgJTVcQ</sign>
  <encrypt xmlns="http://trsst.com/spec/0.1">
  MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE9FJDVs846H1ne1G5upDY8CIgF_HhmCILl-967JRQTjYTzRVwHMz5mFakwOKdYBcea9Q_1wLL1L-nqWznUh_uQg</encrypt>
  <ds:Signature>
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
      <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
      <ds:Reference URI="">
        <ds:Transforms>
          <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
        <ds:DigestValue>
        5KBNuLZ9TTbN0UL65hFSjLN+myE=</ds:DigestValue>
      </ds:Reference>
    </ds:SignedInfo>
    <ds:SignatureValue>
    aCS1AhKl29Pdlcgs6SRhI6oNhEWpak1/8Ft8CrgwTF/qjh7Bcy3H7UjiBC97YI2bHZcedV5Z0BRf
    htGt6UCGUQ==</ds:SignatureValue>
  </ds:Signature>
  <entry>
    <id>
    urn:entry:M4QovUyLYdyMy2ZB4s7BwLztwYcyJqrJ1:144adb69de4</id>
    <updated>2014-03-10T20:37:10.244Z</updated>
    <published>2014-03-10T20:37:10.244Z</published>
    <predecessor xmlns="http://trsst.com/spec/0.1">
    ys+J0FryCApGD/juC20q9YrbVTIH5wQqmhgvuFmYZdBlhEVpIUg6XaFNbjc4eiAnxMs5r1qACp9n
    NB1GrL7MuQ==</predecessor>
    <title type="text">Encrypted content</title>
    <content type="application/xenc+xml">
      <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
        <CipherData>
          <CipherValue>
          BO8MZ3_KSnwnTD3g0apIsP6GnmzF4RrXMhVXV7VgcqBYuITqfAcKwR6s0rjb0BBGRrtxuiiqz6dIDbRGcTSuxVdIgTPcWMvDsixO-I6wnQTT5KXl6_DhoIO_perg9ap0cT-dTi6qS-mKdaN0ADqf3E6vTsgpGTt3h_8mNQCYo9baJbobFgdmzjRi75KIMyXijA</CipherValue>
        </CipherData>
      </EncryptedData>
      <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
        <CipherData>
          <CipherValue>
          BAr8zcyj6SrI0T70_-U44V4edUxB9jNNaNLfFumWrL-yj_DoOm-DcDy4lwW3SnjqeFb-_at-72bb-mPrmaMnbAk6CVVfHDgg4pRDTriBQiCxwX8VDlCA5ileCdX0qi40c2NTgsEGS7IWwmnHwfIGj5_C7bmeyiIEhB9PiU_v7t-KRXrNPblcNarZ3Gbsu71SJw</CipherValue>
        </CipherData>
      </EncryptedData>
      <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
        <CipherData>
          <CipherValue>
          nxTxeHPGnONdAEvpWtClWbA7C5SQsAdjFeleXDnMrOPb8YqTuAy_Uc4d39ycT7aoMmZlH1VWPfWyjJq43azenQbtmluNaw1ABxRvI8yWfNJZYb6fIxDQLL4en_bQ9GW5Z2epJuPU0IxU4gj99YZ_hOjyO5jpOnUO7shoTt8CRvRdtoEqI8QGT8-nmJyIg4wNMeLRTEcQ503dekG8ks6TrFGkrYAa5nlDMxrlAe_2etfr1eBDctgHkk18gCFTjO18Ydjx955DzsbZHqmnqok4eom6SNVdkHXWjQMt4bhWgJWFDjnwpaYoiqcms8upDNope6G98sib8vNX6Muw8liEq787xy4LMLbS6fbMPHzHDYV7yZV1xKA4YRKV99mWkENnhmjGrNjMrV5WVmBg_8VU2h4FicGkYtBl3mPD_Q967-CyTJlwdNWmtrECascazcdSROI7fpB0ZDnE9gdNPUlUC6YACXemjYRCY1OFyOwiVBFX8UhqR9CLsb0KzQtC_WOavNpGneZoPEO3hGVyQusawYb4ESZumuDPLSYkm6TTiRBxxlgCgmWu45zBNidOmDy2ARzq_f-aEozbKyzDJEy7hR-jXWbRrxvVUV24eiJd0gV8c7AEJYT6edXnO2PXbEjR3Itl-JOBec4k8Y2dTkUDXvdO1u1hk6uZ_oD1-RizQVo</CipherValue>
        </CipherData>
      </EncryptedData>
    </content>
    <ds:Signature>
      <ds:SignedInfo>
        <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
        <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
        <ds:Reference URI="">
          <ds:Transforms>
            <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
          </ds:Transforms>
          <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
          <ds:DigestValue>
          1Izt6hPxvZExmTWiSPT5QbMuoKs=</ds:DigestValue>
        </ds:Reference>
      </ds:SignedInfo>
      <ds:SignatureValue>
      iUFSwxDvxti1hjDFgmux7NPrk3PEEFAnhNnNqlad2VB42iir2Xl8RPcEZA1Sne7Rc51b376E9Iy0
      qT5shelegQ==</ds:SignatureValue>
    </ds:Signature>
  </entry>
</feed>