Skip to content

Commit 101c47d

Browse files
importing objectid tests from upstream as is
the existing batch wasn't synched; commented the test around registering of nids
1 parent aefce58 commit 101c47d

File tree

1 file changed

+61
-61
lines changed

1 file changed

+61
-61
lines changed

src/test/ruby/test_asn1.rb

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,67 @@ def test_enumerated
232232
encode_decode_test B(%w{ 0A 09 01 00 00 00 00 00 00 00 00 }), OpenSSL::ASN1::Enumerated.new(2 ** 64)
233233
end
234234

235+
def test_object_identifier
236+
encode_decode_test B(%w{ 06 01 00 }), OpenSSL::ASN1::ObjectId.new("0.0".b)
237+
encode_decode_test B(%w{ 06 01 28 }), OpenSSL::ASN1::ObjectId.new("1.0".b)
238+
encode_decode_test B(%w{ 06 03 88 37 03 }), OpenSSL::ASN1::ObjectId.new("2.999.3".b)
239+
encode_decode_test B(%w{ 06 05 2A 22 83 BB 55 }), OpenSSL::ASN1::ObjectId.new("1.2.34.56789".b)
240+
obj = encode_decode_test B(%w{ 06 09 60 86 48 01 65 03 04 02 01 }), OpenSSL::ASN1::ObjectId.new("sha256")
241+
assert_equal "2.16.840.1.101.3.4.2.1", obj.oid
242+
assert_equal "SHA256", obj.sn
243+
assert_equal "sha256", obj.ln
244+
assert_raise(OpenSSL::ASN1::ASN1Error) {
245+
OpenSSL::ASN1.decode(B(%w{ 06 00 }))
246+
}
247+
assert_raise(OpenSSL::ASN1::ASN1Error) {
248+
OpenSSL::ASN1.decode(B(%w{ 06 01 80 }))
249+
}
250+
assert_raise(OpenSSL::ASN1::ASN1Error) { OpenSSL::ASN1::ObjectId.new("3.0".b).to_der }
251+
assert_raise(OpenSSL::ASN1::ASN1Error) { OpenSSL::ASN1::ObjectId.new("0.40".b).to_der }
252+
253+
oid = (0...100).to_a.join(".").b
254+
obj = OpenSSL::ASN1::ObjectId.new(oid)
255+
assert_equal oid, obj.oid
256+
end
257+
258+
def test_object_identifier_equality
259+
aki = [
260+
OpenSSL::ASN1::ObjectId.new("authorityKeyIdentifier"),
261+
OpenSSL::ASN1::ObjectId.new("X509v3 Authority Key Identifier"),
262+
OpenSSL::ASN1::ObjectId.new("2.5.29.35")
263+
]
264+
265+
ski = [
266+
OpenSSL::ASN1::ObjectId.new("subjectKeyIdentifier"),
267+
OpenSSL::ASN1::ObjectId.new("X509v3 Subject Key Identifier"),
268+
OpenSSL::ASN1::ObjectId.new("2.5.29.14")
269+
]
270+
271+
aki.each do |a|
272+
aki.each do |b|
273+
puts "#{a.value} == #{b.value}"
274+
assert_equal true, a == b
275+
end
276+
277+
ski.each do |b|
278+
puts "#{a.value} != #{b.value}"
279+
assert_equal false, a == b
280+
end
281+
end
282+
283+
obj1 = OpenSSL::ASN1::ObjectId.new("1.2.34.56789.10")
284+
obj2 = OpenSSL::ASN1::ObjectId.new("1.2.34.56789.10")
285+
obj3 = OpenSSL::ASN1::ObjectId.new("1.2.34.56789.11")
286+
# TODO: OidToNid and NidToOid logic is done in a bespoke manner in jruby-openssl.
287+
# this should use the BC APIs to translated registered names to OID. They are a bit
288+
# scattered all over though (BCStyle.attrNameToOID, SECNamedCurves.getOID, X509Name hashtables...)
289+
# omit "OID 1.2.34.56789.10 is registered" if obj1.sn
290+
assert_equal true, obj1 == obj2
291+
assert_equal false, obj1 == obj3
292+
293+
assert_equal false, OpenSSL::ASN1::ObjectId.new("authorityKeyIdentifier") == nil
294+
end
295+
235296
def test_encode_nested_sequence_to_der
236297
data_sequence = ::OpenSSL::ASN1::Sequence([::OpenSSL::ASN1::Integer(0)])
237298
asn1 = ::OpenSSL::ASN1::Sequence(data_sequence)
@@ -312,67 +373,6 @@ def test_encode_data_integer
312373
assert_equal OpenSSL::BN.new(90), int.value
313374
end
314375

