| | the user is expected to supply a list of base64-encoded SHA2-256 hashes, H1 through Hn.
this should take place after cert (chain) verification against a system/user-specified CA store. if the verification fail, TLS aborts. if it succeed, we have cert chain C1 through Cn.
if no match is found after matching each Hj against base64(sha256(TBS(Ci)))'s and base64(sha256(SPKI(Ci)))'s, i ranging from 1 to n, TLS aborts. otherwise, TLS moves on as usual.
this is similar to what dnscrypt-proxy does -- though it pins only on TBS. pinning instead on SPKI, however, would allow pinning on a cross-signed version of the same certificate. I prefer SPKI.
this is not the same as specifying a CA store. while a user-specified CA store also helps, it cannot beat the simplicity that is a uniform list of SHA2-256 hashes. |
|