Cryptography


In the .NET framework cryptography can be found under a number of namespaces in several assemblies. Mono also has it's own assemblies to provide missing security functionalities from the .NET framework.

In addition to the .NET compatible assemblies for cryptography, we are working on an additional stack of functionality, available in the Crimson module.

1 Tools
2 References
3 How to Help

Assembly: mscorlib.dll

Namespace: System.Security.Cryptography

Status


Namespace: System.Security.Cryptography.X509Certificates

Status


Notes

Assembly: System

Namespace: System.Security.Cryptography (new in Fx 2.0)

Status


Namespace: System.Net.Security (new in Fx 2.0)

This new namespace add support for a SslStream class that can be used both for client and server side communication.

Status


Namespace: System.Security.Cryptography.X509Certificates (new in Fx 2.0)

Status


Assembly: System.Security

Namespace: System.Security.Cryptography.Xml

This namespace implements the XML Digital Signature (http://www.w3.org/TR/xmldsig-core/) specification from W3C (http://www.w3.org/). New in Fx 2.0 - This namespace now has support for the XML Encryption (http://www.w3.org/Encryption/2001/) specification.

Status


Namespace: System.Security.Cryptography (new in Fx 2.0)

Status


Namespace: System.Security.Cryptography.Pkcs (new in Fx 2.0)

Status


Namespace: System.Security.Cryptography.X509Certificates (new in Fx 2.0)

Status


Assembly: Mono.Security

Rational: This assembly provides the missing pieces to .NET security. On Windows CryptoAPI is often used to provide much needed functionalities (like some cryptographic algorithms, code signing, X.509 certificates). Mono, for platform independence, implements these functionalities in 100% managed code.

Namespace: Mono.Security

Namespace: Mono.Security.Authenticode

Namespace: Mono.Security.Cryptography

Namespace: Mono.Security.Protocol.*

Namespace: Mono.Security.X509.*


Status

Assembly: Mono.Security.Win32

Rational: This assembly goal is to provide maximum compatibility with CryptoAPI to application running with Mono's runtime on the Windows operating system. This assembly should NEVER be used directly by any application (e.g. referencing the assembly from a project). The classes should only be used by modifying the machine.config configuration file (and then only if this increased compatibility is required by an application). See the file /mcs/class/Mono.Security.Win32/README (http://anonsvn.mono-project.com/viewcvs/trunk/mcs/class/Mono.Security.Win32/README?rev=26873&view=markup) for complete instructions.

Namespace: Mono.Security.Cryptography

Status

TODO

AreaDescriptionDifficultyTime estimateAdditional information
Wrapper classes for unmanaged versions of symmetric encryption algorithms

Wrapper classes for things like DES, TripleDES, RC2 and others present in default CSP.

Medium 2 weeks N/A
Wrapper classes for unmanaged versions of asymmetric algorithms Wrappers for things like DSA and RSA which persist their keypair into the specified CSP. Medium 2 weeks. N/A

Ideas

Tools

There are many tools in the .NET framework that indirectly interacts with some cryptographic classes. Unless noted the tools should work on any CLR (tested with both Mono and Microsoft).

Status

The following tools are complete (or mostly complete):

Somewhat usable, somewhat incomplete:

References

How to Help