File tree Expand file tree Collapse file tree 1 file changed +12
-8
lines changed Expand file tree Collapse file tree 1 file changed +12
-8
lines changed Original file line number Diff line number Diff line change @@ -376,25 +376,26 @@ def der_value
376
376
end
377
377
378
378
class UTCTime < Primitive
379
- FORMAT = "%y%m%d%H%M%SZ" . freeze
380
-
381
379
private
382
380
381
+ YEAR_RANGE = 1950 ..2049
382
+ private_constant :YEAR_RANGE
383
+
383
384
# :nodoc:
384
385
def der_value
385
386
value = if @value . is_a? ( Time )
386
387
@value
387
388
else
388
389
Time . at ( Integer ( @value ) )
389
- end
390
+ end . utc
391
+
392
+ raise OpenSSL ::ASN1 ::ASN1Error unless YEAR_RANGE . include? ( value . year )
390
393
391
- value . utc . strftime ( FORMAT )
394
+ value . strftime ( "%y%m%d%H%M%SZ" )
392
395
end
393
396
end
394
397
395
398
class GeneralizedTime < Primitive
396
- FORMAT = "%Y%m%d%H%M%SZ" . freeze
397
-
398
399
private
399
400
400
401
# :nodoc:
@@ -403,9 +404,12 @@ def der_value
403
404
@value
404
405
else
405
406
Time . at ( Integer ( @value ) )
406
- end
407
+ end . utc
408
+
409
+ # per In X.680 (02/2021) section 46: the year has to be exactly 4 digits for GeneralizedTime.
410
+ raise OpenSSL ::ASN1 ::ASN1Error unless value . year < 10_000
407
411
408
- value . utc . strftime ( FORMAT )
412
+ value . strftime ( "%Y%m%d%H%M%SZ" )
409
413
end
410
414
end
411
415
You can’t perform that action at this time.
0 commit comments