pkix_path_validation(Cert, CertChain, Options) ->
{ok, {PublicKeyInfo, PolicyTree}} |
{error,
{bad_cert, Reason :: bad_cert_reason()}}
OTP R16BCert = 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 pkix_crls_validate(OTPcertificate, DPandCRLs, Options)用法及代碼示例
- erlang pkix_test_data(ChainConf)用法及代碼示例
- erlang pkix_verify_hostname(Cert, ReferenceIDs)用法及代碼示例
- erlang put用法及代碼示例
- erlang ports用法及代碼示例
- erlang processes用法及代碼示例
- erlang pid_to_list用法及代碼示例
- erlang pid_to_list(Pid)用法及代碼示例
- erlang processes()用法及代碼示例
- erlang put(Key, Val)用法及代碼示例
- erlang print(DataOrStats, Options)用法及代碼示例
- erlang peek(Q :: queue(Item))用法及代碼示例
- erlang peek_r(Q :: queue(Item))用法及代碼示例
- erlang pseudo(Master, ServerList)用法及代碼示例
- erlang perf_counter(Unit)用法及代碼示例
- erlang parse_erl_exprs(Prompt)用法及代碼示例
- erlang put(Key, Value, Map1)用法及代碼示例
- erlang part(Subject, PosLen)用法及代碼示例
- erlang pad(String, Length)用法及代碼示例
- erlang prefix(String :: unicode:chardata(), Prefix :: unicode:chardata())用法及代碼示例
- erlang partition(Pred, List)用法及代碼示例
- erlang partition(SetOfSets)用法及代碼示例
- erlang partition(SetFun, Set)用法及代碼示例
- erlang partition(SetFun, Set1, Set2)用法及代碼示例
- erlang partition_family(SetFun, Set)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 pkix_path_validation(Cert, CertChain, Options) -> {ok, {PublicKeyInfo, PolicyTree}} | {error, {bad_cert, Reason :: bad_cert_reason()}}。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。