setupEncKey method

Future<String> setupEncKey(
  1. String plainEncKey
)

Set up encryption key by creating a directory and a ttl file to store the key

Implementation

Future<String> setupEncKey(String plainEncKey) async {
  String sha224Result =
      sha224.convert(utf8.encode(plainEncKey)).toString().substring(0, 32);
  String sha256Result =
      sha256.convert(utf8.encode(plainEncKey)).toString().substring(0, 32);

  /// Create a directory
  var dirCreateRes = await createItem(false, encKeyFileDir, dirBody);

  /// Create a ttl file to store the key
  String subUrl =
      webId.replaceAll('profile/card#me', '$encKeyFileDir/$encKeyFileName');
  String keyFileBody =
      '<$subUrl> <http://purl.org/dc/terms/title> "Encryption keys";' +
          '\n    <$encKeyPred> "$sha224Result";' +
          '\n    <$encFilePred> "";' +
          '\n    <$ivValPred> "".';
  var fileCreateRes = await createItem(true, encKeyFileName, keyFileBody,
      fileLoc: encKeyFileDir);

  if (fileCreateRes == 'ok' && dirCreateRes == 'ok') {
    /// Set encryption key in the local storage
    setEncKeyStorage(sha256Result);
    return fileCreateRes;
  } else {
    throw Exception('Failed to set up encryption key.');
  }
}