blob: b7da0a9b731b88e85f3414315ded9793d8e887f8 (
plain) (
blame)
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
using System;
using NUnit.Framework;
using Org.BouncyCastle.Utilities.Test;
namespace Org.BouncyCastle.Asn1.Tests
{
/// <remarks>Set sorting test example.</remarks>
[TestFixture]
public class SetTest
: SimpleTest
{
public override string Name
{
get { return "Set"; }
}
private void checkSortedSet(
int attempt,
Asn1Set s)
{
if (s[0] is DerBoolean
&& s[1] is DerInteger
&& s[2] is DerBitString
&& s[3] is DerOctetString)
{
return;
}
Fail("sorting failed on attempt: " + attempt);
}
public override void PerformTest()
{
Asn1EncodableVector v = new Asn1EncodableVector();
byte[] data = new byte[10];
v.Add(new DerOctetString(data));
v.Add(new DerBitString(data));
v.Add(new DerInteger(100));
v.Add(DerBoolean.True);
checkSortedSet(0, new DerSet(v));
v = new Asn1EncodableVector();
v.Add(new DerInteger(100));
v.Add(DerBoolean.True);
v.Add(new DerOctetString(data));
v.Add(new DerBitString(data));
checkSortedSet(1, new DerSet(v));
v = new Asn1EncodableVector();
v.Add(DerBoolean.True);
v.Add(new DerOctetString(data));
v.Add(new DerBitString(data));
v.Add(new DerInteger(100));
checkSortedSet(2, new DerSet(v));
v = new Asn1EncodableVector();
v.Add(new DerBitString(data));
v.Add(new DerOctetString(data));
v.Add(new DerInteger(100));
v.Add(DerBoolean.True);
checkSortedSet(3, new DerSet(v));
v = new Asn1EncodableVector();
v.Add(new DerOctetString(data));
v.Add(new DerBitString(data));
v.Add(new DerInteger(100));
v.Add(DerBoolean.True);
Asn1Set s = new BerSet(v);
if (!(s[0] is DerOctetString))
{
Fail("BER set sort order changed.");
}
// create an implicitly tagged "set" without sorting
Asn1TaggedObject tag = new DerTaggedObject(false, 1, new DerSequence(v));
// Encode/decode to get 'tag' as a parsed instance
tag = (Asn1TaggedObject)Asn1Object.FromByteArray(tag.GetEncoded(Asn1Encodable.Der));;
s = Asn1Set.GetInstance(tag, false);
if (s[0] is DerBoolean)
{
Fail("sorted when shouldn't be.");
}
// equality test
v = new Asn1EncodableVector();
v.Add(DerBoolean.True);
v.Add(DerBoolean.True);
v.Add(DerBoolean.True);
s = new DerSet(v);
}
public static void Main(
string[] args)
{
RunTest(new SetTest());
}
[Test]
public void TestFunction()
{
string resultText = Perform().ToString();
Assert.AreEqual(Name + ": Okay", resultText);
}
}
}
|