public RsaKeyWrapper(RsaJwk key, EncryptionAlgorithm encryptionAlgorithm, KeyManagementAlgorithm algorithm) : base(encryptionAlgorithm, algorithm) { Debug.Assert(key.SupportKeyManagement(algorithm)); Debug.Assert(algorithm.Category == AlgorithmCategory.Rsa); _key = key; #if SUPPORT_SPAN_CRYPTO _rsa = RSA.Create(key.ExportParameters()); #else #if NET461 || NET47 _rsa = new RSACng(); #else _rsa = RSA.Create(); #endif _rsa.ImportParameters(key.ExportParameters()); #endif _padding = algorithm.Id switch { AlgorithmId.RsaOaep => RSAEncryptionPadding.OaepSHA1, AlgorithmId.Rsa1_5 => RSAEncryptionPadding.Pkcs1, AlgorithmId.RsaOaep256 => RSAEncryptionPadding.OaepSHA256, AlgorithmId.RsaOaep384 => RSAEncryptionPadding.OaepSHA384, AlgorithmId.RsaOaep512 => RSAEncryptionPadding.OaepSHA512, _ => throw ThrowHelper.CreateNotSupportedException_AlgorithmForKeyWrap(algorithm) }; }
public RsaKeyUnwrapper(RsaJwk key, EncryptionAlgorithm encryptionAlgorithm, KeyManagementAlgorithm algorithm) : base(encryptionAlgorithm, algorithm) { Debug.Assert(key.SupportKeyManagement(algorithm)); Debug.Assert(algorithm.Category == AlgorithmCategory.Rsa); #if SUPPORT_SPAN_CRYPTO _rsa = RSA.Create(key.ExportParameters()); #else #if NET461 || NET47 _rsa = new RSACng(); #else _rsa = RSA.Create(); #endif _rsa.ImportParameters(key.ExportParameters()); #endif _padding = RsaHelper.GetEncryptionPadding(algorithm.Id); }
public RsaKeyUnwrapper(RsaJwk key, EncryptionAlgorithm encryptionAlgorithm, KeyManagementAlgorithm contentEncryptionAlgorithm) : base(key, encryptionAlgorithm, contentEncryptionAlgorithm) { #if SUPPORT_SPAN_CRYPTO _rsa = RSA.Create(key.ExportParameters()); #else _rsa = RSA.Create(); _rsa.ImportParameters(key.ExportParameters()); #endif if (contentEncryptionAlgorithm == KeyManagementAlgorithm.RsaOaep) { _padding = RSAEncryptionPadding.OaepSHA1; } else if (contentEncryptionAlgorithm == KeyManagementAlgorithm.RsaPkcs1) { _padding = RSAEncryptionPadding.Pkcs1; } else if (contentEncryptionAlgorithm == KeyManagementAlgorithm.RsaOaep256) { _padding = RSAEncryptionPadding.OaepSHA256; } else if (contentEncryptionAlgorithm == KeyManagementAlgorithm.RsaOaep384) { _padding = RSAEncryptionPadding.OaepSHA384; } else if (contentEncryptionAlgorithm == KeyManagementAlgorithm.RsaOaep512) { _padding = RSAEncryptionPadding.OaepSHA512; } else { ThrowHelper.ThrowNotSupportedException_AlgorithmForKeyWrap(contentEncryptionAlgorithm); _padding = RSAEncryptionPadding.CreateOaep(new HashAlgorithmName()); // will never occur } }
public RsaSignatureVerifier(RsaJwk key, SignatureAlgorithm algorithm) : base(algorithm) { Debug.Assert(key != null); Debug.Assert(key.SupportSignature(algorithm)); if (key.KeySizeInBits < 1024) { ThrowHelper.ThrowArgumentOutOfRangeException_SigningKeyTooSmall(key, 1024); } _hashAlgorithm = algorithm.HashAlgorithm; _sha = algorithm.Sha; _signaturePadding = RsaHelper.GetPadding(algorithm); _hashSizeInBytes = key.KeySizeInBits >> 3; _base64HashSizeInBytes = Base64Url.GetArraySizeRequiredToEncode(_hashSizeInBytes); _rsaPool = new ObjectPool <RSA>(new RsaObjectPoolPolicy(key.ExportParameters())); }