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()}}。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。