fetchNVCN static method

dynamic fetchNVCN(
  1. ScpDevice device
)

Implementation

static fetchNVCN(ScpDevice device) async {
  //plain text = <salt> + ":" + "security-fetch-nvcn" + ":" + <device ID>
  String salt = ScpCrypto().generatePassword();
  String payload = "$salt:security-fetch-nvcn:${device.deviceId}";
  ScpJson scpJson =
      await ScpCrypto().encryptThenEncode(device.knownPassword, payload);

  Uri url = Uri.http(
    '${device.ipAddress}:$PORT',
    '/secure-control',
    {
      'nonce': '${scpJson.encryptedPayload.base64Nonce}',
      'payload': '${scpJson.encryptedPayload.base64Data}',
      'payloadLength': '${scpJson.encryptedPayload.dataLength}',
      'mac': '${scpJson.encryptedPayload.base64Mac}',
    },
  );
  return await http
      .get(url)
      .timeout(const Duration(seconds: NVCN_TIMEOUT))
      .catchError((e) {
    print(e);
  });
}