aboutsummaryrefslogtreecommitdiffstats
path: root/test/tc_x509crl.rb
blob: e01841d2e541d518371a74d7e62509cf17f040e1 (plain)
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
133
134
135
136
137
#!/usr/bin/env ruby
=begin
= $RCSfile$ -- TestCases for OpenSSL::X509::CRL

= Info
  'OpenSSL for Ruby 2' project
  Copyright (C) 2002  Michal Rokos <m.rokos@sh.cvut.cz>
  All rights reserved.

= Licence
  This program is licenced under the same licence as Ruby.
  (See the file 'LICENCE'.)

= Version
  $Id$
=end

require 'test/unit'
require 'openssl'

include OpenSSL
include X509

##
# OpenSSL::debug = true
#

puts "Creating blank CRL"
$crl = CRL::new()

puts "Generating 1024-bit RSA key"
$rsa = PKey::RSA::generate(1024) {|p, n| # the same as in OpenSSL
  if (p == 0) then putc "." # BN_generate_prime
  elsif (p == 1) then putc "+" # BN_generate_prime
  elsif (p == 2) then putc "*" # searching good prime, n = #of try, but also data from BN_generate_prime
  elsif (p == 3) then putc "\n" # found good prime, n==0 - p, n==1 - q, but also data from BN_generate_prime
  else putc "*" # BN_generate_prime
  end
}

##
# NOTE
# tests are numbered, because we depend on their exec. order
#
class TC_CRL < Test::Unit::TestCase
  def set_up
    ##
    # NONE
    #
  end
  def test_01version
    version = 2
    
    assert_equal(0, $crl.version, "version")
    $crl.version = version
    assert_equal(version, $crl.version, "version =")
  end
  def test_02issuer
    a = [["C", "CZ"], ["O", "OpenSSL for Ruby"], ["OU", "Development"], ["CN", "CA"]]
    
    assert_instance_of(Name, $crl.issuer, "issuer")
    assert_equal("", $crl.issuer.to_s, "issuer")
    $crl.issuer = Name::new(a)
    assert_equal(a, $crl.issuer.to_a, "issuer =")
  end
  def test_03last_update
    t = Time.now
    
    ##
    # NOTE:
    # empty last_update throws "unknown time format"
    # 
    $crl.last_update = t
    assert_equal(t.to_s, $crl.last_update.to_s, "last_update")
  end
  def test_04next_update
    t = Time.now + 24 * 60 * 60
    
    ##
    # NOTE:
    # empty next_update throws "unknown time format"
    # 
    $crl.next_update = t
    assert_equal(t.to_s, $crl.next_update.to_s, "next_update")
  end
  def test_05revoked
    r1 = Revoked.new()
    r1.serial = 1
    r1.time = Time.now
    
    r2 = Revoked.new()
    r2.serial = 2
    r2.time = Time.now
    
    assert_equal([], $crl.revoked, "revoked")
    $crl.revoked = [r1]
    ##
    # TODO, FIXME
    # add X509::Revoked#<=>
    # assert_equal([r1], $crl.revoked, "revoked")
    $crl.add_revoked(r2)
    ##
    # TODO, FIXME
    # add X509::Revoked#<=>
    # assert_equal([r1, r2], $crl.revoked, "revoked")
  end
  def test_06extensions
    ##
    # TODO
    # extensions
    # extensions =
    # extensions
    # add_extension
    # extensions
    # 
  end
  def test_07sign_verify
    $crl.sign($rsa, Digest::MD5::new)
    assert($crl.verify($rsa), "verify")
  end
  def test_08export
    assert_instance_of(String, $crl.to_pem, "to_pem")
    assert_instance_of(String, $crl.to_text, "to_text")
  end
  def test_09load
    txt = $crl.to_text

    crl = CRL::new($crl.to_pem)
    assert_equal(txt, crl.to_text, "new instance from PEM")
  end
  def tear_down
    ##
    # NONE
    # 
  end
end