Or, even better:

3) use: Assembly.Load, Activator.CreateInstance & MethodInfo.Invoke

Assuming they're supported, of course.

Piers.

> -----Original Message-----
> From: Paolo Molaro [mailto:[EMAIL PROTECTED]] 
> Sent: Wednesday, October 16, 2002 1:36 AM
> To: 'mono-list'
> Subject: Re: [Mono-list] Crypto Unit tests on linux
> 
> 
> On 10/15/02 Sebastien Pouliot wrote:
> > I found out that I made a cyclic dependency: some classes 
> > (AsymmetricAlgorithm, DSA, RSA) requires XmlDocument. And still the 
> > problem didn't show up until I tried a "make clean" (else it would 
> > just use the one present in System.Xml.Dll). These classes 
> have been 
> > excluded from the build process (probably just because of 
> this) but I 
> > wasn't aware of it. So this is the reason for the class library is 
> > compiling just fine.
> 
> corlib needs to be self-contained: you can't use types from 
> any other assembly in it, so you need to remove the use of 
> XmlDocument from the crypto classes. You have two choices for 
> the substitute code:
> 1) write a small xml parser that handles just the stuff you 
> need in corlib
> 2) (better, IMHO) write an internalcall that uses the GMarkup 
> parser in glib and fills in the RSA and DSA structures.
> 
> To do 2), you need to declare in the runtime header files two 
> structures that match the C# implementation of DSAParameters 
> and RSAParameters.
> 
> typedef struct {
>       MonoArray *P;
>       MonoArray *Q;
>       MonoArray *D;
>       MonoArray *DP;
>       MonoArray *DQ;
>       MonoArray *InverseQ;
>       MonoArray *Modulus;
>       MonoArray *Exponent;
> } MonoRSAParameters;
> 
> Then you write the two internalcalls as:
> 
>       static extern bool GetRSA (string xml, out 
> RSAParameters rsap); and
>       static extern bool GetDSA (string xml, out DSAParameters rsap);
> 
> The C functions will look like:
> 
> MonoBoolean
> CryptoGetRSA (MonoString *xml, MonoRSAParameters *rsap)
> {
>       GMarkupParseContext *context;
>       char *p = mono_string_to_utf8 (xml);
>       
>       context = ...create markup context...;
>       ...parse and set the fields in rsap...
>       g_free (p);
>       if (parse_success)
>               return TRUE;
>       return FALSE;
> }
> 
> mono/docs/internal-calls has some more info on registering 
> the internal call to the runtime.
> 
> lupus
> 
> -- 
> -----------------------------------------------------------------
> [EMAIL PROTECTED]                                     debian/rules
> [EMAIL PROTECTED]                             Monkeys do it better
> 
> _______________________________________________
> Mono-list maillist  -  [EMAIL PROTECTED] 
> http://lists.ximian.com/mailman/listinfo/mono-list
> 

_______________________________________________
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to