Return the constructed certificate chain during verification
briansmith opened this issue · 1 comments
Some applications need to remember the certificate chain that was constructed during validation. This can be accomplished by having verify_is_valid_tls_server_cert()
, verify_is_valid_tls_client_cert()
, etc., return the constructed certificate chain.
We want certificate validation to be possible even in a heap-less #![no_std]
environment so we cannot return the certificate chain as a Vec
. Instead we need to use a type like ArrayVec
that is guaranteed to never use the heap.
Note that we already maintain what is effectively a linked list in the child_cert
fields, so it's basically just a matter of converting this linked list into an ArrayVec
-like thing.
I would like to work on this, in service of getting subject name, etc., from the certificate. I'm not sure where to start, however. I'm also not familiar with the #![no_std]
environment and what I would need to do to make sure things work in that environment. I would appreciate any guidance you could provide.
Do you mean that verify_cert::build_chain()
needs to return something like arrayvec::ArrayVec<untrusted::Input>
? Would this chain contain the root CA, then each intermediate CA, then the end entity cert? I don't quite understand the way the logic in build_chain()
works.