Example #1
0
        /// <summary>
        /// Create a <see cref="IRestoring"/> instance in according to the command arguments
        /// </summary>
        public IRestoring Create(RestoringSettings settings)
        {
            settings = settings ?? throw new ArgumentNullException("settings");

            // Loads the 3-DES key to decrypt the file from GCS
            Helpers.MandatoryValue("Crypto key", settings.CryptoKey);
            byte[] crypto_key, crypto_iv;

            if (!TripleDES.LoadKeyFile(settings.CryptoKey, out crypto_key, out crypto_iv, _logger))
            {
                throw new SmkException(ErrorResources.TransformFactory_InstanciationFailed);
            }

            switch (settings.Repository)
            {
            case RestoringRepositorySource.GCS:
            {
                Helpers.MandatoryValue("source path", settings.Path);
                Helpers.MandatoryValue("source API key", settings.ApiKey);

                return(new GcsRestore(settings.Path, settings.ApiKey, crypto_key, crypto_iv, _logger));
            }

            case RestoringRepositorySource.S3:
            {
                return(null);
            }

            default:
                throw new SmkException($"Unsupported repository source '{settings.Repository}");
            }
        }
Example #2
0
        /// <summary>
        /// Create a <see cref="ITransforming"/> instance in according to the command arguments
        /// </summary>
        public ITransforming Create(TransformSettings settings)
        {
            settings = settings ?? throw new ArgumentNullException("settings");

            byte[] key, iv;

            // Creates the transformation instance
            switch (settings.Kind)
            {
            case TransformKind.Secure:
            {
                Helpers.MandatoryValue("key filename", settings.TripleDesFilename);

                if (!TripleDES.LoadKeyFile(settings.TripleDesFilename, out key, out iv, _logger))
                {
                    throw new SmkException(ErrorResources.TransformFactory_InstanciationFailed);
                }

                SecureTransform trans = new SecureTransform(key, iv, _logger);
                trans.Logger = _logger;
                return(trans);
            }

            case TransformKind.Unsecure:
            {
                Helpers.MandatoryValue("key filename", settings.TripleDesFilename);

                if (!TripleDES.LoadKeyFile(settings.TripleDesFilename, out key, out iv, _logger))
                {
                    return(null);
                }

                UnsecureTransform dest = new UnsecureTransform(key, iv, _logger);
                dest.Logger = _logger;
                return(dest);
            }

            case TransformKind.None:
            {
                return(null);
            }

            default:
                throw new SmkException($"Unsupported transformation kind '{settings.Kind}");
            }
        }