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
|
using System;
using NUnit.Framework;
using Org.BouncyCastle.Asn1.X500;
using Org.BouncyCastle.Asn1.X509.SigI;
namespace Org.BouncyCastle.Asn1.Tests
{
[TestFixture]
public class NameOrPseudonymUnitTest
: Asn1UnitTest
{
public override string Name
{
get { return "NameOrPseudonym"; }
}
public override void PerformTest()
{
string pseudonym = "pseudonym";
DirectoryString surname = new DirectoryString("surname");
Asn1Sequence givenName = new DerSequence(new DirectoryString("givenName"));
NameOrPseudonym id = new NameOrPseudonym(pseudonym);
checkConstruction(id, pseudonym, null, null);
id = new NameOrPseudonym(surname, givenName);
checkConstruction(id, null, surname, givenName);
id = NameOrPseudonym.GetInstance(null);
if (id != null)
{
Fail("null GetInstance() failed.");
}
try
{
NameOrPseudonym.GetInstance(new Object());
Fail("GetInstance() failed to detect bad object.");
}
catch (ArgumentException)
{
// expected
}
}
private void checkConstruction(
NameOrPseudonym id,
string pseudonym,
DirectoryString surname,
Asn1Sequence givenName)
{
checkValues(id, pseudonym, surname, givenName);
id = NameOrPseudonym.GetInstance(id);
checkValues(id, pseudonym, surname, givenName);
Asn1InputStream aIn = new Asn1InputStream(id.ToAsn1Object().GetEncoded());
if (surname != null)
{
Asn1Sequence seq = (Asn1Sequence) aIn.ReadObject();
id = NameOrPseudonym.GetInstance(seq);
}
else
{
IAsn1String s = (IAsn1String) aIn.ReadObject();
id = NameOrPseudonym.GetInstance(s);
}
checkValues(id, pseudonym, surname, givenName);
}
private void checkValues(
NameOrPseudonym id,
string pseudonym,
DirectoryString surname,
Asn1Sequence givenName)
{
if (surname != null)
{
checkMandatoryField("surname", surname, id.Surname);
checkMandatoryField("givenName", givenName, new DerSequence(id.GetGivenName()[0]));
}
else
{
checkOptionalField("pseudonym", new DirectoryString(pseudonym), id.Pseudonym);
}
}
public static void Main(
string[] args)
{
RunTest(new NameOrPseudonymUnitTest());
}
[Test]
public void TestFunction()
{
string resultText = Perform().ToString();
Assert.AreEqual(Name + ": Okay", resultText);
}
}
}
|