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); }
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)); }
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)); }
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)); }
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)); }
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))); }
public ITlsKdf_v1_3 GetInstance(HashFunctions hashFunction) { var hf = ShaAttributes.GetHashFunctionFromEnum(hashFunction); return(new TlsKdfv13(_hkdfFactory.GetKdf(hf), _shaFactory.GetShaInstance(hf), hf.OutputLen)); }