This includes a working server and command-line client for review, testing, and compatibility. This is not intended for consumers or any other regular folk.
Requires Java and Maven.
To build:
mvn clean install
To run:
java -jar target/trsst-client-1.0-SNAPSHOT-exe.jar
Usage:
post [<id>] [--status <text>] [--encrypt <pubkey>]
-a,--attach <file> Attach the file at the specified path to the new
entry
-b,--body <markdown> Specify entry body on command line
-e,--encrypt <pubkey> Encrypt entry for specified public key
-i,--icon <url> Set this feed's icon url
-k,--key <file> Use the key store at the specified path
-l,--logo <url> Set this feed's logo url
-m,--mail <email> Set this feed's author email
-n,--name <text> Set this feed's author name
--subtitle <text> Set this feed's subtitle
-p,--pass <text> Specify passphrase on the command line
-s,--status <text> Specify status update on command line
-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
pull <id>...
-h,--home <url> Set home service for this operation
push <url> <id>...
-h,--home <url> Set home service for this operation
port <portnumber>
-?,--help Display these options
Example: start a server.
$ java -jar target/trsst-client-1.0-SNAPSHOT-exe.jar port 8181
Services now available at: http://192.168.1.21:8181/trsst
Example: create a new empty feed.
$ java -jar target/trsst-client-1.0-SNAPSHOT-exe.jar post
Starting temporary service at: http://192.168.1.15:51703
Generating new feed id...
New feed id created: 1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN
Default file persistence serving from: /Users/mpowers/trsstd
wrote: /Users/mpowers/trsstd/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/feed.xml
<?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:base="http://192.168.1.15:51703/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/" xml:space="default">
<updated>2013-12-31T22:59:04.938Z</updated>
<trsst:sign>MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEA3aN-CC-s-AF9bfKVEHymDysyVr5jv0MfzPhZgpUL7nZP2IFWB6Ep0reX-RjHjoCAryPQvg9CtSO7mYvuv1DTg</trsst:sign>
<trsst:encrypt>MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAELKEY57QzrH4bPLpxWeaEwMqy771D1OgsTZ8QEPxOvUZthmRBtMjH_u7Epsfrl-VU-chdBTlZjB5-Pk-DAbllRg</trsst:encrypt>
<id>urn:feed:1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN</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>flQs7WOaYbOnv7R+P1cXqCh/pl8=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
pKxbZwV1oMh3thk5G221LrD0AY2sUEdM2WT7C0BkoRFce0Ml1000CpX7ZKfRAsILDuJbrbJBONRA
UTxVUU7dPA==
</ds:SignatureValue>
</ds:Signature>
</feed>
Example: create a new post on a preexisting feed.
$ java -jar target/trsst-client-1.0-SNAPSHOT-exe.jar post --status "First Post" 145qkKDkkeDA93Va4vSLePdmp6okkXeD9U
Starting temporary service at: http://192.168.1.15:51777
Obtaining keys for feed id: 1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN
Using existing account id: 1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN
Default file persistence serving from: /Users/mpowers/trsstd
wrote: /Users/mpowers/trsstd/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/feed.xml
wrote: /Users/mpowers/trsstd/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/1434ae49026.atom
<?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:base="http://192.168.1.15:51703/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/" xml:space="default">
<updated>2013-12-31T23:02:09.702Z</updated>
<id>urn:feed:1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN</id>
<sign xmlns="http://trsst.com/spec/0.1">MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEA3aN-CC-s-AF9bfKVEHymDysyVr5jv0MfzPhZgpUL7nZP2IFWB6Ep0reX-RjHjoCAryPQvg9CtSO7mYvuv1DTg</sign>
<encrypt xmlns="http://trsst.com/spec/0.1">MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEA3aN-CC-s-AF9bfKVEHymDysyVr5jv0MfzPhZgpUL7nZP2IFWB6Ep0reX-RjHjoCAryPQvg9CtSO7mYvuv1DTg</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>A+ggpFsmDX0HEIdbnmYZpoblXyU=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
g2ZswWUBw9V4AX2aa9crrL1jZDTfL9Ujaxeio8TBzY7qRGulKruactJMjA8iYdq+Yo94p2/DnWlP
/weWS78LSA==
</ds:SignatureValue>
</ds:Signature>
<entry>
<updated>2013-12-31T23:02:09.702Z</updated>
<id>urn:entry:1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/1434ae49026</id>
<published>2013-12-31T23:02:09.702Z</published>
<title type="text">First Post</title>
<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>+v4zR9aLrGbMfSbCeFBdoMMFUOw=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
3m2rfxx9PfaL2MPXMB12ATGnTkxtuFC8fY1f0cvXevPFopC9b/c7RiuZ9fysex0MJVB+z+O4xXrw
C7qLIIRQsw==
</ds:SignatureValue>
</ds:Signature>
</entry>
</feed>
Example: create an encrypted post on a preexisting feed.
$ java -jar target/trsst-client-1.0-SNAPSHOT-exe.jar post --status "Secret Post" 145qkKDkkeDA93Va4vSLePdmp6okkXeD9U
-- encrypt MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEQn1eOiToQlurH0gIE0AsBTJNBF1jrOSSIr8i4RSRdvx7dtkD1hre0vgPabJMLH9QktK6AYhl31xkf3xqp_mPxw
Starting temporary service at: http://192.168.1.15:51929
Obtaining keys for feed id: 1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN
Using existing account id: 1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN
Default file persistence serving from: /Users/mpowers/trsstd
wrote: /Users/mpowers/trsstd/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/feed.xml
wrote: /Users/mpowers/trsstd/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/1434ae883ea.atom
<?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:base="http://192.168.1.15:51703/1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/" xml:space="default">
<updated>2013-12-31T23:06:28.714Z</updated>
<id>urn:feed:1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN</id>
<sign xmlns="http://trsst.com/spec/0.1">MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEA3aN-CC-s-AF9bfKVEHymDysyVr5jv0MfzPhZgpUL7nZP2IFWB6Ep0reX-RjHjoCAryPQvg9CtSO7mYvuv1DTg</sign>
<encrypt xmlns="http://trsst.com/spec/0.1">MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEA3aN-CC-s-AF9bfKVEHymDysyVr5jv0MfzPhZgpUL7nZP2IFWB6Ep0reX-RjHjoCAryPQvg9CtSO7mYvuv1DTg</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>vLauOLLIYysNltvUH/U4G0EIkFU=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
aSJQ7rveKmyaA8ys9+H7vphTxqdwzMMe63JbAVd86anJe6u7/y+GTX3i0X6VmYpKptegCZiMNll1
F5v0nKxKLQ==
</ds:SignatureValue>
</ds:Signature>
<entry>
<id>urn:entry:1MbwHVXTVF3qnqgKdiZzN3iguKMxbUakbN/1434ae883ea</id>
<updated>2013-12-31T23:06:28.714Z</updated>
<published>2013-12-31T23:06:28.714Z</published>
<predecessor xmlns="http://trsst.com/spec/0.1">
3m2rfxx9PfaL2MPXMB12ATGnTkxtuFC8fY1f0cvXevPFopC9b/c7RiuZ9fysex0MJVB+z+O4xXrw
C7qLIIRQsw==
</predecessor>
<title type="text">Encrypted content</title>
<content type="text/xml">
<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
<CipherData>
<CipherValue>BPPENTmBtJChpI0jTaqdTNjrG0ACsM5OsA8a8Sd8zgctLJi8EMM1TPEEqrT3kXoaE1ue5
faDzPJay97MNf5dArdGBE0nhHQKadwBHkuM1gsuOXedG31RkKnenMBteVZukGBu8oaRHV-DXyO_K7hkbQH
SFW2wZrSfTB9P5POGgOZSwonjQzOSoKBeSwheJa8cECvNbv-LWfwYsYWtO2_-xyQrg9bF1I4Wrx69-7UdY
hG8OD6EtY-kT1iaUEU3aTcmSBesc0yLBCSyHWKBRCbI_b5q0-mSHG-ZVM_S_EixIxJkjtktBvFulKs68YC
h8D4psDlvas5Zs1zVZYWbBwMZ1xZ6YBwrmgamIiSlhUW0ZFvd1fDsbiyjV6cqeGkv64HFuXbJzFOL7n6AW
uHiBQsHlj_8Py1nQBNRDumitnvlCzGUz-kQ9YVfK540s_HlJNsEdR_7aUH7s58JMxDDcVeEjiiexA2mXxy
BkZIze4yyFSfQFEH8k-tjmdGcDtANpbScnGcD1TYuJGKWmTcbxuBJ4nSsI7Lo9K7ec7lx-OcHpQ0c3gAHf
vTmPRmuFonzwcMLxDWjHiQVGKIM0HoqWEMZXQxUSu6MSj33THcNV-OaBzaWJW8sxK1gU4NkYn7b7QdTatq
j7CCoii-SjbvRUR1VmT_apsegIQjgBu6n8VTFcOeKo3PfXo4HVCRtDi5mKdKKC4jL4nrEaAy-CzF0ur2A5
yEA8EAfXol12DGYw5jcePSf
</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>ZSLW4QPiHrUFM7bvDdRMO7qPLeM=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
6mfoXo2TTlMbamVzOPiEpoYtX6w3/M9Cpu5P+bG9hs2s5GbLG49Fk/JloVfAsk/UnSimzmlVJZGB
BdaQbWXrzQ==
</ds:SignatureValue>
</ds:Signature>
</entry>
</feed>