コード例 #1
0
    /// <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);
    }