Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/duplicati/duplicati.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkenneth.skovhede@gmail.com <kenneth.skovhede@gmail.com@59da171f-624f-0410-aa54-27559c288bec>2010-06-20 01:08:21 +0400
committerkenneth.skovhede@gmail.com <kenneth.skovhede@gmail.com@59da171f-624f-0410-aa54-27559c288bec>2010-06-20 01:08:21 +0400
commita40f6acf378d4ceeae9fcdda1e759160d96a9d37 (patch)
tree01ede0260a9416c16e6678cd6bf9a20cd2373acb /Duplicati/Library/Interface/IEncryption.cs
parent8296404414aefa870971d847f73b091a9c25245f (diff)
A fairly large refactoring of the code.
This was based on the idea that the interfaces should remain static. I hope this change is enough to ensure stable interfaces until release 1.2. Overview of changes: Moved all interfaces into the same dll. Encryption and compression is now plugable modules, just as the backends. Encryption/compression can now register an UI. Encryption now uses AESCrypt as a default. GPG does not default to using the --armor option. Added support for generic modules, but none are written yet. Added support for plugable settings pages in the "Options" dialog. Fixed issue #148. Duplicati now uses AESCrypt as the default encryption format. Fixed issue #199. GPG now supports custom commandline options. Fixed issue #207. Encryption modules are now plugable. Fixed issue #118. S3 credentials are now stored. Fixed issue #151. Backends can now register system wide options. git-svn-id: https://duplicati.googlecode.com/svn/trunk@427 59da171f-624f-0410-aa54-27559c288bec
Diffstat (limited to 'Duplicati/Library/Interface/IEncryption.cs')
-rw-r--r--Duplicati/Library/Interface/IEncryption.cs109
1 files changed, 109 insertions, 0 deletions
diff --git a/Duplicati/Library/Interface/IEncryption.cs b/Duplicati/Library/Interface/IEncryption.cs
new file mode 100644
index 000000000..8786dcce2
--- /dev/null
+++ b/Duplicati/Library/Interface/IEncryption.cs
@@ -0,0 +1,109 @@
+#region Disclaimer / License
+// Copyright (C) 2010, Kenneth Skovhede
+// http://www.hexad.dk, opensource@hexad.dk
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+
+namespace Duplicati.Library.Interface
+{
+ /// <summary>
+ /// Public interface for an encryption method.
+ /// All modules that implements encryption must implement this interface.
+ /// The classes that implements this interface MUST also
+ /// implement a default constructor and a construtor that
+ /// has the signature new(string passphrase, Dictionary&lt;string, string&gt; options).
+ /// The default constructor is used to construct an instance
+ /// so the DisplayName and other values can be read.
+ /// The other constructor is used to do the actual work.
+ /// An instance can be used to encrypt or decrypt multiple files/streams.
+ /// </summary>
+ public interface IEncryption : IDisposable
+ {
+ /// <summary>
+ /// Encrypts the contents of the inputfile, and saves the result as the outputfile.
+ /// </summary>
+ /// <param name="inputfile">The file to encrypt</param>
+ /// <param name="outputfile">The encrypted file</param>
+ void Encrypt(string inputfile, string outputfile);
+
+ /// <summary>
+ /// Encrypts the contents of the input stream, and writes the result to the output stream.
+ /// </summary>
+ /// <param name="input">The stream to encrypt</param>
+ /// <param name="output">The encrypted stream </param>
+ void Encrypt(Stream input, Stream output);
+
+ /// <summary>
+ /// Decrypts the contents of the input file and saves the result as the outputfile
+ /// </summary>
+ /// <param name="inputfile">The file to decrypt</param>
+ /// <param name="outputfile">The decrypted output file</param>
+ void Decrypt(string inputfile, string outputfile);
+
+ /// <summary>
+ /// Dencrypts the contents of the input stream, and writes the result to the output stream.
+ /// </summary>
+ /// <param name="input">The stream to decrypt</param>
+ /// <param name="output">The decrypted stream</param>
+ void Decrypt(Stream input, Stream output);
+
+ /// <summary>
+ /// Decrypts the stream to the output stream
+ /// </summary>
+ /// <param name="input">The encrypted stream</param>
+ /// <returns>The unencrypted stream</returns>
+ Stream Decrypt(Stream input);
+
+ /// <summary>
+ /// Encrypts the stream
+ /// </summary>
+ /// <param name="input">The target stream</param>
+ /// <returns>An encrypted stream that can be written to</returns>
+ Stream Encrypt(Stream input);
+
+ /// <summary>
+ /// The extension that the encryption implementation adds to the filename
+ /// </summary>
+ string FilenameExtension { get; }
+
+ /// <summary>
+ /// A localized string describing the encryption module with a friendly name
+ /// </summary>
+ string DisplayName { get; }
+
+ /// <summary>
+ /// A localized description of the encryption module
+ /// </summary>
+ string Description { get; }
+
+ /// <summary>
+ /// Gets a list of supported commandline arguments
+ /// </summary>
+ IList<ICommandLineArgument> SupportedCommands { get; }
+
+ /// <summary>
+ /// Returns the size in bytes of the overhead that will be added to a file of the given size when encrypted
+ /// </summary>
+ /// <param name="filesize">The size of the file to encrypt</param>
+ /// <returns>The size of the overhead in bytes</returns>
+ long SizeOverhead(long filesize);
+ }
+}