• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeio/kssl
 

tdeio/kssl

  • tdeio
  • kssl
kopenssl.h
1 /* This file is part of the KDE libraries
2  Copyright (C) 2001-2003 George Staikos <staikos@kde.org>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License version 2 as published by the Free Software Foundation.
7 
8  This library is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  Library General Public License for more details.
12 
13  You should have received a copy of the GNU Library General Public License
14  along with this library; see the file COPYING.LIB. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 */
18 
19 
20 // IF YOU ARE USING THIS CLASS, YOU ARE MAKING A MISTAKE.
21 
22 #ifndef __KOPENSSLPROXY_H
23 #define __KOPENSSLPROXY_H
24 
25 #define KOSSL KOpenSSLProxy
26 class KOpenSSLProxyPrivate;
27 
28 #include <klibloader.h>
29 
30 #ifdef TQ_WS_WIN
31 #include "ksslconfig_win.h"
32 #else
33 #include "ksslconfig.h"
34 #endif
35 
36 #ifdef KSSL_HAVE_SSL
37 #define crypt _openssl_crypt
38 #include <openssl/ssl.h>
39 #include <openssl/x509.h>
40 #include <openssl/x509v3.h>
41 #include <openssl/pem.h>
42 #include <openssl/bio.h>
43 #include <openssl/rand.h>
44 #include <openssl/asn1.h>
45 #include <openssl/pkcs7.h>
46 #include <openssl/pkcs12.h>
47 #include <openssl/evp.h>
48 #include <openssl/stack.h>
49 #include <openssl/bn.h>
50 #undef crypt
51 
52 #if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
53 #define STACK OPENSSL_STACK
54 #else
55 #if OPENSSL_VERSION_NUMBER >= 0x10000000L
56 #define STACK _STACK
57 #endif
58 #endif
59 #endif
60 
61 #include <kstaticdeleter.h>
62 
63 #if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
64 typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *);
65 typedef int X509_LOOKUP_TYPE;
66 #endif
67 
76 class TDEIO_EXPORT KOpenSSLProxy {
77 friend class KStaticDeleter<KOpenSSLProxy>;
78 public:
79 
84  static KOpenSSLProxy *self();
85 
89  bool hasLibCrypto() const;
90 
94  bool hasLibSSL() const;
95 
100  void destroy();
101 
102  // Here are the symbols that we need.
103 #ifdef KSSL_HAVE_SSL
104 
105  /*
106  * SSL_connect - initiate the TLS/SSL handshake with an TLS/SSL server
107  */
108  int SSL_connect(SSL *ssl);
109 
110  /*
111  * SSL_accept - initiate the TLS/SSL handshake with an TLS/SSL server
112  */
113  int SSL_accept(SSL *ssl);
114 
115  /*
116  * SSL_get_error - get the error code
117  */
118  int SSL_get_error(SSL *ssl, int rc);
119 
120  /*
121  * SSL_read - read bytes from a TLS/SSL connection.
122  */
123  int SSL_read(SSL *ssl, void *buf, int num);
124 
125  /*
126  * SSL_write - write bytes to a TLS/SSL connection.
127  */
128  int SSL_write(SSL *ssl, const void *buf, int num);
129 
130  /*
131  * SSL_new - create a new SSL structure for a connection
132  */
133  SSL *SSL_new(SSL_CTX *ctx);
134 
135  /*
136  * SSL_free - free an allocated SSL structure
137  */
138  void SSL_free(SSL *ssl);
139 
140  /*
141  * SSL_shutdown - shutdown an allocated SSL connection
142  */
143  int SSL_shutdown(SSL *ssl);
144 
145  /*
146  * SSL_CTX_new - create a new SSL_CTX object as framework for TLS/SSL enabled functions
147  */
148  SSL_CTX *SSL_CTX_new(SSL_METHOD *method);
149 
150  /*
151  * SSL_CTX_free - free an allocated SSL_CTX object
152  */
153  void SSL_CTX_free(SSL_CTX *ctx);
154 
155  /*
156  * SSL_set_fd - connect the SSL object with a file descriptor
157  */
158  int SSL_set_fd(SSL *ssl, int fd);
159 
160  /*
161  * SSL_pending - obtain number of readable bytes buffered in an SSL object
162  */
163  int SSL_pending(SSL *ssl);
164 
165  /*
166  * SSL_peek - obtain bytes buffered in an SSL object
167  */
168  int SSL_peek(SSL *ssl, void *buf, int num);
169 
170  /*
171  * SSL_CTX_set_cipher_list - choose list of available SSL_CIPHERs
172  */
173  int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str);
174 
175  /*
176  * SSL_CTX_set_verify - set peer certificate verification parameters
177  */
178  void SSL_CTX_set_verify(SSL_CTX *ctx, int mode,
179  int (*verify_callback)(int, X509_STORE_CTX *));
180 
181  /*
182  * SSL_use_certificate - load certificate
183  */
184  int SSL_use_certificate(SSL *ssl, X509 *x);
185 
186  /*
187  * SSL_get_current_cipher - get SSL_CIPHER of a connection
188  */
189  SSL_CIPHER *SSL_get_current_cipher(SSL *ssl);
190 
191  /* SSL_set_options - manipulate SSL engine options */
192  long _SSL_set_options(SSL *ssl, long options);
193 
194  /* Returns 0 if not reused, 1 if session id is reused */
195  int _SSL_session_reused(SSL *ssl);
196 
197  /* SSL control */
198  long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg);
199 
200  /*
201  * RAND_egd - set the path to the EGD
202  */
203  int RAND_egd(const char *path);
204 
205 
206  /*
207  * RAND_file_name
208  */
209  const char *RAND_file_name(char *buf, size_t num);
210 
211 
212  /*
213  * RAND_load_file
214  */
215  int RAND_load_file(const char *filename, long max_bytes);
216 
217 
218  /*
219  * RAND_write_file
220  */
221  int RAND_write_file(const char *filename);
222 
223 
224  /*
225  * TLSv1_client_method - return a TLSv1 client method object
226  */
227  SSL_METHOD *TLSv1_client_method();
228 
229 
230  /*
231  * SSLv2_client_method - return a SSLv2 client method object
232  */
233  SSL_METHOD *SSLv2_client_method();
234 
235 
236  /*
237  * SSLv3_client_method - return a SSLv3 client method object
238  */
239  SSL_METHOD *SSLv3_client_method();
240 
241 
242  /*
243  * TLS_client_method - return client method object
244  */
245  SSL_METHOD *TLS_client_method();
246 
247 
248  /*
249  * SSL_get_peer_certificate - return the peer's certificate
250  */
251  X509 *SSL_get_peer_certificate(SSL *s);
252 
253 
254  /*
255  * SSL_get_peer_cert_chain - get the peer's certificate chain
256  */
257  STACK_OF(X509) *SSL_get_peer_cert_chain(SSL *s);
258 
259  /*
260  * SSL_CIPHER_get_bits - get the number of bits in this cipher
261  */
262  int SSL_CIPHER_get_bits(SSL_CIPHER *c,int *alg_bits);
263 
264 
265  /*
266  * SSL_CIPHER_get_version - get the version of this cipher
267  */
268  char *SSL_CIPHER_get_version(SSL_CIPHER *c);
269 
270 
271  /*
272  * SSL_CIPHER_get_name - get the name of this cipher
273  */
274  const char *SSL_CIPHER_get_name(SSL_CIPHER *c);
275 
276 
277  /*
278  * SSL_CIPHER_description - get the description of this cipher
279  */
280  char *SSL_CIPHER_description(SSL_CIPHER *,char *buf,int size);
281 
282 
283  /*
284  * SSL_CTX_use_PrivateKey - set the private key for the session.
285  * - for use with client certificates
286  */
287  int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
288 
289 
290  /*
291  * SSL_CTX_use_certificate - set the client certificate for the session.
292  */
293  int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x);
294 
295 
296  /*
297  * d2i_X509 - Covert a text representation of X509 to an X509 object
298  */
299  X509 * d2i_X509(X509 **a,unsigned char **pp,long length);
300 
301  /*
302  * d2i_X509 - Covert a text representation of X509 CRL to an X509_CRL object
303  */
304  X509_CRL * d2i_X509_CRL(X509_CRL **a,unsigned char **pp,long length);
305 
306 
307  /*
308  * i2d_X509 - Covert an X509 object into a text representation
309  */
310  int i2d_X509(X509 *a,unsigned char **pp);
311 
312 
313  /*
314  * X509_cmp - compare two X509 objects
315  */
316  int X509_cmp(X509 *a, X509 *b);
317 
318 
319  /*
320  * X509_subject_name_cmp - compare subject name of two X509 objects
321  */
322  int X509_subject_name_cmp(const X509 *a, const X509 *b);
323 
324 
325  /*
326  * X509_dup - duplicate an X509 object
327  */
328  X509 *X509_dup(X509 *x509);
329 
330 
331  /*
332  * X509_get0_signature - get signature and algorithm
333  */
334  void X509_get0_signature(const ASN1_BIT_STRING **psig,
335  const X509_ALGOR **palg, const X509 *x);
336 
337 
338 
339  /*
340  *
341  */
342  ASN1_TIME *X509_getm_notAfter(const X509 *x);
343 
344 
345  /*
346  *
347  */
348  ASN1_TIME *X509_getm_notBefore(const X509 *x);
349 
350 
351  /*
352  * X509_STORE_CTX_new - create an X509 store context
353  */
354  X509_STORE_CTX *X509_STORE_CTX_new(void);
355 
356 
357  /*
358  * X509_STORE_CTX_free - free up an X509 store context
359  */
360  void X509_STORE_CTX_free(X509_STORE_CTX *v);
361 
362 
363  /*
364  * X509_STORE_CTX_set0_untrusted - set the certificate chain
365  */
366  void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *v, STACK_OF(X509)* x);
367 
368 
369  /*
370  * X509_STORE_CTX_set_purpose - set the purpose of the certificate
371  */
372  void X509_STORE_CTX_set_purpose(X509_STORE_CTX *v, int purpose);
373 
374 
375  /*
376  *
377  */
378  X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
379 
380 
381  /*
382  *
383  */
384  int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
385 
386 
387  /*
388  *
389  */
390  int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
391 
392 
393  /*
394  *
395  */
396  void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s);
397 
398 
399  /*
400  *
401  */
402  void X509_STORE_set_verify_cb(X509_STORE *ctx,
403  X509_STORE_CTX_verify_cb verify_cb);
404 
405 
406  /*
407  *
408  */
409  STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *v);
410 
411 
412  /*
413  *
414  */
415  X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a);
416 
417 
418  /*
419  *
420  */
421  X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a);
422 
423 
424  /*
425  * X509_verify_cert - verify the certificate
426  */
427  int X509_verify_cert(X509_STORE_CTX *v);
428 
429 
430  /*
431  * X509_STORE_new - create an X509 store
432  */
433  X509_STORE *X509_STORE_new(void);
434 
435 
436  /*
437  * X509_STORE_free - free up an X509 store
438  */
439  void X509_STORE_free(X509_STORE *v);
440 
441 
442  /*
443  * X509_free - free up an X509
444  */
445  void X509_free(X509 *v);
446 
447  /*
448  * X509_CRL_free - free up an X509 CRL
449  */
450  void X509_CRL_free(X509_CRL *v);
451 
452 
453  /*
454  *
455  */
456  const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl);
457 
458 
459  /*
460  *
461  */
462  const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl);
463 
464 
465  /*
466  * X509_NAME_oneline - return the X509 data in a string
467  */
468  char *X509_NAME_oneline(X509_NAME *a, char *buf, int size);
469 
470 
471  /*
472  * X509_get_subject_name - return the X509_NAME for the subject field
473  */
474  X509_NAME *X509_get_subject_name(X509 *a);
475 
476 
477  /*
478  * X509_get_issuer_name - return the X509_NAME for the issuer field
479  */
480  X509_NAME *X509_get_issuer_name(X509 *a);
481 
482 
483  /*
484  * X509_STORE_add_lookup - add a lookup file/method to an X509 store
485  */
486  X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m);
487 
488 
489  /*
490  * X509_LOOKUP_file - Definition of the LOOKUP_file method
491  */
492  X509_LOOKUP_METHOD *X509_LOOKUP_file(void);
493 
494 
495  /*
496  * X509_LOOKUP_free - Free an X509_LOOKUP
497  */
498  void X509_LOOKUP_free(X509_LOOKUP *x);
499 
500 
501  /*
502  * X509_LOOKUP_ctrl - This is not normally called directly (use macros)
503  */
504  int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret);
505 
506 
507  /*
508  * X509_STORE_CTX_init - initialize an X509 STORE context
509  */
510  void X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509, STACK_OF(X509) *chain);
511 
512 
513  /*
514  * CRYPTO_free - free up an internally allocated object
515  */
516  void CRYPTO_free(void *x);
517 
518  /*
519  * BIO_new - create new BIO
520  */
521  BIO *BIO_new(BIO_METHOD *type);
522 
523  /*
524  * BIO methods - only one defined here yet
525  */
526  BIO_METHOD *BIO_s_mem(void);
527 
528  /*
529  * BIO_new_fp - nastiness called BIO - used to create BIO* from FILE*
530  */
531  BIO *BIO_new_fp(FILE *stream, int close_flag);
532 
533  /*
534  * BIO_new_mem_buf - read only BIO from memory region
535  */
536  BIO *BIO_new_mem_buf(void *buf, int len);
537 
538  /*
539  * BIO_free - nastiness called BIO - used to destroy BIO*
540  */
541  int BIO_free(BIO *a);
542 
543  /*
544  * BIO_ctrl - BIO control method
545  */
546  long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg);
547 
548  /*
549  * BIO_write - equivalent to ::write for BIO
550  */
551  int BIO_write(BIO *b, const void *data, int len);
552 
553  /*
554  * BIO_get_data - retrieve (custom) data from BIO
555  */
556  void *BIO_get_data(BIO *a);
557 
558  /*
559  * PEM_write_bio_X509 - write a PEM encoded cert to a BIO*
560  */
561  int PEM_write_bio_X509(BIO *bp, X509 *x);
562 
563 #if OPENSSL_VERSION_NUMBER < 0x10000000L
564  /*
565  * X509_asn1_meth - used for netscape output
566  */
567  ASN1_METHOD *X509_asn1_meth();
568 #endif
569 
570  /*
571  * ASN1_i2d_fp - used for netscape output
572  */
573  int ASN1_i2d_fp(FILE *out, unsigned char *x);
574 
575 
576  /*
577  * ASN1_d2i_fp - read an X509 from a DER encoded file (buf can be NULL)
578  */
579  X509 *X509_d2i_fp(FILE *out, X509** buf);
580 
581 
582  /*
583  * X509_print - print the text form of an X509
584  */
585  int X509_print(FILE *fp, X509 *x);
586 
587 
588  /*
589  * Read a PKCS#12 cert from fp
590  */
591  PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12);
592 
593 
594  /*
595  * Change the password on a PKCS#12 cert
596  */
597  int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass);
598 
599 
600  /*
601  * Write a PKCS#12 to mem
602  */
603  int i2d_PKCS12(PKCS12 *p12, unsigned char **p);
604 
605 
606  /*
607  * Write a PKCS#12 to FILE*
608  */
609  int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12);
610 
611 
612  /*
613  * Create a new PKCS#12 object
614  */
615  PKCS12 *PKCS12_new(void);
616 
617 
618  /*
619  * Destroy that PKCS#12 that you created!
620  */
621  void PKCS12_free(PKCS12 *a);
622 
623 
624  /*
625  * Parse the PKCS#12
626  */
627  int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey,
628  X509 **cert, STACK_OF(X509) **ca);
629 
630 
631  /*
632  * Free the Private Key
633  */
634  void EVP_PKEY_free(EVP_PKEY *x);
635 
636 
637  /*
638  * Pop off the stack
639  */
640  char *OPENSSL_sk_pop(STACK *s);
641 
642  char *OPENSSL_sk_pop(void *s) { return OPENSSL_sk_pop(reinterpret_cast<STACK*>(s)); }
643 
644 
645  /*
646  * Free the stack
647  */
648  void OPENSSL_sk_free(STACK *s);
649 
650  void OPENSSL_sk_free(void *s) { OPENSSL_sk_free(reinterpret_cast<STACK*>(s)); }
651 
652  /*
653  * Number of elements in the stack
654  */
655  int OPENSSL_sk_num(STACK *s);
656 
657  int OPENSSL_sk_num(void *s) { return OPENSSL_sk_num(reinterpret_cast<STACK*>(s)); }
658 
659  /*
660  * Value of element n in the stack
661  */
662  char *OPENSSL_sk_value(STACK *s, int n);
663 
664  char *OPENSSL_sk_value(void *s, int n) { return OPENSSL_sk_value(reinterpret_cast<STACK*>(s), n); }
665 
666  /*
667  * Create a new stack
668  */
669  STACK *OPENSSL_sk_new(int (*cmp)());
670 
671 
672  /*
673  * Add an element to the stack
674  */
675  int OPENSSL_sk_push(STACK *s, char *d);
676 
677  int OPENSSL_sk_push(void *s, void *d) { return OPENSSL_sk_push(reinterpret_cast<STACK*>(s), reinterpret_cast<char*>(d)); }
678 
679  /*
680  * Duplicate the stack
681  */
682  STACK *OPENSSL_sk_dup(const STACK *s);
683 
684  STACK *OPENSSL_sk_dup(const void *s) { return OPENSSL_sk_dup(reinterpret_cast<const STACK*>(s)); }
685 
686  /*
687  * Convert an ASN1_INTEGER to it's text form
688  */
689  char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint);
690 
691 
692  /*
693  * Get the certificate's serial number
694  */
695  ASN1_INTEGER *X509_get_serialNumber(X509 *x);
696 
697 
698  /*
699  * Get the certificate's public key
700  */
701  EVP_PKEY *X509_get_pubkey(X509 *x);
702 
703 
704  /*
705  * Convert the public key to a decimal form
706  */
707  int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp);
708 
709 
710  /*
711  * Check the private key of a PKCS bundle against the X509
712  */
713  int X509_check_private_key(X509 *x, EVP_PKEY *p);
714 
715 
716  /*
717  * Convert a BIGNUM to a hex string
718  */
719  char *BN_bn2hex(const BIGNUM *a);
720 
721 
722  /*
723  * Compute the digest of an X.509
724  */
725  int X509_digest(const X509 *x,const EVP_MD *t, unsigned char *md, unsigned int *len);
726 
727 
728  /*
729  * EVP_md5
730  */
731  EVP_MD *EVP_md5();
732 
733 
734  /*
735  * ASN1_INTEGER free
736  */
737  void ASN1_INTEGER_free(ASN1_INTEGER *x);
738 
739 
740  /*
741  * ASN1_STRING_data
742  */
743  unsigned char *ASN1_STRING_data(ASN1_STRING *x);
744 
745  /*
746  * ASN1_STRING_length
747  */
748  int ASN1_STRING_length(ASN1_STRING *x);
749 
750  /*
751  *
752  */
753  int OBJ_obj2nid(ASN1_OBJECT *o);
754 
755  /*
756  *
757  */
758  const char * OBJ_nid2ln(int n);
759 
760  /*
761  * get the number of extensions
762  */
763  int X509_get_ext_count(X509 *x);
764 
765  /*
766  *
767  */
768  int X509_get_ext_by_NID(X509 *x, int nid, int lastpos);
769 
770  /*
771  *
772  */
773  int X509_get_ext_by_OBJ(X509 *x,ASN1_OBJECT *obj,int lastpos);
774 
775  /*
776  *
777  */
778  X509_EXTENSION *X509_get_ext(X509 *x, int loc);
779 
780  /*
781  *
782  */
783  X509_EXTENSION *X509_delete_ext(X509 *x, int loc);
784 
785  /*
786  *
787  */
788  int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc);
789 
790  /*
791  *
792  */
793  void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx);
794 
795  /*
796  *
797  */
798  char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5);
799 
800  /*
801  *
802  */
803  int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n);
804 
805  /*
806  *
807  */
808  PKCS7 *PKCS7_new(void);
809 
810  /*
811  *
812  */
813  void PKCS7_free(PKCS7 *a);
814 
815  /*
816  *
817  */
818  void PKCS7_content_free(PKCS7 *a);
819 
820  /*
821  *
822  */
823  int i2d_PKCS7(PKCS7 *a, unsigned char **pp);
824 
825  /*
826  *
827  */
828  PKCS7 *d2i_PKCS7(PKCS7 **a, unsigned char **pp,long length);
829 
830  /*
831  *
832  */
833  int i2d_PKCS7_fp(FILE *fp,PKCS7 *p7);
834 
835  /*
836  *
837  */
838  PKCS7 *d2i_PKCS7_fp(FILE *fp,PKCS7 **p7);
839 
840  /*
841  *
842  */
843  int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7);
844 
845  /*
846  *
847  */
848  PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 **p7);
849 
850  /*
851  *
852  */
853  PKCS7 *PKCS7_dup(PKCS7 *p7);
854 
855  /*
856  * Create a PKCS7 signature / signed message
857  */
858  PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
859  BIO *data, int flags);
860 
861  /*
862  * Verify a PKCS7 signature.
863  */
864  int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
865  BIO *indata, BIO *out, int flags);
866 
867  /*
868  * Get signers of a verified PKCS7 signature
869  */
870  STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
871 
872  /*
873  * PKCS7 encrypt message
874  */
875  PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, EVP_CIPHER *cipher,
876  int flags);
877 
878  /*
879  * decrypt PKCS7 message
880  */
881  int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags);
882 
883 
884  /*
885  * Load a CA list file.
886  */
887  STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file);
888 
889  /*
890  * Load a file of PEM encoded objects.
891  */
892  STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
893  pem_password_cb *cb, void *u);
894 
895  /*
896  * Get the number of purposes available
897  */
898  int X509_PURPOSE_get_count();
899 
900 
901  /*
902  * Get the ID of a purpose
903  */
904  int X509_PURPOSE_get_id(X509_PURPOSE *);
905 
906 
907  /*
908  * Check the existence of purpose id "id" in x. for CA, set ca = 1, else 0
909  */
910  int X509_check_purpose(X509 *x, int id, int ca);
911 
912 
913  /*
914  * Get the purpose with index #idx
915  */
916  X509_PURPOSE * X509_PURPOSE_get0(int idx);
917 
918 
919  /*
920  * Create a new Private KEY
921  */
922  EVP_PKEY* EVP_PKEY_new();
923 
924 
925  /*
926  * Get EVP private key type
927  */
928  int EVP_PKEY_base_id(const EVP_PKEY *pkey);
929 
930 
931  /*
932  * Assign a private key
933  */
934  int EVP_PKEY_assign(EVP_PKEY *pkey, int type, char *key);
935 
936 
937  /*
938  * Get RSA key
939  */
940  RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey);
941 
942 
943  /*
944  * Get DSA key
945  */
946  DSA *EVP_PKEY_get0_DSA(EVP_PKEY *pkey);
947 
948 
949  /*
950  * RSA_get0_key - retreive key parameters
951  */
952  void RSA_get0_key(const RSA *r,
953  const BIGNUM **n, const BIGNUM **e, const BIGNUM **d);
954 
955 
956  /*
957  * Generate a RSA key
958  */
959  RSA *RSA_generate_key(int bits, unsigned long e, void
960  (*callback)(int,int,void *), void *cb_arg);
961 
962 
963  /*
964  * DSA_get0_pqg - retreive key parameters
965  */
966  void DSA_get0_pqg(const DSA *d,
967  const BIGNUM **p, const BIGNUM **q, const BIGNUM **g);
968 
969 
970  /*
971  * DSA_get0_key - retreive key
972  */
973  void DSA_get0_key(const DSA *d,
974  const BIGNUM **pub_key, const BIGNUM **priv_key);
975 
976 
977  /*
978  * Create/destroy a certificate request
979  */
980  X509_REQ *X509_REQ_new();
981  void X509_REQ_free(X509_REQ *a);
982 
983 
984  /*
985  * Set the public key in the REQ object
986  */
987  int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey);
988 
989  /* for testing */
990  int i2d_X509_REQ_fp(FILE *fp, X509_REQ *x);
991 
992  /* SMime support */
993  STACK *X509_get1_email(X509 *x);
994  void X509_email_free(STACK *sk);
995 
996  /* Ciphers needed for SMime */
997  EVP_CIPHER *EVP_des_ede3_cbc();
998  EVP_CIPHER *EVP_des_cbc();
999  EVP_CIPHER *EVP_rc2_cbc();
1000  EVP_CIPHER *EVP_rc2_64_cbc();
1001  EVP_CIPHER *EVP_rc2_40_cbc();
1002 
1003  /* clear the current error - use this often*/
1004  void ERR_clear_error();
1005 
1006  /* retrieve the latest error */
1007  unsigned long ERR_get_error();
1008 
1009  /* Print the errors to this stream */
1010  void ERR_print_errors_fp(FILE *fp);
1011 
1012  /* Get a pointer to the SSL session id (reference counted) */
1013  SSL_SESSION *SSL_get1_session(SSL *ssl);
1014 
1015  /* Frees a pointer to the SSL session id (reference decremented if needed) */
1016  void SSL_SESSION_free(SSL_SESSION *session);
1017 
1018  /* Set the SSL session to reuse. */
1019  int SSL_set_session(SSL *ssl, SSL_SESSION *session);
1020 
1021  /* Decode ASN.1 to SSL_SESSION */
1022  SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, unsigned char **pp, long length);
1023  /* Encode SSL_SESSION to ASN.1 */
1024  int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp);
1025 
1026  /* Write privatekey to FILE stream */
1027  int i2d_PrivateKey_fp(FILE*, EVP_PKEY*);
1028 
1029  /* Write PKCS#8privatekey to FILE stream */
1030  int i2d_PKCS8PrivateKey_fp(FILE*, EVP_PKEY*, const EVP_CIPHER*, char*, int, pem_password_cb*, void*);
1031 
1032  /* Free RSA structure */
1033  void RSA_free(RSA*);
1034 
1035  /* Get a blowfish CBC pointer */
1036  EVP_CIPHER *EVP_bf_cbc();
1037 
1038  /* Sign a CSR */
1039  int X509_REQ_sign(X509_REQ*, EVP_PKEY*, const EVP_MD*);
1040 
1041  /* add a name entry */
1042  int X509_NAME_add_entry_by_txt(X509_NAME*, char*, int, unsigned char*, int, int, int);
1043 
1044  /* Create a name */
1045  X509_NAME *X509_NAME_new();
1046 
1047  /* Set the subject */
1048  int X509_REQ_set_subject_name(X509_REQ*,X509_NAME*);
1049 
1050  /* get list of available SSL_CIPHER's sorted by preference */
1051  STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL* ssl);
1052 
1053 
1054  /* cover KOpenSSLProxy API compatibility */
1055 #if OPENSSL_VERSION_NUMBER >= 0x10100000L && OPENSSL_API_COMPAT < 0x10100000L
1056 # undef sk_dup
1057 # undef sk_free
1058 # undef sk_new
1059 # undef sk_num
1060 # undef sk_pop
1061 # undef sk_push
1062 # undef sk_value
1063 # undef X509_STORE_CTX_set_chain
1064 # undef SSLv23_client_method
1065 #endif
1066  STACK *sk_dup(const STACK *s) TDE_DEPRECATED;
1067  void sk_free(STACK *s) TDE_DEPRECATED;
1068  STACK *sk_new(int (*cmp)()) TDE_DEPRECATED;
1069  int sk_num(STACK *s) TDE_DEPRECATED;
1070  char *sk_pop(STACK *s) TDE_DEPRECATED;
1071  int sk_push(STACK *s, char *d) TDE_DEPRECATED;
1072  char *sk_value(STACK *s, int n) TDE_DEPRECATED;
1073  void X509_STORE_CTX_set_chain(X509_STORE_CTX *v, STACK_OF(X509)* x) TDE_DEPRECATED;
1074  SSL_METHOD *SSLv23_client_method() TDE_DEPRECATED;
1075 
1076 #endif
1077 
1078 private:
1079  KOpenSSLProxy();
1080  ~KOpenSSLProxy();
1081  KOpenSSLProxyPrivate *d;
1082 
1083  KLibrary *_sslLib;
1084  KLibrary *_cryptoLib;
1085  static KOpenSSLProxy *_me;
1086 
1087  bool _ok;
1088 };
1089 
1090 #endif
1091 
KOpenSSLProxy
Dynamically load and wrap OpenSSL.
Definition: kopenssl.h:76

tdeio/kssl

Skip menu "tdeio/kssl"
  • Main Page
  • Alphabetical List
  • Class List
  • File List
  • Class Members
  • Related Pages

tdeio/kssl

Skip menu "tdeio/kssl"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeio/kssl by doxygen 1.9.1
This website is maintained by Timothy Pearson.