@@ -232,6 +232,67 @@ def test_enumerated
232
232
encode_decode_test B ( %w{ 0A 09 01 00 00 00 00 00 00 00 00 } ) , OpenSSL ::ASN1 ::Enumerated . new ( 2 ** 64 )
233
233
end
234
234
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
+
235
296
def test_encode_nested_sequence_to_der
236
297
data_sequence = ::OpenSSL ::ASN1 ::Sequence ( [ ::OpenSSL ::ASN1 ::Integer ( 0 ) ] )
237
298
asn1 = ::OpenSSL ::ASN1 ::Sequence ( data_sequence )
@@ -312,67 +373,6 @@ def test_encode_data_integer
312
373
assert_equal OpenSSL ::BN . new ( 90 ) , int . value
313
374
end
314
375
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
-
376
376
def test_instantiate
377
377
# nothing shall raise :
378
378
OpenSSL ::ASN1 ::Null . new ( nil )
0 commit comments