Replies: 2 comments 3 replies
-
That's already a pretty good summary. There's been a lot of renaming and other changes going on . A ServiceId is either a ACI or PNI or in the future also some other kind of identifier. The ACI is the account identifier and never changes for a registered account. It gets deleted on the server some time after an account is deleted. When checking a phone number on the signal server you currently get both the PNI and the ACI of the account. If an ACI is available, messages are sent to that. Now about the intention I'm also not completely sure. Because when the new contact responds to the message he will send it from his ACI. So the PNI is only seems relevant for sending a first message to a new contact ... |
Beta Was this translation helpful? Give feedback.
-
Given that the change described above is now in place, how does it now work? How given a PNI, do you get the ACI for a new contact? |
Beta Was this translation helpful? Give feedback.
-
This is off-topic and not related to signal-cli in particular, but rather Signal itself.
Then why post here? Because I believe AsamK understands how Signal internally works because of all the great work in signal-cli, but please go ahead and close this if you want to.
To not bother the community or AsamK, once I create this discussion, I'll close it if I can (this is my first starting a discussion on github so I don't know how it works).
Sorry for posting here.
I'll begin with my understanding of how Signal used to work/works, in a nutshell of course, and then I'll ask my questions.
In the past (E164 times) things were simple enough for me to understand, clients have a list of E164s, they check the server to see who is registered and who is not, and then they update their database with the results. And whenever you want to send anyone something, you ask the server to send X (content) to Y (E164). Easy enough.
Then a single UUID was introduced to replace E164. Now things changed a little bit but not too much. Like in the E164 times, clients have a list of E164s, they check the server to see who is registered and who is not, now the server not only returns the registration status, but it also returns the user's UUID. And whenever you want to send anyone something, you ask the server to send X (content) to Y (UUID). Again, easy enough.
Now at this point things were simple, users had a single identity (based on E164 since the verify v2 feature flag that switches safety numbers to use UUID instead was never turned on).
Note: I don't think I understand anything beyond this point, it's all (un)educated guesswork.
I think UUID was later renamed to ACI? I'm not sure.
PNI's were introduced and users now had two identities, one for ACI (originally UUID) and one for the brand new PNI.
Building and installing Spinner on an Android emulator and accessing the db shows that I have both ACI and PNI for my contacts in the recipient table. Which made me even more confused.
And then something called ServiceId gets introduced. To my understanding, I think both ACIs and PNIs are ServiceIds. Considering that PNP is turned off since it is at the time of writing, why do I have both in my db?
I have a lot of questions but I won't bombard you with them in another wall of text, I'll start with a simple (not very simple to me) one: What are ACIs, PNIs, and ServiceIds?
Thank you :)
Edit: I couldn't close the discussion, sorry.
Beta Was this translation helpful? Give feedback.
All reactions