internal static IAeadCipherBuilder <IParameters <Algorithm> > CreateAeadEncryptorBuilder(DerObjectIdentifier keyEncAlgorithm, byte[] derivedKey, IParameters <Algorithm> parameters) { DerObjectIdentifier encSchemeAlg = keyEncAlgorithm; 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.CreateAeadEncryptorBuilder((FipsAes.AuthenticationParametersWithIV)parameters)); } if (encSchemeAlg.Equals(NistObjectIdentifiers.IdAes128Gcm) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes192Gcm) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes256Gcm)) { return(service.CreateAeadEncryptorBuilder((FipsAes.AuthenticationParametersWithIV)parameters)); } } throw new ArgumentException("cannot match encryption algorithm"); }
internal static ICipherBuilder <IParameters <Algorithm> > CreateDecryptorBuilder(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.IdAes128Cfb) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes192Cfb) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes256Cfb)) { return(service.CreateDecryptorBuilder(parameters)); } if (encSchemeAlg.Equals(NistObjectIdentifiers.IdAes128Ofb) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes192Ofb) || encSchemeAlg.Equals(NistObjectIdentifiers.IdAes256Ofb)) { return(service.CreateDecryptorBuilder(parameters)); } } throw new ArgumentException("cannot match decryption algorithm"); }