21.03.2013 Views

Problem - Kevin Tafuro

Problem - Kevin Tafuro

Problem - Kevin Tafuro

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

#include <br />

#include <br />

#include <br />

#include <br />

#include <br />

char *spc_cert_filename(char *path, X509 *cert) {<br />

int length;<br />

char *filename;<br />

length = strlen(path) + 11;<br />

if (!(filename = (char *)malloc(length + 1))) return 0;<br />

snprintf(filename, length + 1, "%s/%08lx.0", path, X509_subject_name_hash(cert));<br />

return filename;<br />

}<br />

int spc_remember_cert(char *path, X509 *cert) {<br />

int result;<br />

char *filename;<br />

FILE *fp;<br />

if (!(filename = spc_cert_filename(path, cert))) return 0;<br />

if (!(fp = fopen(filename, "w"))) {<br />

free(filename);<br />

return 0;<br />

}<br />

result = PEM_write_X509(fp, cert);<br />

fclose(fp);<br />

if (!result) remove(filename);<br />

free(filename);<br />

return result;<br />

}<br />

int spc_verifyandmaybesave_callback(int ok, X509_STORE_CTX *store) {<br />

int err;<br />

SSL *ssl_ptr;<br />

char answer[80], name[256];<br />

X509 *cert;<br />

SSL_CTX *ctx;<br />

spc_x509store_t *spc_store;<br />

if (ok) return ok;<br />

cert = X509_STORE_CTX_get_current_cert(store);<br />

printf("An error has occurred with the following certificate:\n");<br />

X509_NAME_oneline(X509_get_issuer_name(cert), name, sizeof(name));<br />

printf(" Issuer Name: %s\n", name);<br />

X509_NAME_oneline(X509_get_subject_name(cert), name, sizeof(name));<br />

printf(" Subject Name: %s\n", name);<br />

err = X509_STORE_CTX_get_error(store);<br />

printf(" Error Reason: %s\n", X509_verify_cert_error_string(err));<br />

for (;;) {<br />

printf("Do you want to [r]eject this certificate, [a]ccept and remember it, "<br />

"or allow\nits use for only this [o]ne time? ");<br />

440 | Chapter 8: Authentication and Key Exchange<br />

This is the Title of the Book, eMatter Edition<br />

Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!