Skip to content

Commit f887d9f

Browse files
authored
Merge pull request #909 from rhenium/ky/asn1-utctime-fix-range
asn1: align UTCTime year range with RFC 5280
2 parents a27a0d0 + b8b38e1 commit f887d9f

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

ext/openssl/ossl_asn1.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ asn1time_to_time(const ASN1_TIME *time)
3636
ossl_raise(rb_eTypeError, "bad UTCTIME format: \"%s\"",
3737
time->data);
3838
}
39-
if (tm.tm_year < 69) {
39+
if (tm.tm_year < 50) {
4040
tm.tm_year += 2000;
4141
} else {
4242
tm.tm_year += 1900;

test/openssl/test_asn1.rb

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -411,13 +411,16 @@ def test_set
411411
def test_utctime
412412
encode_decode_test B(%w{ 17 0D }) + "160908234339Z".b,
413413
OpenSSL::ASN1::UTCTime.new(Time.utc(2016, 9, 8, 23, 43, 39))
414-
begin
415-
# possible range of UTCTime is 1969-2068 currently
416-
encode_decode_test B(%w{ 17 0D }) + "690908234339Z".b,
417-
OpenSSL::ASN1::UTCTime.new(Time.utc(1969, 9, 8, 23, 43, 39))
418-
rescue OpenSSL::ASN1::ASN1Error
419-
pend "No negative time_t support?"
420-
end
414+
415+
# 1950-2049 range is assumed to match RFC 5280's expectation
416+
encode_decode_test B(%w{ 17 0D }) + "490908234339Z".b,
417+
OpenSSL::ASN1::UTCTime.new(Time.utc(2049, 9, 8, 23, 43, 39))
418+
encode_decode_test B(%w{ 17 0D }) + "500908234339Z".b,
419+
OpenSSL::ASN1::UTCTime.new(Time.utc(1950, 9, 8, 23, 43, 39))
420+
assert_raise(OpenSSL::ASN1::ASN1Error) {
421+
OpenSSL::ASN1::UTCTime.new(Time.new(2049, 12, 31, 23, 0, 0, "-04:00")).to_der
422+
}
423+
421424
# not implemented
422425
# decode_test B(%w{ 17 11 }) + "500908234339+0930".b,
423426
# OpenSSL::ASN1::UTCTime.new(Time.new(1950, 9, 8, 23, 43, 39, "+09:30"))

0 commit comments

Comments
 (0)