Get desktop application:
View/edit binary Protocol Buffers messages
RPCs from a client (iOS, Android, or web) to identity service
Called by user to register with the Identity Service (PAKE only) Due to limitations of grpc-web, the Opaque challenge+response needs to be split up over two unary requests Start/Finish is used here to align with opaque protocol
Request for registering a new user
Message sent to initiate PAKE registration (step 1)
Information needed to open a new channel to current user's device
A stringified JSON object of the following format: { "rawDeviceList": JSON.stringify({ "devices": [<primary_device_id: string>] "timestamp": <UTC timestamp in milliseconds: int>, }), "curPrimarySignature": "base64-encoded primary device signature" } It's an empty string for older clients which don't sign device lists yet.
Message sent to initiate PAKE registration (step 1)
Information needed to open a new channel to current user's device
Message from authoritative keyserver attesting that a given user has ownership of a given username
Above message signed with authoritative keyserver's signing ed25519 key
A stringified JSON object of the following format: { "rawDeviceList": JSON.stringify({ "devices": [<primary_device_id: string>] "timestamp": <UTC timestamp in milliseconds: int>, }), "curPrimarySignature": "base64-encoded primary device signature" } It's an empty string for older clients which don't sign device lists yet.
Messages sent from a client to Identity Service
Identifier to correlate RegisterStart session
Final message in PAKE registration
Called by user to register device and get an access token
Message sent to initiate PAKE login (step 1)
Information specific to a user's device needed to open a new channel of communication with this user
If set to true, the user's existing keyserver will be deleted from the identity service and replaced with this one. This field has no effect if the device is not a keyserver
Identifier used to correlate start request with finish request
Opaque challenge sent from server to client attempting to login (Step 2)
Identifier used to correlate start request with finish request
Message containing client's reponse to server challenge. Used to verify that client holds password secret (Step 3)
Information specific to a user's device needed to open a new channel of communication with this user
Called by primary device during backup restore protocol
SIWE social proof message and signature
A stringified JSON object of the following format: { "rawDeviceList": JSON.stringify({ "devices": [<primary_device_id: string>] "timestamp": <UTC timestamp in milliseconds: int>, }), "curPrimarySignature": "base64-encoded new primary device signature", "lastPrimarySignature": "base64-encoded old primary device signature" }
UserKeys backup fields
Called by other services to verify a user's access token
signing ed25519 key for the given user's device
Called by authoritative keyserver to add usernames to the Identity service's reserved list
Message from authoritative keyserver containing the username to be added
Above message signed with authoritative keyserver's signing ed25519 key
Called by authoritative keyserver to remove usernames from the Identity service's reserved list
Message from authoritative keyserver containing the username to be removed
Above message signed with authoritative keyserver's signing ed25519 key
Called by users periodically to check if their code version is supported
Returns userID for given username or wallet address
userID if the user is registered with Identity Service, null otherwise
true if the identifier (username or wallet address) exists in the reserved usernames list, false otherwise. It doesn't take into account whether the user is registered with Identity Service (userID != null).
Called by clients to get a nonce for a Sign-In with Ethereum message or RPCs requiring challenge-response actions
Used as response type in: IdentityClientService.LogInExistingDevice, IdentityClientService.LogInPasswordUserFinish, IdentityClientService.LogInWalletUser, IdentityClientService.RegisterPasswordUserFinish, IdentityClientService.RegisterWalletUser, IdentityClientService.RestoreUser, IdentityClientService.UploadKeysForRegisteredDeviceAndLogIn
Unique identifier for user
This is wallet address for wallet users
Bundle of information needed for creating an initial message using X3DH
Used in:
, , , , ,Used in:
,iOS doesn't leave a good option for title to camel case renaming
Used as request type in: auth.IdentityClientService.DeleteWalletUser, auth.IdentityClientService.LogOutSecondaryDevice, auth.IdentityClientService.LogOutUser, auth.IdentityClientService.SyncPlatformDetails, auth.IdentityClientService.UnlinkFarcasterAccount, IdentityClientService.GenerateNonce, IdentityClientService.Ping
Used as response type in: auth.IdentityClientService.DeletePasswordUserFinish, auth.IdentityClientService.DeleteWalletUser, auth.IdentityClientService.LinkFarcasterAccount, auth.IdentityClientService.LogOutPrimaryDevice, auth.IdentityClientService.LogOutSecondaryDevice, auth.IdentityClientService.LogOutUser, auth.IdentityClientService.PrivilegedDeleteUsers, auth.IdentityClientService.PrivilegedResetUserPasswordFinish, auth.IdentityClientService.RefreshUserPrekeys, auth.IdentityClientService.SyncPlatformDetails, auth.IdentityClientService.UnlinkFarcasterAccount, auth.IdentityClientService.UpdateDeviceList, auth.IdentityClientService.UpdateUserPasswordFinish, auth.IdentityClientService.UploadOneTimeKeys, IdentityClientService.AddReservedUsernames, IdentityClientService.Ping, IdentityClientService.RemoveReservedUsername
(message has no fields)
Used in:
Key information needed for starting a X3DH session
Used in:
, ,JSON payload containing Olm keys Sessions for users will contain both ContentKeys and NotifKeys For keyservers, this will only contain ContentKeys
Payload signed with the signing ed25519 key
Used in:
, , ,Messages sent from Identity Service to client
Used as response type in: IdentityClientService.RegisterPasswordUserStart, IdentityClientService.RegisterReservedPasswordUserStart
Identifier used to correlate start request with finish request
sent to the user upon reception of the PAKE registration attempt (step 2)
Used as request type in: IdentityClientService.LogInWalletUser, IdentityClientService.RegisterWalletUser
Information specific to a user's device needed to open a new channel of communication with this user
A stringified JSON object of the following format: { "rawDeviceList": JSON.stringify({ "devices": [<primary_device_id: string>] "timestamp": <UTC timestamp in milliseconds: int>, }), "curPrimarySignature": "base64-encoded primary device signature" } It's an empty string when used outside `RegisterWalletUser` RPC and for older clients which don't sign device lists yet.