Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Cryptography / RSAPKCS1SignatureDeformatter.cs / 1305376 / RSAPKCS1SignatureDeformatter.cs
using System.Diagnostics.Contracts;
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// [....]
//
//
// RSAPKCS1SignatureDeformatter.cs
//
namespace System.Security.Cryptography {
[System.Runtime.InteropServices.ComVisible(true)]
public class RSAPKCS1SignatureDeformatter : AsymmetricSignatureDeformatter {
//
// This class provides the PKCS#1 v1.5 signature format processing during
// the verification process (i.e. decrypting the object). The class has
// some special code for dealing with the CSP based RSA keys as the
// formatting and verification is done within the CSP rather than in
// managed code.
//
private RSA _rsaKey; // RSA Key value to do decrypt operation
private String _strOID; // OID value for the HASH algorithm
//
// public constructors
//
public RSAPKCS1SignatureDeformatter() {}
public RSAPKCS1SignatureDeformatter(AsymmetricAlgorithm key) {
if (key == null)
throw new ArgumentNullException("key");
Contract.EndContractBlock();
_rsaKey = (RSA) key;
}
//
// public methods
//
public override void SetKey(AsymmetricAlgorithm key) {
if (key == null)
throw new ArgumentNullException("key");
Contract.EndContractBlock();
_rsaKey = (RSA) key;
}
public override void SetHashAlgorithm(String strName) {
_strOID = CryptoConfig.MapNameToOID(strName);
}
[System.Security.SecuritySafeCritical] // auto-generated
public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) {
if (rgbHash == null)
throw new ArgumentNullException("rgbHash");
if (rgbSignature == null)
throw new ArgumentNullException("rgbSignature");
Contract.EndContractBlock();
if (_strOID == null)
throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingOID"));
if (_rsaKey == null)
throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingKey"));
// Two cases here -- if we are talking to the CSP version or if we are talking to some other RSA provider.
if (_rsaKey is RSACryptoServiceProvider) {
return ((RSACryptoServiceProvider) _rsaKey).VerifyHash(rgbHash, _strOID, rgbSignature);
}
else {
byte[] pad = Utils.RsaPkcs1Padding(_rsaKey, CryptoConfig.EncodeOID(_strOID), rgbHash);
// Apply the public key to the signature data to get back the padded buffer actually signed.
// Compare the two buffers to see if they match; ignoring any leading zeros
return Utils.CompareBigIntArrays(_rsaKey.EncryptValue(rgbSignature), pad);
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- String.cs
- HelpInfo.cs
- ipaddressinformationcollection.cs
- BaseAddressElement.cs
- DataGridViewCellLinkedList.cs
- ConvertersCollection.cs
- XslTransformFileEditor.cs
- SynchronizationLockException.cs
- MetadataArtifactLoaderCompositeResource.cs
- Themes.cs
- XsltCompileContext.cs
- thaishape.cs
- DataObjectEventArgs.cs
- ClickablePoint.cs
- HwndProxyElementProvider.cs
- ListItemCollection.cs
- StandardBindingElement.cs
- BindingContext.cs
- TogglePatternIdentifiers.cs
- ConfigurationValidatorBase.cs
- FileUtil.cs
- PixelShader.cs
- CommandHelpers.cs
- ComplexBindingPropertiesAttribute.cs
- __Error.cs
- TableRow.cs
- ToolboxItemFilterAttribute.cs
- ImageSourceConverter.cs
- StreamUpdate.cs
- COM2IPerPropertyBrowsingHandler.cs
- MethodBuilder.cs
- ByteFacetDescriptionElement.cs
- CodeRemoveEventStatement.cs
- DBCommandBuilder.cs
- Point3DCollectionConverter.cs
- AdornerDecorator.cs
- FieldInfo.cs
- FontUnit.cs
- EntityDescriptor.cs
- ModuleBuilder.cs
- SqlServer2KCompatibilityAnnotation.cs
- NTAccount.cs
- ExceptionAggregator.cs
- ActivityExecutorSurrogate.cs
- InvalidOleVariantTypeException.cs
- ReturnEventArgs.cs
- MouseButton.cs
- StylusPointProperties.cs
- ReadOnlyDictionary.cs
- exports.cs
- DbTransaction.cs
- HyperLinkColumn.cs
- DockEditor.cs
- RenderTargetBitmap.cs
- ListDictionaryInternal.cs
- TextTreeUndo.cs
- PlainXmlSerializer.cs
- ConversionContext.cs
- OracleTimeSpan.cs
- ImageConverter.cs
- Soap.cs
- ObjectViewQueryResultData.cs
- WebPartsSection.cs
- OAVariantLib.cs
- _NestedMultipleAsyncResult.cs
- RuleSetDialog.cs
- HostingEnvironmentWrapper.cs
- PKCS1MaskGenerationMethod.cs
- CallSiteBinder.cs
- IntSecurity.cs
- ObjectSecurity.cs
- MsmqIntegrationBinding.cs
- ObjectAnimationBase.cs
- SortedDictionary.cs
- GridViewRowPresenterBase.cs
- SqlCacheDependencySection.cs
- Rect3D.cs
- SelectedGridItemChangedEvent.cs
- XNodeValidator.cs
- SigningProgress.cs
- ScrollChrome.cs
- Configuration.cs
- PeerDuplexChannel.cs
- ColorTranslator.cs
- dataobject.cs
- ExpressionNormalizer.cs
- UserControlAutomationPeer.cs
- PropertyFilterAttribute.cs
- cryptoapiTransform.cs
- Padding.cs
- ModelItemCollection.cs
- TemplateFactory.cs
- StateMachineTimers.cs
- UnaryNode.cs
- WebPartAuthorizationEventArgs.cs
- DisplayClaim.cs
- OleDbCommandBuilder.cs
- EntityKeyElement.cs
- RemoteDebugger.cs
- HttpCachePolicy.cs