You are reading content from Scuttlebutt
@mix %qQxD+1r1pSwqZkpbN3NXAM9vxiErdd/W72PU2HSKepQ=.sha256

caps / network identifier

so there's this network identifier, a secret-handshake "caps" in ssb-config :

  caps: {
    shs: '1KHLiKZvAvjbY1ziZEHMXawbCEIM6qwjCDm3VYRan/s=',   // << this thing
    sign: null
  }

My understanding is in the handshake, you just cannot complete the handshake with a peer rocking a different caps. My question is whether this caps is tied into message signing or hashlinking in any way. e.g. what would happen if I hang out on Island A with that caps above, posts a bunch of messages, then swap to Island B with a different caps ... would messages from A be valid in B?

@cryptix %sejN1tu/Hphlin20NlMNpL83MfRfSoklfogpzwcTt4Y=.sha256

@mix spot on! that is for the connection handshake.

would messages from A be valid in B?

yes they would. I think what you want for that to be false is the caps.sign. IIRC that is what gets fed to sign/verify obj in ssb-keys as hmac_key but havent used this yet myself.

@mix %MfqGAuAQMebjg+eY9LYZ30ZKeBoeXJeE4E5nQ8r3R8A=.sha256

Answer (I think)

This is hand-wavey because how all this plugs together is hard to follow (for me) because documentation is missing, and the stack has a lot of layers :

  1. ..... the write method for a message is in ssb-db/minimal.js (I've just heard this is true)
  2. ssb-db/minimal.js#L179-L205 the append metod uses a queue
  3. ssb-db/minimal.js#L117-L127 this is defined here, and takes an hmac_key
  4. ssb-db/minimal.js#L74 which is var hmacKey = opts && opts.caps && opts.caps.sign

which in my case is null

@mix %LRcMcJM7dnkE8Jy4j1AHEl9uh1vWkbwezNMBhSduLe8=.sha256
  1. ssb-validate/index.js#L152-L158 following into ssb-validate we get to this line which bounces us to ssb-keys#verifyObj
  2. ssb-keys/index.js#L133-L141 is hmac_key is truthy in any way, then it's used in the verification process ...
    7 ssb-keys/sodium.js#L26-L28 we end up here

SOO... it seems it's nothing to do with caps.shs and everything to do with caps.sign which I've heard nothing about until this moment!?

TL;DR

it seems if you use any caps.shs + caps.sign = null then you might be able to read and write messages from islands with different caps.shs. So while these islands couldn't connect to one another, the messages from each island would be valid on the other island....

p.s. what does caps stand for?

@mix %MN/HUEp81V3wc43OhU0NhuUg8q5/Kvb3WmMQiRrmtxQ=.sha256
Voted [@mix](@ye+QM09iPcDJD6YvQYjoQc7sLF/IFhmNbEqgdzQo3lQ=.ed25519) spot on! that
@cryptix %xK6Yen9XojnnsSZbRtWUNjweVfjudc6itQYy1oXyvMM=.sha256
Voted 5. [ssb-validate/index.js#L152-L158](https://github.com/ssbc/ssb-validate/b
@cryptix %0jrryDrDPvmNOfrm93PN/9v1W7Q+yOxGTKWrleABunA=.sha256

what does caps stand for?

capabilities.

hermoji star

@mix %BShD54QQWk2tiSfqGvz6MOr7jxLOt5ITaGRiUBgRBjo=.sha256
Voted > what does caps stand for? capabilities. ![hermoji star](&PMzJp/fx9j9Y9
@mikey %ButTzFysbR3cAIJuptLBkz8xDfJ681W236EtHEl3PjU=.sha256

:information_source: %9yC1XNJ...

@mix %t2cJLzIGuXb1BIgToegKgEXkQAcvF8zy4yNnqpSUdEA=.sha256

Thanks @mikey - oh this is really cool, I love that the logic for connections and for valid messages is seperate.... this has some really awesome affordances

Join Scuttlebutt now