Class: RASN1::Types::UtcTime
- Defined in:
- lib/rasn1/types/utc_time.rb
Overview
ASN.1 UTCTime
+Base#value of a UtcTime should be a ruby Time.
Unlike GeneralizedTime, a UTCTime serializes only 2 digits for years. Unlike its name, a UTCTime may contain a local time.
Notes
When encoding, resulting string is always a UTC time, appended with Z. Seconds are always generated.
On parsing, UTC times (ending with Z) and local times (ending with sHHMM, where s is +++ or -, and HHMM is the time differential betwen UTC and local time) are both supported. Seconds may be present or not.
Constant Summary collapse
- ID =
UtcTime id value
23
Constants inherited from Primitive
Constants inherited from Base
Base::CLASSES, Base::CLASS_MASK, Base::INDEFINITE_LENGTH, Base::MULTI_OCTETS_ID
Instance Attribute Summary
Attributes inherited from Base
#asn1_class, #default, #name, #options
Class Method Summary collapse
-
.type ⇒ String
Get ASN.1 type.
Instance Method Summary collapse
-
#der_to_value(der, ber: false) ⇒ void
Make time value from
derstring.
Methods inherited from Base
#==, #can_build?, constrained?, #constructed?, #do_parse, #do_parse_explicit, #do_parse_explicit_with_tracing, #do_parse_with_tracing, encoded_type, #explicit?, #id, #implicit?, #initialize, #initialize_copy, #inspect, #optional?, parse, #parse!, #primitive?, #specific_initializer, start_tracing, stop_tracing, #tagged?, #to_der, #trace, #type, #value, #value=, #value?, #value_size, #void_value
Constructor Details
This class inherits a constructor from RASN1::Types::Base
Class Method Details
.type ⇒ String
Get ASN.1 type
35 36 37 |
# File 'lib/rasn1/types/utc_time.rb', line 35 def self.type 'UTCTime' end |
Instance Method Details
#der_to_value(der, ber: false) ⇒ void
This method returns an undefined value.
Make time value from der string
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rasn1/types/utc_time.rb', line 44 def der_to_value(der, ber: false) # rubocop:disable Lint/UnusedMethodArgument format = case der.size when 11, 15 '%Y%m%d%H%M%z' when 13, 17 '%Y%m%d%H%M%S%z' else prefix = @name.nil? ? type : "tag #{@name}" raise ASN1Error, "#{prefix}: unrecognized format: #{der}" end century = (Time.now.year / 100).to_s begin @value = Strptime.new(format).exec(century + der) rescue ArgumentError prefix = @name.nil? ? type : "tag #{@name}" raise ASN1Error, "#{prefix}: unrecognized format: #{der}" end end |