indiana.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /**
  2. * \file indiana.c
  3. * \brief Exploring random ssl connections, experimening with the cluster.
  4. *
  5. */
  6. #include <stdlib.h>
  7. #include <mpi.h>
  8. #include <openssl/x509.h>
  9. #include <openssl/rsa.h>
  10. #include "qa/qa_sock.h"
  11. #include "qa/questions/questions.h"
  12. extern qa_question_t MetadataQuestion;
  13. #define SITE "site"
  14. int main(int argc, char **argv)
  15. {
  16. int proc, procs;
  17. long i;
  18. char *file = "sites.txt";
  19. FILE *fp;
  20. char site[128];
  21. X509 *crt;
  22. RSA *rsa;
  23. EVP_PKEY *pkey;
  24. QA_library_init();
  25. MPI_Comm_rank(MPI_COMM_WORLD, &proc);
  26. MPI_Comm_size(MPI_COMM_WORLD, &procs);
  27. fp = fopen(file, "r");
  28. if (!fp) return EXIT_FAILURE;
  29. for (i=0; fscanf(fp, "%s", site) == 1; i = (i+1) % procs) {
  30. if (i != proc) continue;
  31. crt = get_remote_cert(site);
  32. if (!crt) {
  33. fprintf(stderr, "NO SSL: '%s'\n", site);
  34. continue;
  35. }
  36. pkey = X509_get_pubkey(crt);
  37. if (!pkey || pkey->type != EVP_PKEY_RSA) {
  38. fprintf(stderr, "NO RSA: %s\n", site);
  39. continue;
  40. }
  41. rsa = pkey->pkey.rsa;
  42. printf("%-10s: %s\n", SITE, site);
  43. run_question(&MetadataQuestion, crt, rsa);
  44. X509_free(crt);
  45. }
  46. // MPI_Barrier(MPI_COMM_WORLD);
  47. MPI_Finalize();
  48. return EXIT_SUCCESS;
  49. }