signJson method

Map<String, dynamic> signJson(
  1. Map<String, dynamic> payload
)

Adds a signature to this json from this olm account and returns the signed json.

Implementation

Map<String, dynamic> signJson(Map<String, dynamic> payload) {
  if (!enabled) throw ('Encryption is disabled');
  final Map<String, dynamic>? unsigned = payload['unsigned'];
  final Map<String, dynamic>? signatures = payload['signatures'];
  payload.remove('unsigned');
  payload.remove('signatures');
  final canonical = canonicalJson.encode(payload);
  final signature = _olmAccount!.sign(String.fromCharCodes(canonical));
  if (signatures != null) {
    payload['signatures'] = signatures;
  } else {
    payload['signatures'] = <String, dynamic>{};
  }
  if (!payload['signatures'].containsKey(client.userID)) {
    payload['signatures'][client.userID] = <String, dynamic>{};
  }
  payload['signatures'][client.userID]['ed25519:$ourDeviceId'] = signature;
  if (unsigned != null) {
    payload['unsigned'] = unsigned;
  }
  return payload;
}