45 {
46 if (dsaParameters.P == null || dsaParameters.P.Length == 0 || dsaParameters.Q == null || dsaParameters.Q.Length != 20)
47 {
49 }
50 if (dsaParameters.G == null || dsaParameters.G.Length != dsaParameters.P.Length)
51 {
53 }
54 if (dsaParameters.J != null && dsaParameters.J.Length >= dsaParameters.P.Length)
55 {
57 }
58 if (dsaParameters.Y != null && dsaParameters.Y.Length != dsaParameters.P.Length)
59 {
61 }
62 if (dsaParameters.Seed != null && dsaParameters.Seed.Length != 20)
63 {
65 }
66 bool flag = dsaParameters.X != null && dsaParameters.X.Length != 0;
67 if (flag && dsaParameters.X.Length != 20)
68 {
70 }
71 uint
value = (uint)(dsaParameters.P.Length * 8);
72 uint num = ((dsaParameters.J != null) ? ((uint)(dsaParameters.J.Length * 8)) : 0u);
76 if (isV)
77 {
78 binaryWriter.Write(flag ? 877876036 : 861098820);
79 binaryWriter.Write(
value);
80 binaryWriter.Write((uint)(dsaParameters.Q.Length * 8));
81 binaryWriter.Write(num);
82 if (flag)
83 {
84 binaryWriter.Write((uint)(dsaParameters.X.Length * 8));
85 }
87 binaryWriter.WriteReversed(dsaParameters.P);
88 binaryWriter.WriteReversed(dsaParameters.Q);
89 binaryWriter.WriteReversed(dsaParameters.G);
90 if (num != 0)
91 {
92 binaryWriter.WriteReversed(dsaParameters.J);
93 }
94 binaryWriter.WriteReversed(dsaParameters.Y);
95 if (flag)
96 {
97 binaryWriter.WriteReversed(dsaParameters.X);
98 }
99 }
100 else
101 {
102 binaryWriter.Write(flag ? 844321604 : 827544388);
103 binaryWriter.Write(
value);
104 binaryWriter.WriteReversed(dsaParameters.P);
105 binaryWriter.WriteReversed(dsaParameters.Q);
106 binaryWriter.WriteReversed(dsaParameters.G);
107 if (flag)
108 {
109 binaryWriter.WriteReversed(dsaParameters.X);
110 }
111 else
112 {
113 binaryWriter.WriteReversed(dsaParameters.Y);
114 }
116 }
117 binaryWriter.Flush();
118 return memoryStream.ToArray();
119 }
static void WriteKeyBlobHeader(DSAParameters dsaParameters, BinaryWriter bw, bool isPrivate, out bool isV3)
static CryptographicException GetBadDataException()
static void WriteDSSSeed(DSAParameters dsaParameters, BinaryWriter bw)