X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Security.Cryptography%2FDSA.cs;h=b15603f278b4adf3e813865fa9a96f2143c74add;hb=5760f579fb341ebc89adef52db260d78535cb7da;hp=a1d0b4250dd2d6310d1b59ac51b8a4aa7667a306;hpb=7f449e7aff8f374d13db7023c7b326dde01b763d;p=mono.git diff --git a/mcs/class/corlib/System.Security.Cryptography/DSA.cs b/mcs/class/corlib/System.Security.Cryptography/DSA.cs old mode 100755 new mode 100644 index a1d0b4250dd..b15603f278b --- a/mcs/class/corlib/System.Security.Cryptography/DSA.cs +++ b/mcs/class/corlib/System.Security.Cryptography/DSA.cs @@ -6,11 +6,7 @@ // Sebastien Pouliot (sebastien@ximian.com) // // Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com) -// (C) 2004 Novell (http://www.novell.com) -// - -// -// Copyright (C) 2004 Novell, Inc (http://www.novell.com) +// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the @@ -32,8 +28,8 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // -using System; using System.Globalization; +using System.Runtime.InteropServices; using System.Text; using Mono.Xml; @@ -45,15 +41,23 @@ using Mono.Security; namespace System.Security.Cryptography { +#if NET_2_0 + [ComVisible (true)] +#endif public abstract class DSA : AsymmetricAlgorithm { +#if NET_2_0 + // Constructor visibility fixed in Fx 2.0 + protected DSA () +#else // LAMESPEC: It says to derive new DSA implemenation from DSA class. // Well it's aint gonna be easy this way. // RSA constructor is public internal DSA () +#endif { } - + public static new DSA Create () { return Create ("System.Security.Cryptography.DSA"); @@ -144,9 +148,13 @@ namespace System.Security.Cryptography { sb.Append (Convert.ToBase64String (dsaParams.Y)); sb.Append( ""); - sb.Append (""); - sb.Append (Convert.ToBase64String (dsaParams.J)); - sb.Append (""); + if (dsaParams.J != null) { + // if J wasn't imported then it's not exported and neither + // is part of the XML output + sb.Append (""); + sb.Append (Convert.ToBase64String (dsaParams.J)); + sb.Append (""); + } if (dsaParams.Seed != null) { sb.Append (""); @@ -155,13 +163,16 @@ namespace System.Security.Cryptography { sb.Append (""); // the number of bytes is important (no matter == 0x00) - byte[] inArr = BitConverterLE.GetBytes (dsaParams.Counter); - int l = inArr.Length; - while (inArr[l-1] == 0x00) - l--; - byte[] c = new byte [l]; - Buffer.BlockCopy (inArr, 0, c, 0, l); - sb.Append (Convert.ToBase64String (c)); + if (dsaParams.Counter != 0) { + byte[] inArr = BitConverterLE.GetBytes (dsaParams.Counter); + int l = inArr.Length; + while (inArr[l-1] == 0x00) + l--; + + sb.Append (Convert.ToBase64String (inArr, 0, l)); + } else { + sb.Append ("AA=="); // base64 encoded 0 + } sb.Append (""); } @@ -171,8 +182,12 @@ namespace System.Security.Cryptography { sb.Append (""); } else if (includePrivateParameters) { +#if NET_2_0 + throw new ArgumentNullException ("X"); +#else throw new CryptographicException ( Locale.GetText ("Missing private key informations")); +#endif } sb.Append ("");