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

kio/kssl

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

kio/kssl

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

kio/kssl

Skip menu "kio/kssl"
  • arts
  • dcop
  • dnssd
  • interfaces
  •     interface
  •     library
  •   kspeech
  •   ktexteditor
  • kabc
  • kate
  • kcmshell
  • kdecore
  • kded
  • kdefx
  • kdeprint
  • kdesu
  • kdeui
  • kdoctools
  • khtml
  • kimgio
  • kinit
  • kio
  •   bookmarks
  •   httpfilter
  •   kfile
  •   kio
  •   kioexec
  •   kpasswdserver
  •   kssl
  • kioslave
  •   http
  • kjs
  • kmdi
  •   kmdi
  • knewstuff
  • kparts
  • krandr
  • kresources
  • kspell2
  • kunittest
  • kutils
  • kwallet
  • libkmid
  • libkscreensaver
Generated for kio/kssl by doxygen 1.8.6
This website is maintained by Timothy Pearson.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. |