Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Cryptography / RSAPKCS1SignatureDeformatter.cs / 1 / RSAPKCS1SignatureDeformatter.cs
// ==++==
//
// 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");
_rsaKey = (RSA) key;
}
//
// public methods
//
public override void SetKey(AsymmetricAlgorithm key) {
if (key == null)
throw new ArgumentNullException("key");
_rsaKey = (RSA) key;
}
public override void SetHashAlgorithm(String strName) {
_strOID = CryptoConfig.MapNameToOID(strName);
}
public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) {
if (_strOID == null)
throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingOID"));
if (_rsaKey == null)
throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingKey"));
if (rgbHash == null)
throw new ArgumentNullException("rgbHash");
if (rgbSignature == null)
throw new ArgumentNullException("rgbSignature");
// 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);
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Paragraph.cs
- NameValueConfigurationCollection.cs
- CodeDomConfigurationHandler.cs
- SettingsSection.cs
- SlotInfo.cs
- SaveFileDialog.cs
- DataViewManager.cs
- DataGridRow.cs
- TdsEnums.cs
- WindowsButton.cs
- DataTableTypeConverter.cs
- ScrollChangedEventArgs.cs
- ILGenerator.cs
- UnknownBitmapEncoder.cs
- SupportingTokenParameters.cs
- ObservableDictionary.cs
- DocumentPage.cs
- OdbcStatementHandle.cs
- ByteStack.cs
- ExceptionUtility.cs
- FileDialogPermission.cs
- WebBrowserDocumentCompletedEventHandler.cs
- LiteralControl.cs
- MessageDescription.cs
- ReadOnlyPermissionSet.cs
- CodeTypeConstructor.cs
- TableRowGroup.cs
- ServiceElementCollection.cs
- DayRenderEvent.cs
- CompositeCollectionView.cs
- RootBuilder.cs
- CollectionViewProxy.cs
- DataSourceCollectionBase.cs
- dbenumerator.cs
- OleDbErrorCollection.cs
- TimeIntervalCollection.cs
- GrabHandleGlyph.cs
- DataFormats.cs
- IteratorDescriptor.cs
- FunctionUpdateCommand.cs
- DataGridViewRowCancelEventArgs.cs
- TimeSpanSecondsConverter.cs
- QueryCacheKey.cs
- StorageConditionPropertyMapping.cs
- WebBrowserSiteBase.cs
- DomainUpDown.cs
- LeafCellTreeNode.cs
- CustomAttributeFormatException.cs
- CookieProtection.cs
- BitmapSourceSafeMILHandle.cs
- OracleCommandBuilder.cs
- CodeDomDecompiler.cs
- DynamicVirtualDiscoSearcher.cs
- InitializerFacet.cs
- PluggableProtocol.cs
- TypeSystemProvider.cs
- ContentPlaceHolder.cs
- WinOEToolBoxItem.cs
- StrokeNodeOperations2.cs
- Number.cs
- RelOps.cs
- MethodToken.cs
- XmlSchemaSimpleType.cs
- DesignerCatalogPartChrome.cs
- JsonStringDataContract.cs
- FrameworkTemplate.cs
- AssociationSet.cs
- Matrix3D.cs
- CodeNamespaceImportCollection.cs
- MenuBase.cs
- AudioLevelUpdatedEventArgs.cs
- TextRunTypographyProperties.cs
- FormsAuthenticationTicket.cs
- EffectiveValueEntry.cs
- SelectionChangedEventArgs.cs
- CollectionBase.cs
- SourceFilter.cs
- FileClassifier.cs
- LinqDataSourceContextEventArgs.cs
- RewritingSimplifier.cs
- ReaderWriterLock.cs
- RenderingBiasValidation.cs
- ServiceHost.cs
- FontEmbeddingManager.cs
- DbConnectionOptions.cs
- DeviceContexts.cs
- FlowDocumentFormatter.cs
- Point3DAnimationUsingKeyFrames.cs
- SelectionGlyph.cs
- ProviderMetadata.cs
- AuthenticationService.cs
- WindowCollection.cs
- ViewStateModeByIdAttribute.cs
- StackSpiller.cs
- TypeGeneratedEventArgs.cs
- ComponentResourceKey.cs
- EncryptedData.cs
- DocumentXmlWriter.cs
- HotSpot.cs
- ReceiveActivityDesigner.cs