public BitString GetMacData(INoKeyConfirmationParameters param)
 {
     return(new BitString(
                Encoding.ASCII.GetBytes(STANDARD_MESSAGE)
                )
            .ConcatenateBits(param.Nonce));
 }
示例#2
0
        public INoKeyConfirmation GetInstance(INoKeyConfirmationParameters parameters)
        {
            switch (parameters.KeyAgreementMacType)
            {
            case KeyAgreementMacType.AesCcm:
                return(new NoKeyConfirmationAesCcm(_macDataCreator, parameters, new CcmBlockCipher(new AesEngine(), new ModeBlockCipherFactory(), new AES_CCMInternals())));

            case KeyAgreementMacType.CmacAes:
                return(new NoKeyConfirmationCmac(_macDataCreator, parameters, _cmacFactory.GetCmacInstance(CmacTypes.AES128)));    // doesn't matter as long as aea

            case KeyAgreementMacType.HmacSha1:
            case KeyAgreementMacType.HmacSha2D224:
            case KeyAgreementMacType.HmacSha2D256:
            case KeyAgreementMacType.HmacSha2D384:
            case KeyAgreementMacType.HmacSha2D512:
            case KeyAgreementMacType.HmacSha2D512_T224:
            case KeyAgreementMacType.HmacSha2D512_T256:
            case KeyAgreementMacType.HmacSha3D224:
            case KeyAgreementMacType.HmacSha3D256:
            case KeyAgreementMacType.HmacSha3D384:
            case KeyAgreementMacType.HmacSha3D512:
                ModeValues  modeValue  = ModeValues.SHA2;
                DigestSizes digestSize = DigestSizes.NONE;
                EnumMapping.GetHashFunctionOptions(parameters.KeyAgreementMacType, ref modeValue, ref digestSize);
                return(new NoKeyConfirmationHmac(_macDataCreator, parameters, _hmacFactory.GetHmacInstance(new HashFunction(modeValue, digestSize))));

            default:
                throw new ArgumentException($"{GetType().Name}, {nameof(parameters.KeyAgreementMacType)}");
            }
        }
示例#3
0
 public NoKeyConfirmationHmac(
     INoKeyConfirmationMacDataCreator macDataCreator,
     INoKeyConfirmationParameters noKeyConfirmationParameters,
     IHmac algo)
     : base(macDataCreator, noKeyConfirmationParameters)
 {
     Algo = algo;
 }
示例#4
0
            public BitString GetMacData(INoKeyConfirmationParameters param)
            {
                var result = _noKeyConfirmationMacDataCreator.GetMacData(param);

                result[0] += 2;

                return(result);
            }
        public NoKeyConfirmationAesCcm(INoKeyConfirmationMacDataCreator macDataCreator,
                                       INoKeyConfirmationParameters noKeyConfirmationParameters,
                                       IAeadModeBlockCipher algo)
            : base(macDataCreator, noKeyConfirmationParameters)
        {
            _algo = algo;

            if (BitString.IsZeroLengthOrNull(noKeyConfirmationParameters.CcmNonce))
            {
                throw new ArgumentException(nameof(noKeyConfirmationParameters.CcmNonce));
            }
        }
示例#6
0
        protected NoKeyConfirmationBase(
            INoKeyConfirmationMacDataCreator macDataCreator,
            INoKeyConfirmationParameters noKeyConfirmationParameters)
        {
            _macDataCreator             = macDataCreator;
            NoKeyConfirmationParameters = noKeyConfirmationParameters;

            if (BitString.IsZeroLengthOrNull(NoKeyConfirmationParameters.DerivedKeyingMaterial))
            {
                throw new ArgumentException(nameof(NoKeyConfirmationParameters.DerivedKeyingMaterial));
            }
            if (BitString.IsZeroLengthOrNull(NoKeyConfirmationParameters.Nonce))
            {
                throw new ArgumentException(nameof(NoKeyConfirmationParameters.Nonce));
            }
        }
示例#7
0
        public INoKeyConfirmation GetInstance(INoKeyConfirmationParameters parameters)
        {
            var noKeyConfirmation = _noKeyConfirmationFactory.GetInstance(parameters);

            return(new FakeNoKeyConfirmation_BadMacData(noKeyConfirmation));
        }