blob: 26f366888a0b4f62d1b820e265f4d13a57511ecd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
//
// System.Security.Cryptography DSA.cs
//
// Author:
// Thomas Neidhart (tome@sbox.tugraz.at)
//
using System;
using System.Text;
namespace System.Security.Cryptography
{
/// <summary>
/// Abstract base class for all implementations of the DSA algorithm
/// </summary>
public abstract class DSA : AsymmetricAlgorithm
{
internal DSA () {}
public static new DSA Create()
{
return new DSACryptoServiceProvider();
}
[MonoTODO]
public static new DSA Create(string algName)
{
// TODO: implement
return null;
}
public abstract byte[] CreateSignature(byte[] rgbHash);
public abstract DSAParameters ExportParameters(bool includePrivateParameters);
[MonoTODO]
public override void FromXmlString(string xmlString)
{
if (xmlString == null)
throw new ArgumentNullException();
// TODO: implement
}
public abstract void ImportParameters(DSAParameters parameters);
public override string ToXmlString(bool includePrivateParameters)
{
DSAParameters dsaParams = ExportParameters(includePrivateParameters);
StringBuilder sb = new StringBuilder();
sb.Append("<DSAKeyValue>");
sb.Append("<P>");
sb.Append(Convert.ToBase64String(dsaParams.P));
sb.Append("</P>");
sb.Append("<Q>");
sb.Append(Convert.ToBase64String(dsaParams.Q));
sb.Append("</Q>");
sb.Append("<G>");
sb.Append(Convert.ToBase64String(dsaParams.G));
sb.Append("</G>");
sb.Append("<Y>");
sb.Append(Convert.ToBase64String(dsaParams.Y));
sb.Append("</Y>");
sb.Append("<J>");
sb.Append(Convert.ToBase64String(dsaParams.J));
sb.Append("</J>");
sb.Append("<Seed>");
sb.Append(Convert.ToBase64String(dsaParams.Seed));
sb.Append("</Seed>");
sb.Append("<PgenCounter>");
string cnt = Convert.ToString(dsaParams.Counter);
byte[] inArr = new ASCIIEncoding().GetBytes(cnt);
sb.Append(Convert.ToBase64String(inArr));
sb.Append("</PgenCounter>");
if (dsaParams.X != null) {
sb.Append("<X>");
sb.Append(Convert.ToBase64String(dsaParams.X));
sb.Append("</X>");
}
sb.Append("</DSAKeyValue>");
return sb.ToString();
}
public abstract bool VerifySignature(byte[] rgbHash, byte[] rgbSignature);
} // DSA
} // System.Security.Cryptography
|