/// <summary> /// Encrypt a Business Object /// </summary> /// <param name="plainObject">unencrypted Business Object</param> /// <param name="associatedDataString">max. 16 character long string (not secret)</param> /// <returns>an encrypted Business Object</returns> public EncryptedObjectAEAD Encrypt(BusinessObject plainObject, string associatedDataString) { var plainText = JsonConvert.SerializeObject(plainObject, encryptionSerializerSettings); var nonce = SecretAeadChaCha20Poly1305.GenerateNonce(); var cipherString = Encrypt(plainText, associatedDataString, nonce); return(new EncryptedObjectAEAD(cipherString, associatedDataString, Convert.ToBase64String(nonce))); }
/// <summary> /// Encrypt a given plain text and add associated data. /// </summary> /// <param name="plainText">UTF-8 encoded string containing the plain text to be encrypted</param> /// <param name="associatedDataString">max. 16 character long string (not secret)</param> /// <returns>Tuple of (cipherText, nonce); both as base64 encoded string</returns> public (string, string) Encrypt(string plainText, string associatedDataString) { byte[] nonce = SecretAeadChaCha20Poly1305.GenerateNonce(); return(Encrypt(plainText, associatedDataString, nonce), Convert.ToBase64String(nonce)); }