/// <summary> /// Example of a certificate verify function /// </summary> /// <param name="preverify"></param> /// <param name="store">pointer to a WOLFSSL_X509_STORE_CTX</param> /// <returns>size of key set</returns> public static int my_verify_cb(int preverify, IntPtr store) { if (store == IntPtr.Zero) { Console.WriteLine("store is null"); } Console.WriteLine("Status of certificate verify = " + preverify); Console.WriteLine("Error value for cert store is " + wolfssl.X509_STORE_CTX_get_error(store)); /* look at the current cert in store */ try { X509 x509 = wolfssl.X509_STORE_CTX_get_current_cert(store); Console.WriteLine("Issuer : " + x509.Issuer); Console.WriteLine("Subject : " + x509.Subject); Console.WriteLine("PEM of certificate:"); Console.WriteLine(System.Text.Encoding.UTF8.GetString(x509.Export())); Console.WriteLine("DER of certificate:"); Console.WriteLine(BitConverter.ToString(x509.Export(wolfssl.SSL_FILETYPE_ASN1))); Console.WriteLine("Public key:"); Console.WriteLine(BitConverter.ToString(x509.GetPublicKey())); } catch (Exception e) { Console.WriteLine("Unable to get X509's" + e); } /* list all certs in store */ try { int i; X509[] x509 = wolfssl.X509_STORE_CTX_get_certs(store); for (i = 0; i < x509.Length; i++) { Console.WriteLine("CERT[" + i + "]"); Console.WriteLine("Issuer : " + x509[i].Issuer); Console.WriteLine("Subject : " + x509[i].Subject); Console.WriteLine(""); } } catch (Exception e) { Console.WriteLine("Unable to get X509's" + e); } /* by returning 1 here we override any failure and report success */ return(preverify); }