module RASN1
Rasn1 is a pure ruby library to parse, decode and encode ASN.1 data. @author Sylvain Daubert
Constants
- VERSION
Public Class Methods
parse(der, ber: false)
click to toggle source
Parse a DER/BER string without checking a model @note If you want to check ASN.1 grammary, you should define a {Model}
and use {Model#parse}.
@note This method will never decode SEQUENCE OF or SET OF objects, as these
ones use the same encoding as SEQUENCE and SET, respectively.
@note Real type of tagged value cannot be guessed. So, such tag will
generate {Types::Base} objects.
@param [String] der binary string to parse @param [Boolean] ber if true
, decode a BER string, else a DER one @return [Types::Base]
# File lib/rasn1.rb, line 44 def self.parse(der, ber: false) root = nil until der.empty? type = Types.id2type(der) type.parse!(der, ber: ber) root = type if root.nil? if [Types::Sequence, Types::Set].include? type.class subder = type.value ary = [] until subder.empty? ary << self.parse(subder) subder = subder[ary.last.to_der.size..-1] end type.value = ary end der = der[type.to_der.size..-1] end root end