コード例 #1
0
ファイル: Utilities.cs プロジェクト: NDWX/BouncyCastle.FIPS
        internal static IAeadCipherBuilder <IParameters <Algorithm> > CreateAeadDecryptorBuilder(AlgorithmIdentifier encScheme, byte[] derivedKey, IParameters <Algorithm> parameters)
        {
            DerObjectIdentifier encSchemeAlg = encScheme.Algorithm;

            if (encSchemeAlg.On(NistObjectIdentifiers.Aes))
            {
                IAeadBlockCipherService service = CryptoServicesRegistrar.CreateService(new FipsAes.Key(derivedKey));

                if (encSchemeAlg.Equals(NistObjectIdentifiers.IdAes128Ccm) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes192Ccm) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes256Ccm))
                {
                    return(service.CreateAeadDecryptorBuilder((FipsAes.AuthenticationParametersWithIV)parameters));
                }
                if (encSchemeAlg.Equals(NistObjectIdentifiers.IdAes128Gcm) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes192Gcm) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes256Gcm))
                {
                    return(service.CreateAeadDecryptorBuilder((FipsAes.AuthenticationParametersWithIV)parameters));
                }
            }

            throw new ArgumentException("cannot match decryption algorithm");
        }