模块 OpenSSL::X509::Extension::AuthorityInfoAccess

公共实例方法

ca_issuer_uris() 点击切换源代码

从证书的授权信息访问扩展扩展中获取发行者的信息和服务,如 RFC5280 第 4.2.2.1 节所述。

返回字符串数组或 nil,或引发 ASN1::ASN1Error

# File ext/openssl/lib/openssl/x509.rb, line 162
def ca_issuer_uris
  aia_asn1 = parse_aia_asn1
  return nil if aia_asn1.nil?

  ca_issuer = aia_asn1.value.select do |authority_info_access|
    authority_info_access.value.first.value == "caIssuers"
  end

  ca_issuer&.map(&:value)&.map(&:last)&.map(&:value)
end
ocsp_uris() 点击切换源代码

从证书的授权信息访问扩展扩展中获取 OCSP 的 URI,如 RFC5280 第 4.2.2.1 节所述。

返回字符串数组或 nil,或引发 ASN1::ASN1Error

# File ext/openssl/lib/openssl/x509.rb, line 177
def ocsp_uris
  aia_asn1 = parse_aia_asn1
  return nil if aia_asn1.nil?

  ocsp = aia_asn1.value.select do |authority_info_access|
    authority_info_access.value.first.value == "OCSP"
  end

  ocsp&.map(&:value)&.map(&:last)&.map(&:value)
end

私有实例方法

parse_aia_asn1() 点击切换源代码
# File ext/openssl/lib/openssl/x509.rb, line 190
def parse_aia_asn1
  ext = find_extension("authorityInfoAccess")
  return nil if ext.nil?

  aia_asn1 = ASN1.decode(ext.value_der)
  if ext.critical? || aia_asn1.tag_class != :UNIVERSAL || aia_asn1.tag != ASN1::SEQUENCE
    raise ASN1::ASN1Error, "invalid extension"
  end

  aia_asn1
end