[Mono-list] Cryptographic Classes

Serge serge@wildwestsoftware.com
Sun, 7 Oct 2001 14:52:29 +0300

Hello Thomas,

MS System.Security.Cryptography implementation is rather tightly coupled
with Windows CAPI.
Also note the this namespace is not in the specs for now. In general all
CAPI-related stuff is implementation dependant and Windows-dependant.
So I believe, the main goal is to emulate its external behaviour as much as
possible, but this doesn't necessarily mean emulating implementation
details. Perhaps, minor incompatibilities are inevitable.

You're correct with your assumption regarding CSP registering mechanism and
CAPI wrappers. And, indeed, it is very important to have such plugable
system. Maybe it's worth to consider implementing such API for Mono, that
would allow to plug-in CSPs, but not necessarily CAPI-based CSPs.
Also I think it's okay to provide all default CSPs in all managed code for
maximum portability, most users don't care anyway. And those who care are
advanced enough to take whatever extra steps are needed ;-) (edit some
config files, write some wrapper/adapter code etc.)
In fact, I can see the only real reason why one would want to use CSP other
than default (and unmanaged CSPs in general) - to make use of crypto
hardware accelerators (or CSPs hand-crafted for specific CPUs).

There are other Crypto APIs, see for example Intel's CDSA:
and on SF

BTW, classes to access Windows registry are in Microsoft.Win32 namespace
(Registry, RegistryKey). Note that this is not portable.


----- Original Message -----
From: "Thomas Neidhart" <tome@sbox.tugraz.at>
To: <mono-list@ximian.com>
Sent: Sunday, October 07, 2001 1:19 AM
Subject: [Mono-list] Cryptographic Classes

> Hi,
> i am now working on the System.Security.Cryptography Namespace, and i have
> now realised how Microsoft has organised their Cryptographic Classes:
> For each Algorithm that has been implemented there exists an
> AlgorithmXXXCryptoServiceProvider Class and probably a AlgorithmXXXManaged
> Class (not necessary).
> The CryptoServiceProvider (CSP) Classes are only wrappers to installed
> on the Windows System. So if you want to use another CSP, just install it,
> and register it as the default CSP.
> Now i have some questions:
> Does anybody has already made some thoughts about this topic?
> How do i access unmanaged dll's from within ".net" (with PInvoke)?
> How do i access the windows registry from within ".net" (for default CSP)?
> Are there similar concepts on other OS's (CSP's)?
> Will Mono also support CSP's or will there be a hard-coded CSP (probably
> if OS != Windows)?
> Bye Thomas
> --
> Thomas Neidhart
> Telematics Student at Graz University of Technology, Austria
> Mailto: tome@sbox.tugraz.at
> _______________________________________________
> Mono-list maillist  -  Mono-list@ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list