pki.c
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:2k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * pki.c: PKI and certificate handling routines
  3.  *
  4.  */
  5. #include <stdio.h>
  6. #include "gwlib/gwlib.h"
  7.  
  8. #if (HAVE_WTLS_OPENSSL)
  9.  
  10. #include <openssl/rsa.h>
  11. #include <openssl/evp.h>
  12. #include <openssl/objects.h>
  13. #include <openssl/x509.h>
  14. #include <openssl/err.h>
  15. #include <openssl/pem.h>
  16. #include <openssl/ssl.h>
  17. #include "pki.h"
  18. void pki_init(void)
  19. {
  20.         OpenSSL_add_all_algorithms();
  21.         ERR_load_crypto_strings();
  22. }
  23. void pki_shutdown(void)
  24. {
  25.         EVP_cleanup();
  26. }
  27. void get_cert_from_file(Octstr *s, X509 **x509)
  28. {
  29. char *filename;
  30.         /* Check errors!!!! */
  31.         FILE* fp;
  32.         Octstr* foo;
  33.         
  34.         /* Open the file specified by "s" */
  35. filename = octstr_get_cstr(s);
  36.         fp = fopen(filename,"r");
  37.         if (fp == NULL) warning(0,"Can't read certificate %s", filename);
  38.         /* Load up that there certificate */
  39.         *x509 = PEM_read_X509(fp,NULL,NULL,NULL);
  40.         /* Close the file specified by "s" */        
  41.         fclose(fp);
  42.         if (x509 == NULL) {
  43.                 ERR_print_errors_fp (stderr);
  44.         }
  45. }
  46. void get_privkey_from_file(Octstr* s, RSA** priv_key, Octstr* passwd)
  47. {
  48. char *password;
  49. char *filename;
  50.         /* Check errors!!!! */
  51.         FILE* fp;
  52.         Octstr* foo;
  53. filename = octstr_get_cstr(s);
  54. password = passwd != NULL ? octstr_get_cstr(passwd) : NULL;
  55.         
  56. /* Open the file specified by "s" */
  57.         fp = fopen(filename,"r");
  58.         if (fp == NULL) warning(0,"Can't read private key %s", filename);
  59.         
  60.         /* Load up that there certificate */
  61.         *priv_key = PEM_read_RSAPrivateKey(fp,NULL,NULL,password);
  62.         /* Close the file specified by "s" */        
  63.         fclose(fp);
  64.         
  65.         if (priv_key == NULL) { 
  66.                 ERR_print_errors_fp (stderr);
  67.         }
  68. }
  69. void dump_cert(X509* x509)
  70. {
  71.         
  72. }
  73. void dump_privkey(RSA* priv_key)
  74. {
  75. }
  76. #endif