当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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