Exemple #1
0
        protected BitString GetTrailer()
        {
            // 1 bit, "0"
            // 3 bits, part number of ISO/IEC 10118 from HashFunction
            // 4 bits, part number of ISO/IEC 10118 from HashFunction
            var trailer = ShaAttributes.HashFunctionToBits(Sha.HashFunction.DigestSize);

            // 8 bits, "CC"
            trailer = BitString.ConcatenateBits(trailer, Tail);
            return(trailer);
        }
Exemple #2
0
        public KdfResult Kdf(KdfParameterHkdf param, BitString fixedInfo)
        {
            var kdf = _hkdfFactory.GetKdf(ShaAttributes.GetHashFunctionFromEnum(param.HmacAlg));

            var result = kdf.DeriveKey(param.Salt, param.Z, fixedInfo, param.L / BitString.BITSINBYTE);

            if (result.Success)
            {
                return(new KdfResult(result.DerivedKey));
            }

            return(new KdfResult(result.ErrorMessage));
        }
        public HashFunction(ModeValues mode, DigestSizes digestSize)
        {
            Mode       = mode;
            DigestSize = digestSize;

            var attributes = ShaAttributes.GetShaAttributes(mode, digestSize);

            OutputLen     = attributes.outputLen;
            BlockSize     = attributes.blockSize;
            MaxMessageLen = attributes.maxMessageSize;
            ProcessingLen = attributes.processingLen;
            Name          = attributes.name;
        }
        public KdfMultiExpansionResult Kdf(KdfMultiExpansionParameterHkdf param)
        {
            var kdf = _hkdfFactory.GetKdf(ShaAttributes.GetHashFunctionFromEnum(param.HmacAlg));

            List <KdfResult> result = new List <KdfResult>();

            foreach (var iterationParameter in param.IterationParameters)
            {
                result.Add(kdf.DeriveKey(param.Salt, param.Z, iterationParameter.FixedInfo, iterationParameter.L / BitString.BITSINBYTE));
            }

            return(new KdfMultiExpansionResult(result));
        }
Exemple #5
0
        public static int GetMacOutputLength(MacModes macMode)
        {
            switch (macMode)
            {
            case MacModes.CMAC_AES128:
            case MacModes.CMAC_AES192:
            case MacModes.CMAC_AES256:
                return(128);

            case MacModes.CMAC_TDES:
                return(64);

            case MacModes.HMAC_SHA1:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA1, DigestSizes.d160).outputLen);

            case MacModes.HMAC_SHA224:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA2, DigestSizes.d224).outputLen);

            case MacModes.HMAC_SHA256:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA2, DigestSizes.d256).outputLen);

            case MacModes.HMAC_SHA384:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA2, DigestSizes.d384).outputLen);

            case MacModes.HMAC_SHA512:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA2, DigestSizes.d512).outputLen);

            case MacModes.HMAC_SHA_d512t224:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA2, DigestSizes.d512t224).outputLen);

            case MacModes.HMAC_SHA_d512t256:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA2, DigestSizes.d512t256).outputLen);

            case MacModes.HMAC_SHA3_224:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA3, DigestSizes.d224).outputLen);

            case MacModes.HMAC_SHA3_256:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA3, DigestSizes.d256).outputLen);

            case MacModes.HMAC_SHA3_384:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA3, DigestSizes.d384).outputLen);

            case MacModes.HMAC_SHA3_512:
                return(ShaAttributes.GetShaAttributes(ModeValues.SHA3, DigestSizes.d512).outputLen);
            }

            throw new ArgumentException(nameof(macMode));
        }
Exemple #6
0
        public KdfResult Kdf(KdfParameterTls12 param, BitString fixedInfo = null)
        {
            var hashFunction = ShaAttributes.GetHashFunctionFromEnum(param.HashFunction);

            var kdf = _tlsFactory.GetTlsKdfInstance(TlsModes.v12, hashFunction);

            var result = kdf.DeriveKey(
                param.Z,
                param.InitiatorEphemeralData,
                param.ResponderEphemeralData,
                param.AdditionalInitiatorNonce,
                param.AdditionalResponderNonce,
                param.L);

            return(new KdfResult(result.DerivedKey));
        }
Exemple #7
0
        public KdfResult Kdf(KdfParameterIkeV2 param, BitString fixedInfo = null)
        {
            var hashFunction = ShaAttributes.GetHashFunctionFromEnum(param.HashFunction);

            var kdf = _ikeV2Factory.GetInstance(hashFunction);

            var result = kdf.GenerateDkmIke(
                param.InitiatorEphemeralData,
                param.ResponderEphemeralData,
                param.Z,
                param.AdditionalInitiatorNonce,
                param.AdditionalResponderNonce,
                param.L);

            return(new KdfResult(result));
        }
Exemple #8
0
        public KdfResult Kdf(KdfParameterIkeV1 param, BitString fixedInfo = null)
        {
            var hashFunction = ShaAttributes.GetHashFunctionFromEnum(param.HashFunction);

            var kdf = _ikeV1Factory.GetIkeV1Instance(AuthenticationMethods.Dsa, hashFunction);

            var result = kdf.GenerateIke(param.InitiatorEphemeralData, param.ResponderEphemeralData, param.Z,
                                         param.AdditionalInitiatorNonce, param.AdditionalResponderNonce, null);

            var dkm = new BitString(0)
                      .ConcatenateBits(result.SKeyIdD)
                      .ConcatenateBits(result.SKeyIdA)
                      .ConcatenateBits(result.SKeyIdE);

            return(new KdfResult(dkm.GetMostSignificantBits(param.L)));
        }
Exemple #9
0
        public ITlsKdf_v1_3 GetInstance(HashFunctions hashFunction)
        {
            var hf = ShaAttributes.GetHashFunctionFromEnum(hashFunction);

            return(new TlsKdfv13(_hkdfFactory.GetKdf(hf), _shaFactory.GetShaInstance(hf), hf.OutputLen));
        }