Contact Methods Configuration

Class Diagram

diagram

Instantiation

Since the contact methods include the student’s Matrix account at the university’s Matrix server, the student’s username is required to build their Matrix ID which is written in the format @username:uni-jena.de, e.g. @es13nsa:uni-jena.de.

ContactMethods contactMethods = new ContactMethods("es13nsa");
assert contactMethods.getMatrixID().isPresent();
assert contactMethods.getMatrixID().get().equals("@es13nsa:uni-jena.de");

Contact methods

The developers offer the following contact methods:

  • PASSWORD_EMAIL:
    Symmetrically encrypted the response with a password, using Tuta’s quantum-secure encryption for external recipients. Learn more
  • PGP:
    Public-key encryption using OpenPGP
  • TUTA:
    Use the end-to-end encrypted German e-mail provider Tuta.
  • SECURE_EMAIL_PROVIDER:
    Use one of the following end-to-end encrypted e-mail providers:
  • MATRIX:
    Use the university’s Matrix chat server.
  • THREEMA:
    Use the end-to-end encrypted messenger Threema.
  • SIGNAL:
    Use the end-to-end encrypted messenger Signal. (Does not require sharing the phone number anymore.)
  • SIMPLEX:
    Use the end-to-end encrypted, decentralised (but not peer-to-peer) messenger SimpleX.
  • UNENCRYPTED_EMAIL:
    Send a plain-text e-mail from the user’s university e-mail address without any encryption whatsoever.

Settings

Preferred contact method

There are two options to choose from:

  • HTTP_CLIENT:
    A resource-efficient client that does not require a browser but instead makes direct HTTP requests. Especially useful for low-power devices like a Raspberry Pi.
  • HEADLESS_BROWSER:
    A browser like Firefox but without a graphical user interface. Very resource-intensive and should only be used if the hardware is capable of running a headless browser. NOT recommended for use on devices like a Raspberry Pi.
TypeContactMethod
JSON keypreferred-contact-method
DefaultPASSWORD_EMAIL

Symmetric password

The password that shall be used for symmetrically encrypted e-mails.

Typechar[]
JSON keysymmetric-password
Defaultnone
Examplecorrect horse battery staple

OpenPGP public key

The user’s ASCII-armored OpenPGP public key that can be used to encrypt messages to the user.

TypeString
JSON keypgp-public-key
Defaultnone
ExampleSee Codeberg repo

OpenPGP public key URL

A URL pointing to the user’s OpenPGP public key that can be used to encrypt messages to the user.

TypeURL
JSON keypgp-public-key-url
Defaultnone
Examplehttps://keyoxide.org/hkp/EEA31D8870072AD7B29DED62CBDB888D83C64AF3

Tuta address

The e-mail address of the user’s Tuta account.

TypeString
JSON keytuta-address
Defaultnone
Examples
  • edward.snowden@tuta.com
  • chelsea.manning@tuta.io
  • bruce.schneier@tutanota.com
  • mahsa.amini@tutanota.de
  • alexei.navalny@keemail.me

Secure e-mail provider address

An e-mail address of the user at a secure e-mail provider.

TypeString
JSON keysecure-provider-email-address
Defaultnone
Examples
  • edward.snowden@tuta.com
  • chelsea.manning@tuta.io
  • bruce.schneier@tutanota.com
  • mahsa.amini@tutanota.de
  • alexei.navalny@keemail.me
  • laura.poitras@proton.me
  • anna.politkovskaya@protonmail.com
  • kira.yarmysh@mailbox.org
  • mstyslav.chernov@startmail.com
  • joshua.wong@posteo.com
  • whitfield.diffie@posteo.us
  • martin.hellman@posteo.net

Threema ID

The user’s Threema ID that can be used to initiate a conversation with the user.

A Threema ID is a string of 8 alphanumeric characters (case-insensitive). Optionally, it may be in the form of a Threema ID URL, i.e. start with threema.id (possibly with the protocol and/or www.).

TypeString
JSON keythreema-id
RegExp^\s*((https:\/\/)?(www\.)?threema.id\/)?[A-Za-z0-9]{8}\s*$
Defaultnone
ExampleH3BK2FVH

Signal ID

The user’s Signal ID that can be used to initiate a conversation with the user. A Signal ID is a phone number, a Signal URL or a Signal user name.

A Signal URL is a string of 64 alphanumeric characters (case-sensitive) that starts with signal.me/#eu/ (possibly with the protocol and/or www.).

A Signal user name is a string of alphanumeric characters and underscores, followed by a dot and at least two digits, e.g. edward.13.

Type
  • phone number
  • user name: ^[A-Za-z_]+\.\d{2,}$
  • or contact link: ^\s*(((https:\/\/)?(www\.)?signal.me\/#eu\/[A-Za-z0-9]{64})|([A-Za-z]\.\d{2}))\s*$
JSON keysignal-id
Defaultnone
Examples
  • +49 152 2881 2386
  • 0049 152 2881 2386
  • 015228812386
  • edward.13
https://signal.me/#eu/iOiKCM7MZ9xxlA8SqLasWKsayETmvg8PakayRRXHhpL3bzpLVrdGFJingk/6mGV1

SimpleX ID

The user’s SimpleX ID that can be used to initiate a conversation with the user.

A SimpleX ID is a URL that starts with simplex.chat/contact/ (possibly with the protocol and/or www.) and contains an .onion domain.

TypeString
JSON keysimplex-id
RegExp^\s*(https:\/\/)?(www.)?simplex.chat\/contact(\/#)?\/.+\.onion\s*$
Defaultnone
Example
https://simplex.chat/contact/#/?v=1-2&smp=smp%3A%2F%2F0YuTwO05YJWS8rkjn9eLJDjQhFKvIYd8d4xG8X1blIU%3D%40smp8.simplex.im%2FsSCNS1itthj8oKaSzgrKV0xKgrbNPlFG%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAlldSlwhJ1JyafXkpPnD1J65805WkVNemSpzEpYJnoCo%253D%26srv%3Dbeccx4yfxxbvyhqypaavemqurytl6hozr47wfc7uuecacjqdvwpw2xid.onion