As an example, a connection to mail.google.com receives a chain with 3 certificates:
(1) server cert from the google server (www.google.com) This is signed from
(2) Thawte SGC CA, which is signed from
(3) Verisign PCA3 G1 SHA1 (root ca)
The last cert (Verisign) is loaded with CyaSSL_CTX_load_verify_buffer(). It is not possible (on my evaluation environment) with cyassl to verify this chain. Google uses a very common cert handling, cyassl should support at least such a chain, too. Means, cyassl should check the root ca against the cert in the local ca list, verify and accept the thawte cert with the verisign cert, finally verify and accept the google cert with the thawte cert.
In DoCertificate(), the certs are decoded and checked in received order (first google, thawte, last verisign). Check on google fails (thawte not yet accepted), therefore, verification also fails. I had a look to 1.8.0, cannot find a better solution there.
Regards,
Frank