315-
def test_object_identifier
316-
encode_decode_test B(%w{ 06 01 00 }), OpenSSL::ASN1::ObjectId.new("0.0".b)
317-
encode_decode_test B(%w{ 06 01 28 }), OpenSSL::ASN1::ObjectId.new("1.0".b)
318-
encode_decode_test B(%w{ 06 03 88 37 03 }), OpenSSL::ASN1::ObjectId.new("2.999.3".b)
319-
encode_decode_test B(%w{ 06 05 2A 22 83 BB 55 }), OpenSSL::ASN1::ObjectId.new("1.2.34.56789".b)
320-
obj = encode_decode_test B(%w{ 06 09 60 86 48 01 65 03 04 02 01 }), OpenSSL::ASN1::ObjectId.new("sha256")
321-
assert_equal "2.16.840.1.101.3.4.2.1", obj.oid
322-
assert_equal "SHA256", obj.sn
323-
assert_equal "sha256", obj.ln
324-
# TODO: Import Issue
325-
# Fails with: <OpenSSL::ASN1::ASN1Error> expected but was <RuntimeError(<(TypeError) string not an OID>)
326-
#assert_raise(OpenSSL::ASN1::ASN1Error) {
327-
# OpenSSL::ASN1.decode(B(%w{ 06 00 }))
328-
#}
329-
#assert_raise(OpenSSL::ASN1::ASN1Error) {
330-
# OpenSSL::ASN1.decode(B(%w{ 06 01 80 }))
331-
#}
332-
# <OpenSSL::ASN1::ASN1Error> expected but was <TypeError(<string 3.0 not an OID>)
333-
#assert_raise(OpenSSL::ASN1::ASN1Error) { OpenSSL::ASN1::ObjectId.new("3.0".b).to_der }
334-
# <OpenSSL::ASN1::ASN1Error> exception was expected but none was thrown.
335-
#assert_raise(OpenSSL::ASN1::ASN1Error) { OpenSSL::ASN1::ObjectId.new("0.40".b).to_der }
336-
337-
oid = (0...100).to_a.join(".").b
338-
obj = OpenSSL::ASN1::ObjectId.new(oid)
339-
assert_equal oid, obj.oid
340-
341-
aki = [
342-
OpenSSL::ASN1::ObjectId.new("authorityKeyIdentifier"),
343-
OpenSSL::ASN1::ObjectId.new("X509v3 Authority Key Identifier"),
344-
OpenSSL::ASN1::ObjectId.new("2.5.29.35")
345-
]
346-
347-
ski = [
348-
OpenSSL::ASN1::ObjectId.new("subjectKeyIdentifier"),
349-
OpenSSL::ASN1::ObjectId.new("X509v3 Subject Key Identifier"),
350-
OpenSSL::ASN1::ObjectId.new("2.5.29.14")
351-
]
352-
353-
aki.each do |a|
354-
# TODO: Import Issue
355-
# None of these are equivalent to each other
356-
#aki.each do |b|
357-
# assert a == b
358-
#end
359-
360-
ski.each do |b|
361-
refute a == b
362-
end
363-
end
364-
365-
# TODO: Import Issue
366-
# <TypeError> exception was expected but none was thrown.
367-
#assert_raise(TypeError) {
368-
# OpenSSL::ASN1::ObjectId.new("authorityKeyIdentifier") == nil
369-
#}
370-
371-
oid = OpenSSL::ASN1::ObjectId.new("2.5.29.14")
372-
assert_equal true, oid == OpenSSL::ASN1::ObjectId.new("2.5.29.14")
373-
assert_equal false, oid == OpenSSL::ASN1::ObjectId.new("2.5.29.35")
374-
end
375-
376376
def test_instantiate
377377
# nothing shall raise :
378378
OpenSSL::ASN1::Null.new(nil)

0 commit comments

Comments
 (0)