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
122
123
124
125
126
127
128
129
130
131
132
|
# coding: ASCII-8BIT
require_relative "helper"
class BuiltinTypesTest < ASN1KitTestCase
def test_boolean
v1 = ASN1Kit::Boolean.new(true)
assert_equal true, v1.value
assert_equal B(%w{ 01 01 FF }), v1.to_der
v2 = ASN1Kit::Boolean.new(false)
assert_equal false, v2.value
assert_equal B(%w{ 01 01 00 }), v2.to_der
end
def test_integer
assert_equal B(%w{ 02 01 00 }), ASN1Kit::Integer.new(0).to_der
assert_equal B(%w{ 02 01 01 }), ASN1Kit::Integer.new(1).to_der
assert_equal B(%w{ 02 02 00 80 }), ASN1Kit::Integer.new(128).to_der
assert_equal B(%w{ 02 02 01 00 }), ASN1Kit::Integer.new(256).to_der
assert_equal B(%w{ 02 03 0F 42 40 }), ASN1Kit::Integer.new(1_000_000).to_der
assert_equal B(%w{ 02 01 FF }), ASN1Kit::Integer.new(-1).to_der
assert_equal B(%w{ 02 01 80 }), ASN1Kit::Integer.new(-128).to_der
assert_equal B(%w{ 02 02 FF 00 }), ASN1Kit::Integer.new(-256).to_der
assert_equal B(%w{ 02 03 F0 BD C0 }), ASN1Kit::Integer.new(-1_000_000).to_der
v1 = ASN1Kit::Integer.new(123)
assert_equal 123, v1.value
assert_equal nil, v1.name
t1 = ASN1Kit::Integer[["a", 123], ["b", 234]]
assert_compare t1, :<, ASN1Kit::Integer
assert_equal ["a", "b"], t1.named_numbers.sort
assert_equal 123, t1.named_number("a")
assert_equal 234, t1.named_number("b")
v2 = t1.new("a")
assert_equal 123, v2.value
assert_equal "a", v2.name
v3 = t1.new(234)
assert_equal 234, v3.value
assert_equal "b", v3.name
end
def test_enumerated
t1 = ASN1Kit::Enumerated["a" => 0, "b" => 1_000_000]
assert_equal ["a", "b"], t1.enumerations.sort
assert_equal 0, t1.value_for("a")
assert_equal 1_000_000, t1.value_for("b")
v1 = t1.new("a")
assert_equal "a", v1.name
assert_equal 0, v1.value
assert_equal B(%w{ 0A 01 00 }), v1.to_der
v2 = t1.new("b")
assert_equal B(%w{ 0A 03 0F 42 40 }), v2.to_der
end
def test_real
end
def test_bitstring
v1 = ASN1Kit::BitString.new("\xC0", 2)
assert_equal "\xC0", v1.string
assert_equal 2, v1.bit_length
assert_equal B(%w{ 03 02 06 C0 }), v1.to_der
v2 = ASN1Kit::BitString.new("\xF0\xFF", 16)
assert_equal "\xF0\xFF", v2.string
assert_equal 16, v2.bit_length
assert_equal B(%w{ 03 03 00 F0 FF }), v2.to_der
t1 = ASN1Kit::BitString[["a", 0], ["b", 3]]
assert_compare t1, :<, ASN1Kit::BitString
v3 = t1.new("\xC0", 8)
assert_equal true, v3.set?("a")
assert_equal true, v3.set?(0)
assert_equal true, v3.set?(1)
assert_equal false, v3.set?(2)
assert_equal false, v3.set?("b")
assert_equal false, v3.set?(3)
assert_equal B(%w{ 03 02 00 C0 }), v3.to_der
v4 = t1.new_with_names("b")
assert_equal 4, v4.bit_length
assert_equal B(%w{ 03 02 04 10 }), v4.to_der
end
def test_octetstring
v1 = ASN1Kit::OctetString.new("abc")
assert_equal "abc", v1.value
assert_equal B(%w{ 04 03 61 62 63 }), v1.to_der
end
def test_null
v1 = ASN1Kit::Null.new
assert_equal B(%w{ 05 00 }), v1.to_der
end
def test_sequence
seq = ASN1Kit::Sequence[
ASN1Kit::Sequence::ComponentType.new("a", ASN1Kit::Integer),
ASN1Kit::Sequence::ComponentType.new("b", ASN1Kit::Boolean),
]
obj = seq.new("a" => ASN1Kit::Integer.new(1),
"b" => ASN1Kit::Boolean.new(true))
assert_equal B(%w{ 30 06 02 01 01 01 01 FF }), obj.to_der
end
def test_object_identifier
v1 = ASN1Kit::ObjectIdentifier.new([2, 999, 3])
assert_equal "2.999.3", v1.dot_notation
assert_equal B(%w{ 06 03 88 37 03 }), v1.to_der
v2 = ASN1Kit::ObjectIdentifier.from_dot_notation("2.999.3")
assert_equal "2.999.3", v2.dot_notation
assert_equal B(%w{ 06 03 88 37 03 }), v2.to_der
end
def test_relative_object_identifier
v1 = ASN1Kit::RelativeOID.new([8571, 3, 2])
assert_equal "8571.3.2", v1.dot_notation
assert_equal B(%w{ 0D 04 C2 7B 03 02 }), v1.to_der
v2 = ASN1Kit::RelativeOID.from_dot_notation("8571.3.2")
assert_equal "8571.3.2", v1.dot_notation
assert_equal B(%w{ 0D 04 C2 7B 03 02 }), v2.to_der
end
end
|