In order for others to know they should start a new session with us, we
need to change our registration id.
To achieve this, I consolidated all the Account related attributes on
TSAccountManager - luckily they were already in the proper collection, I
just moved the API to hang on the AccountManager instead of a TSStorage
category extension.
Also:
@synchronize access to `registrationId`
// FREEBIE
Crypto Scheme:
- Name (un)padding
- WIP AES-GCM (funtioning, but need to verify against android
implementation, and tag functionality)
Changes to avatar API:
- hard code avatar domain (cdn.signal.org)
- avatar form hands out new avatar key, invalidating old avatar
- preliminary aes-gcm integration
Also:
- New type to represent AES128 keys, rather than passing around opaque
data blobs everywhere, we can use the compiler to help us make sure
we're passing compliant keying material.
- Started using factory pattern for API requests. This is intended to be
a lighter weight way to implement new API requests, rather than the
current 1-method class ceremony.
// FREEBIE