Feature #2620

URI scheme for repos based on OTRDATA, bluetooth, local wifi, etc.

Added by hans about 4 years ago. Updated almost 2 years ago.

Status:ClosedStart date:11/21/2013
Priority:HighDue date:
Assignee:-% Done:


Target version:swap repos with Bluetooth and Bonjour


An FDroid repo uses its URL as its unique ID. That URL is linked with a public key for verifying its validity. When OTRDATA and Bluetooth methods are added, Fdroid will need a URL to use as the unique ID for those repos.

See related discussion:

Related issues

Related to Bazaar - Feature #2903: using NFC to setup p2p connections Closed 01/24/2014
Related to Bazaar - Feature #3434: local repos over OTRDATA Closed 06/02/2014


#1 Updated by hans about 4 years ago

  • Priority changed from Normal to High

#2 Updated by hans almost 4 years ago

right now there is special URIs for http:// and https:// connections, here is a potenial full mapping:

  • fdroidrepo:// for http://
  • fdroidrepos:// for https://
  • fdroidrepob:// for Bluetooth RFCOMM
  • fdroidrepoo:// for OTRDATA

Also, I'm in the process of moving the fingerprint from the 'user' portion of the URI to the 'query string' portion of the URI, which makes more sense. Putting the fingerprint in the user portion confused the browser, which tried to log into the page using that as the username. For example:

  • old style fingerprint as user: https://cafebabecafebabecafebabecafebabe@guardianproject.info/fdroid/repo
  • new style in query string: https://guardianproject.info/fdroid/repo?fingerprint=cafebabecafebabecafebabecafebabe

Additionally, other bits of info can be included in the query string, like the wifi SSID and BSSID. This allows a URI to be sent via QR or NFC, then the receiver can check whether it is on the same wifi as the sender, which is necessary for local repos to work.

#3 Updated by n8fr8 almost 4 years ago

With the current rough plan for OTRDATA integration, F-droid will simply be accessing a based HTTP (or possibly HTTPS) repo. In that design, it will not need to know any specific URI.

What we did discuss was support for HTTP auth via http://user:pass@ style format.

#4 Updated by hans almost 4 years ago

The URL format for an RFCOMM StreamConnection :

                   CN |  

The URL format for an RFCOMM StreamConnection :
btspp://hostname:[CN | UUID];parameters

  • hostname is either localhost to set up a server connection, or the Bluetooth address to create a client connection.
  • PSM is the Protocol/Service Multiplexer value, used by a client connecting to a server.
  • CN is the Channel Number value, used by a client connecting to a server.
  • UUID is the Universally Unique Identifier used when setting up a service on a server. Each UUID is guaranteed to be unique across all time and space.

Parameters include name to describe the service name, and the security parameters authenticate, authorize, and encrypt.

Example : Server RFCOMM URL:
btspp://localhost:2D26618601FB47C28D9F10B8EC891363;authenticate=false; encrypt=false;name= rfcommtest

A client RFCOMM URL:

Using localhost as a hostname indicates you want a server connection. To create a client connection to a known device and service, use the service's connection URL, found in its ServiceRecord.

#5 Updated by hans almost 4 years ago

  • Target version changed from 0.2 - ChatSecure/Bluetooth to Integrate Kerplapp into FDroid

#6 Updated by hans over 3 years ago

  • Target version changed from Integrate Kerplapp into FDroid to swap repos with Bluetooth and Bonjour

#7 Updated by hans almost 2 years ago

  • Status changed from New to Closed

Also available in: Atom PDF