Methods
Constants
AttributeType | = | /[a-zA-Z][0-9a-zA-Z]*|[0-9]+(?:\.[0-9]+)*/ |
AttributeValue | = | / (?!["#])((?:#{StringChar}|#{Pair})*)| \#(#{HexString})| "((?:#{QuoteChar}|#{Pair})*)" /x |
HexChar | = | /[0-9a-fA-F]/ |
HexPair | = | /#{HexChar}#{HexChar}/ |
HexString | = | /#{HexPair}+/ |
Pair | = | /\\(?:[#{Special}]|\\|"|#{HexPair})/ |
QuoteChar | = | /[^\\"]/ |
Special | = | ',=+<>#;' |
StringChar | = | /[^\\"#{Special}]/ |
TypeAndValue | = | /\A(#{AttributeType})=#{AttributeValue}/ |
Instance Public methods
expand_hexstring(str) Link
expand_pair(str) Link
# File ruby/ext/openssl/lib/openssl/x509.rb, line 225 def expand_pair(str) return nil unless str return str.gsub(Pair){ pair = $& case pair.size when 2 then pair[1,1] when 3 then Integer("0x#{pair[1,2]}").chr else raise OpenSSL::X509::NameError, "invalid pair: #{str}" end } end
expand_value(str1, str2, str3) Link
scan(dn) Link
# File ruby/ext/openssl/lib/openssl/x509.rb, line 251 def scan(dn) str = dn ary = [] while true if md = TypeAndValue.match(str) remain = md.post_match type = md[1] value, tag = expand_value(md[2], md[3], md[4]) rescue nil if value type_and_value = [type, value] type_and_value.push(tag) if tag ary.unshift(type_and_value) if remain.length > 2 && remain[0] == ?, str = remain[1..-1] next elsif remain.length > 2 && remain[0] == ?+ raise OpenSSL::X509::NameError, "multi-valued RDN is not supported: #{dn}" elsif remain.empty? break end end end msg_dn = dn[0, dn.length - str.length] + " =>" + str raise OpenSSL::X509::NameError, "malformed RDN: #{msg_dn}" end return ary end