/// <summary>
        /// Creates a configuration for key confirmation using an CMAC/OMAC1 construction.
        /// </summary>
        /// <param name="cipherEnum">Block cipher to use as basis of CMAC construction.</param>
        /// <returns>A key confirmation configuration as a <see cref="AuthenticationConfiguration"/>.</returns>
        public static AuthenticationConfiguration GenerateConfiguration(BlockCipher cipherEnum)
        {
            int outputSize;
            var config = AuthenticationConfigurationFactory.CreateAuthenticationConfigurationCmac(cipherEnum, out outputSize);

            return(config);
        }
Esempio n. 2
0
        public static List <PayloadItem> GetItemsBlockExample(List <FileInfo> files)
        {
            var items = new List <PayloadItem> ();

            foreach (var fileInfo in files)
            {
                var t = fileInfo;
                int authOutputSize;
                var payloadItem = new PayloadItem {
                    Path            = t.Name,
                    ExternalLength  = t.Length,
                    Type            = PayloadItemType.File,
                    SymmetricCipher = CipherConfigurationFactory.CreateBlockCipherConfiguration(BlockCipher.Serpent,
                                                                                                BlockCipherMode.Ctr, BlockCipherPadding.None),
                    Authentication = AuthenticationConfigurationFactory.CreateAuthenticationConfiguration(MacFunction.Blake2B256, out authOutputSize)
                };

                payloadItem.SymmetricCipherKey = new byte[payloadItem.SymmetricCipher.KeySizeBits / 8];
                StratCom.EntropySupplier.NextBytes(payloadItem.SymmetricCipherKey);
                payloadItem.AuthenticationKey = new byte[payloadItem.Authentication.KeySizeBits.Value / 8];
                StratCom.EntropySupplier.NextBytes(payloadItem.AuthenticationKey);

                payloadItem.SetStreamBinding(fileInfo.OpenRead);

                items.Add(payloadItem);
            }

            return(items);
        }
        /// <summary>
        /// Creates a configuration for key confirmation using an HMAC construction.
        /// </summary>
        /// <param name="hashFunctionEnum">Hash function to use as basis of HMAC construction.</param>
        /// <returns>A key confirmation configuration as a <see cref="AuthenticationConfiguration"/>.</returns>
        public static AuthenticationConfiguration GenerateConfiguration(HashFunction hashFunctionEnum)
        {
            int outputSize;
            var config = AuthenticationConfigurationFactory.CreateAuthenticationConfigurationHmac(hashFunctionEnum, out outputSize);

            return(config);
        }