當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang pkix_path_validation(Cert, CertChain, Options)用法及代碼示例


pkix_path_validation(Cert, CertChain, Options) ->
                        {ok, {PublicKeyInfo, PolicyTree}} |
                        {error,
                         {bad_cert, Reason :: bad_cert_reason()}}
OTP R16B
類型:
Cert = cert() | atom()
CertChain = [cert() | combined_cert()]
Options = 
    [{max_path_length, integer()} |
     {verify_fun, {function(), term()}}]
PublicKeyInfo = public_key_info()
PolicyTree = list()

根據執行基本路徑驗證RFC 5280。然而,CRL 驗證是由pkix_crls_validate/3並從提供的調用verify_fun。目前尚未實現可選的策略樹檢查,但會返回一個空的占位符列表。

可用選項:

{verify_fun, {fun(), InitialUserState::term()}

樂趣必須定義為:

fun(OtpCert :: #'OTPCertificate'{},
    Event :: {bad_cert, Reason :: atom() | {revoked, atom()}} |
             {extension, #'Extension'{}},
    InitialUserState :: term()) ->
	{valid, UserState :: term()} |
	{valid_peer, UserState :: term()} |
	{fail, Reason :: term()} |
	{unknown, UserState :: term()}.

如果 verify 回調函數返回 {fail, Reason} ,則驗證過程立即停止。如果 verify 回調 fun 返回 {valid, UserState} ,則繼續驗證過程。這可用於接受特定路徑驗證錯誤,例如 selfsigned_peer ,以及驗證特定於應用程序的擴展。如果使用用戶應用程序未知的擴展進行調用,則將使用返回值{unknown, UserState}

警告

請注意,用戶定義的自定義 verify_fun 可能會更改原始路徑驗證錯誤(例如 selfsigned_peer )。謹慎使用。

{max_path_length, integer()}
max_path_length 是有效證書路徑中可跟隨對等證書的非自行頒發中間證書的最大數量。所以,如果max_path_length為0,則PEER必須由受信任的ROOT-CA直接簽名,如果為1,則路徑可以是PEER、CA、ROOT-CA,如果為2,則路徑可以是PEER, CA、CA、ROOT-CA 等等。

證書不良原因說明:

cert_expired

證書不再有效,因為其過期日期已過。

invalid_issuer

證書頒發者名稱與鏈中頒發者證書的名稱不匹配。

invalid_signature

證書未由鏈中的頒發者證書簽名。

name_not_permitted

主題備用名稱擴展無效。

missing_basic_constraint

需要具有基本約束擴展的證書沒有基本約束擴展。

invalid_key_usage

根據 key-usage 擴展,證書 key 的使用方式無效。

{revoked, crl_reason()}

證書已被吊銷。

atom()

verify_fun 檢查的特定於應用程序的錯誤原因。

相關用法


注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 pkix_path_validation(Cert, CertChain, Options) -> {ok, {PublicKeyInfo, PolicyTree}} | {error, {bad_cert, Reason :: bad_cert_reason()}}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。