ssbc / go-ssb-room

Room server implemented in Go
MIT License
187 stars 35 forks source link

Alternate caps.shs #316

Open mplorentz opened 2 years ago

mplorentz commented 2 years ago

I'd like to run a room on an alternate SSB network. I have the room running via docker-compose, and I can see my secret in the ssb-go-room-secrets directory. I tried adding adding a config file there with my caps dictionary, but it doesn't seem to be picked up by the room. Is there another way to pass caps keys to the room?

decentral1se commented 2 years ago

Hey @mplorentz i'm unfamiliar with this feature but I server cli options available:

  -shscap string
        secret-handshake app-key (or capability) (default "1KHLiKZvAvjbY1ziZEHMXawbCEIM6qwjCDm3VYRan/s=")

Perhaps a config option is not supported? Unsure.

mplorentz commented 2 years ago

Ah thanks @decentral1se that looks like what I want but it doesn't seem to be working when I set it. My client (go-ssb/Planetary) says:

level=error ts="2022-07-26 18:38:37.3088830 (UTC)" where=ssbConnectPeer err="connecting to \"net:192.168.1.131:8008~shs:bGo2yHoSjTFVYmZxPD9+AZM2LYnp6A/5WxHzezfDLls=\" failed: node/connect: error dialing: error wrapping connection: secrethandshake: failed during data transfer of receiving challenge: EOF"

@boreq I think you fixed a bug related to alternate caps in cryptoscope/ssb a few months ago. Do you remember the details of that and do you think that go-ssb-room would have the same issue? I think they share many of the underlying Go modules.

boreq commented 2 years ago

@mplorentz

The problem which you are probably referring to that I fixed was related to not being able to redeem invites on the test network. This was caused by the fact that the code always used the default network key. The linked commit allows configuring an alternate network key when redeeming invites.

I suspect that this is a separate problem.

https://github.com/planetary-social/ssb/commit/fc36febcd484bdfe6327ee421354bb4becd0834e

decentral1se commented 2 years ago

@mplorentz and to clarify, you can connect when not using the -shscap option on the CLI? You should be able to confirm that go-sbot is processing your expected value by inspecting the .ssb-go/running-config.json also.

stevenroose commented 2 years ago

I am very confused as to how the shscap work. In the code it says "appkey" so I supposed it should be a unique key. But my setup never works if I put any other 32 bytes in that field than the default ones. Do they need to be the fixed 1KHLiKZvAvjbY1ziZEHMXawbCEIM6qwjCDm3VYRan/s=?

boreq commented 2 years ago

I am very confused as to how the shscap work. In the code it says "appkey" so I supposed it should be a unique key. But my setup never works if I put any other 32 bytes in that field than the default ones. Do they need to be the fixed 1KHLiKZvAvjbY1ziZEHMXawbCEIM6qwjCDm3VYRan/s=?

Yes, the main network uses a predefined network key. It is sometimes referred to as the "app key" but the protocol guide consistently calls it a "network key". I find the name "app key" confusing. Different network keys can be used to set up alternate networks for example for testing purposes.

https://ssbc.github.io/scuttlebutt-protocol-guide/#handshake