kio Library API Documentation

kopenssl.h

00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2001-2003 George Staikos <staikos@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License version 2 as published by the Free Software Foundation. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Library General Public License for more details. 00012 00013 You should have received a copy of the GNU Library General Public License 00014 along with this library; see the file COPYING.LIB. If not, write to 00015 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00016 Boston, MA 02111-1307, USA. 00017 */ 00018 00019 00020 // IF YOU ARE USING THIS CLASS, YOU ARE MAKING A MISTAKE. 00021 00022 #ifndef __KOPENSSLPROXY_H 00023 #define __KOPENSSLPROXY_H 00024 00025 #define KOSSL KOpenSSLProxy 00026 class KOpenSSLProxyPrivate; 00027 00028 #include <klibloader.h> 00029 00030 #ifdef Q_WS_WIN 00031 #include "ksslconfig_win.h" 00032 #else 00033 #include "ksslconfig.h" 00034 #endif 00035 00036 #ifdef KSSL_HAVE_SSL 00037 #define crypt _openssl_crypt 00038 #include <openssl/ssl.h> 00039 #include <openssl/x509.h> 00040 #include <openssl/x509v3.h> 00041 #include <openssl/pem.h> 00042 #include <openssl/bio.h> 00043 #include <openssl/rand.h> 00044 #include <openssl/asn1.h> 00045 #include <openssl/pkcs7.h> 00046 #include <openssl/pkcs12.h> 00047 #include <openssl/evp.h> 00048 #include <openssl/stack.h> 00049 #include <openssl/bn.h> 00050 #undef crypt 00051 #endif 00052 00053 #include <kstaticdeleter.h> 00054 00063 class KIO_EXPORT KOpenSSLProxy { 00064 friend class KStaticDeleter<KOpenSSLProxy>; 00065 public: 00066 00071 static KOpenSSLProxy *self(); 00072 00076 bool hasLibCrypto() const; 00077 00081 bool hasLibSSL() const; 00082 00087 void destroy(); 00088 00089 // Here are the symbols that we need. 00090 #ifdef KSSL_HAVE_SSL 00091 00092 /* 00093 * SSL_connect - initiate the TLS/SSL handshake with an TLS/SSL server 00094 */ 00095 int SSL_connect(SSL *ssl); 00096 00097 /* 00098 * SSL_accept - initiate the TLS/SSL handshake with an TLS/SSL server 00099 */ 00100 int SSL_accept(SSL *ssl); 00101 00102 /* 00103 * SSL_get_error - get the error code 00104 */ 00105 int SSL_get_error(SSL *ssl, int rc); 00106 00107 /* 00108 * SSL_read - read bytes from a TLS/SSL connection. 00109 */ 00110 int SSL_read(SSL *ssl, void *buf, int num); 00111 00112 /* 00113 * SSL_write - write bytes to a TLS/SSL connection. 00114 */ 00115 int SSL_write(SSL *ssl, const void *buf, int num); 00116 00117 /* 00118 * SSL_new - create a new SSL structure for a connection 00119 */ 00120 SSL *SSL_new(SSL_CTX *ctx); 00121 00122 /* 00123 * SSL_free - free an allocated SSL structure 00124 */ 00125 void SSL_free(SSL *ssl); 00126 00127 /* 00128 * SSL_shutdown - shutdown an allocated SSL connection 00129 */ 00130 int SSL_shutdown(SSL *ssl); 00131 00132 /* 00133 * SSL_CTX_new - create a new SSL_CTX object as framework for TLS/SSL enabled functions 00134 */ 00135 SSL_CTX *SSL_CTX_new(SSL_METHOD *method); 00136 00137 /* 00138 * SSL_CTX_free - free an allocated SSL_CTX object 00139 */ 00140 void SSL_CTX_free(SSL_CTX *ctx); 00141 00142 /* 00143 * SSL_set_fd - connect the SSL object with a file descriptor 00144 */ 00145 int SSL_set_fd(SSL *ssl, int fd); 00146 00147 /* 00148 * SSL_pending - obtain number of readable bytes buffered in an SSL object 00149 */ 00150 int SSL_pending(SSL *ssl); 00151 00152 /* 00153 * SSL_peek - obtain bytes buffered in an SSL object 00154 */ 00155 int SSL_peek(SSL *ssl, void *buf, int num); 00156 00157 /* 00158 * SSL_CTX_set_cipher_list - choose list of available SSL_CIPHERs 00159 */ 00160 int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str); 00161 00162 /* 00163 * SSL_CTX_set_verify - set peer certificate verification parameters 00164 */ 00165 void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, 00166 int (*verify_callback)(int, X509_STORE_CTX *)); 00167 00168 /* 00169 * SSL_use_certificate - load certificate 00170 */ 00171 int SSL_use_certificate(SSL *ssl, X509 *x); 00172 00173 /* 00174 * SSL_get_current_cipher - get SSL_CIPHER of a connection 00175 */ 00176 SSL_CIPHER *SSL_get_current_cipher(SSL *ssl); 00177 00178 /* 00179 * SSL_set_options - manipulate SSL engine options 00180 * Note: These are all mapped to SSL_ctrl so call them as the comment 00181 * specifies but know that they use SSL_ctrl. They are #define 00182 * so they will map to the one in this class if called as a 00183 * member function of this class. 00184 */ 00185 /* long SSL_set_options(SSL *ssl, long options); */ 00186 /* Returns 0 if not reused, 1 if session id is reused */ 00187 /* int SSL_session_reused(SSL *ssl); */ 00188 long SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg); 00189 00190 /* 00191 * RAND_egd - set the path to the EGD 00192 */ 00193 int RAND_egd(const char *path); 00194 00195 00196 /* 00197 * RAND_file_name 00198 */ 00199 const char *RAND_file_name(char *buf, size_t num); 00200 00201 00202 /* 00203 * RAND_load_file 00204 */ 00205 int RAND_load_file(const char *filename, long max_bytes); 00206 00207 00208 /* 00209 * RAND_write_file 00210 */ 00211 int RAND_write_file(const char *filename); 00212 00213 00214 /* 00215 * TLSv1_client_method - return a TLSv1 client method object 00216 */ 00217 SSL_METHOD *TLSv1_client_method(); 00218 00219 00220 /* 00221 * SSLv2_client_method - return a SSLv2 client method object 00222 */ 00223 SSL_METHOD *SSLv2_client_method(); 00224 00225 00226 /* 00227 * SSLv3_client_method - return a SSLv3 client method object 00228 */ 00229 SSL_METHOD *SSLv3_client_method(); 00230 00231 00232 /* 00233 * SSLv23_client_method - return a SSLv23 client method object 00234 */ 00235 SSL_METHOD *SSLv23_client_method(); 00236 00237 00238 /* 00239 * SSL_get_peer_certificate - return the peer's certificate 00240 */ 00241 X509 *SSL_get_peer_certificate(SSL *s); 00242 00243 00244 /* 00245 * SSL_get_peer_cert_chain - get the peer's certificate chain 00246 */ 00247 STACK_OF(X509) *SSL_get_peer_cert_chain(SSL *s); 00248 00249 /* 00250 * SSL_CIPHER_get_bits - get the number of bits in this cipher 00251 */ 00252 int SSL_CIPHER_get_bits(SSL_CIPHER *c,int *alg_bits); 00253 00254 00255 /* 00256 * SSL_CIPHER_get_version - get the version of this cipher 00257 */ 00258 char *SSL_CIPHER_get_version(SSL_CIPHER *c); 00259 00260 00261 /* 00262 * SSL_CIPHER_get_name - get the name of this cipher 00263 */ 00264 const char *SSL_CIPHER_get_name(SSL_CIPHER *c); 00265 00266 00267 /* 00268 * SSL_CIPHER_description - get the description of this cipher 00269 */ 00270 char *SSL_CIPHER_description(SSL_CIPHER *,char *buf,int size); 00271 00272 00273 /* 00274 * SSL_CTX_use_PrivateKey - set the private key for the session. 00275 * - for use with client certificates 00276 */ 00277 int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); 00278 00279 00280 /* 00281 * SSL_CTX_use_certificate - set the client certificate for the session. 00282 */ 00283 int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); 00284 00285 00286 /* 00287 * d2i_X509 - Covert a text representation of X509 to an X509 object 00288 */ 00289 X509 * d2i_X509(X509 **a,unsigned char **pp,long length); 00290 00291 00292 /* 00293 * i2d_X509 - Covert an X509 object into a text representation 00294 */ 00295 int i2d_X509(X509 *a,unsigned char **pp); 00296 00297 00298 /* 00299 * X509_cmp - compare two X509 objects 00300 */ 00301 int X509_cmp(X509 *a, X509 *b); 00302 00303 00304 /* 00305 * X509_dup - duplicate an X509 object 00306 */ 00307 X509 *X509_dup(X509 *x509); 00308 00309 00310 /* 00311 * X509_STORE_CTX_new - create an X509 store context 00312 */ 00313 X509_STORE_CTX *X509_STORE_CTX_new(void); 00314 00315 00316 /* 00317 * X509_STORE_CTX_free - free up an X509 store context 00318 */ 00319 void X509_STORE_CTX_free(X509_STORE_CTX *v); 00320 00321 00322 /* 00323 * X509_STORE_CTX_set_chain - set the certificate chain 00324 */ 00325 void X509_STORE_CTX_set_chain(X509_STORE_CTX *v, STACK_OF(X509)* x); 00326 00327 /* 00328 * X509_STORE_CTX_set_purpose - set the purpose of the certificate 00329 */ 00330 void X509_STORE_CTX_set_purpose(X509_STORE_CTX *v, int purpose); 00331 00332 /* 00333 * X509_verify_cert - verify the certificate 00334 */ 00335 int X509_verify_cert(X509_STORE_CTX *v); 00336 00337 00338 /* 00339 * X509_STORE_new - create an X509 store 00340 */ 00341 X509_STORE *X509_STORE_new(void); 00342 00343 00344 /* 00345 * X509_STORE_free - free up an X509 store 00346 */ 00347 void X509_STORE_free(X509_STORE *v); 00348 00349 00350 /* 00351 * X509_free - free up an X509 00352 */ 00353 void X509_free(X509 *v); 00354 00355 00356 /* 00357 * X509_NAME_oneline - return the X509 data in a string 00358 */ 00359 char *X509_NAME_oneline(X509_NAME *a, char *buf, int size); 00360 00361 00362 /* 00363 * X509_get_subject_name - return the X509_NAME for the subject field 00364 */ 00365 X509_NAME *X509_get_subject_name(X509 *a); 00366 00367 00368 /* 00369 * X509_get_issuer_name - return the X509_NAME for the issuer field 00370 */ 00371 X509_NAME *X509_get_issuer_name(X509 *a); 00372 00373 00374 /* 00375 * X509_STORE_add_lookup - add a lookup file/method to an X509 store 00376 */ 00377 X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); 00378 00379 00380 /* 00381 * X509_LOOKUP_file - Definition of the LOOKUP_file method 00382 */ 00383 X509_LOOKUP_METHOD *X509_LOOKUP_file(void); 00384 00385 00386 /* 00387 * X509_LOOKUP_free - Free an X509_LOOKUP 00388 */ 00389 void X509_LOOKUP_free(X509_LOOKUP *x); 00390 00391 00392 /* 00393 * X509_LOOKUP_ctrl - This is not normally called directly (use macros) 00394 */ 00395 int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret); 00396 00397 00398 /* 00399 * X509_STORE_CTX_init - initialize an X509 STORE context 00400 */ 00401 void X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509, STACK_OF(X509) *chain); 00402 00403 00404 /* 00405 * CRYPTO_free - free up an internally allocated object 00406 */ 00407 void CRYPTO_free(void *x); 00408 00409 /* 00410 * BIO_new - create new BIO 00411 */ 00412 BIO *BIO_new(BIO_METHOD *type); 00413 00414 /* 00415 * BIO methods - only one defined here yet 00416 */ 00417 BIO_METHOD *BIO_s_mem(void); 00418 00419 /* 00420 * BIO_new_fp - nastiness called BIO - used to create BIO* from FILE* 00421 */ 00422 BIO *BIO_new_fp(FILE *stream, int close_flag); 00423 00424 /* 00425 * BIO_new_mem_buf - read only BIO from memory region 00426 */ 00427 BIO *BIO_new_mem_buf(void *buf, int len); 00428 00429 /* 00430 * BIO_free - nastiness called BIO - used to destroy BIO* 00431 */ 00432 int BIO_free(BIO *a); 00433 00434 /* 00435 * BIO_ctrl - BIO control method 00436 */ 00437 long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg); 00438 00439 /* 00440 * BIO_write - equivalent to ::write for BIO 00441 */ 00442 int BIO_write(BIO *b, const void *data, int len); 00443 00444 /* 00445 * PEM_write_bio_X509 - write a PEM encoded cert to a BIO* 00446 */ 00447 int PEM_write_bio_X509(BIO *bp, X509 *x); 00448 00449 00450 /* 00451 * X509_asn1_meth - used for netscape output 00452 */ 00453 ASN1_METHOD *X509_asn1_meth(); 00454 00455 00456 /* 00457 * ASN1_i2d_fp - used for netscape output 00458 */ 00459 int ASN1_i2d_fp(FILE *out, unsigned char *x); 00460 00461 00462 /* 00463 * ASN1_d2i_fp - read an X509 from a DER encoded file (buf can be NULL) 00464 */ 00465 X509 *X509_d2i_fp(FILE *out, X509** buf); 00466 00467 00468 /* 00469 * X509_print - print the text form of an X509 00470 */ 00471 int X509_print(FILE *fp, X509 *x); 00472 00473 00474 /* 00475 * Read a PKCS#12 cert from fp 00476 */ 00477 PKCS12 *d2i_PKCS12_fp(FILE *fp, PKCS12 **p12); 00478 00479 00480 /* 00481 * Change the password on a PKCS#12 cert 00482 */ 00483 int PKCS12_newpass(PKCS12 *p12, char *oldpass, char *newpass); 00484 00485 00486 /* 00487 * Write a PKCS#12 to mem 00488 */ 00489 int i2d_PKCS12(PKCS12 *p12, unsigned char **p); 00490 00491 00492 /* 00493 * Write a PKCS#12 to FILE* 00494 */ 00495 int i2d_PKCS12_fp(FILE *fp, PKCS12 *p12); 00496 00497 00498 /* 00499 * Create a new PKCS#12 object 00500 */ 00501 PKCS12 *PKCS12_new(void); 00502 00503 00504 /* 00505 * Destroy that PKCS#12 that you created! 00506 */ 00507 void PKCS12_free(PKCS12 *a); 00508 00509 00510 /* 00511 * Parse the PKCS#12 00512 */ 00513 int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, 00514 X509 **cert, STACK_OF(X509) **ca); 00515 00516 00517 /* 00518 * Free the Private Key 00519 */ 00520 void EVP_PKEY_free(EVP_PKEY *x); 00521 00522 00523 /* 00524 * Pop off the stack 00525 */ 00526 char *sk_pop(STACK *s); 00527 00528 00529 /* 00530 * Free the stack 00531 */ 00532 void sk_free(STACK *s); 00533 00534 00535 /* 00536 * Number of elements in the stack 00537 */ 00538 int sk_num(STACK *s); 00539 00540 00541 /* 00542 * Value of element n in the stack 00543 */ 00544 char *sk_value(STACK *s, int n); 00545 00546 00547 /* 00548 * Create a new stack 00549 */ 00550 STACK *sk_new(int (*cmp)()); 00551 00552 00553 /* 00554 * Add an element to the stack 00555 */ 00556 int sk_push(STACK *s, char *d); 00557 00558 00559 /* 00560 * Duplicate the stack 00561 */ 00562 STACK *sk_dup(STACK *s); 00563 00564 00565 /* 00566 * Convert an ASN1_INTEGER to it's text form 00567 */ 00568 char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, ASN1_INTEGER *aint); 00569 00570 00571 /* 00572 * Get the certificate's serial number 00573 */ 00574 ASN1_INTEGER *X509_get_serialNumber(X509 *x); 00575 00576 00577 /* 00578 * Get the certificate's public key 00579 */ 00580 EVP_PKEY *X509_get_pubkey(X509 *x); 00581 00582 00583 /* 00584 * Convert the public key to a decimal form 00585 */ 00586 int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); 00587 00588 00589 /* 00590 * Check the private key of a PKCS bundle against the X509 00591 */ 00592 int X509_check_private_key(X509 *x, EVP_PKEY *p); 00593 00594 00595 /* 00596 * Convert a BIGNUM to a hex string 00597 */ 00598 char *BN_bn2hex(const BIGNUM *a); 00599 00600 00601 /* 00602 * Compute the digest of an X.509 00603 */ 00604 int X509_digest(const X509 *x,const EVP_MD *t, unsigned char *md, unsigned int *len); 00605 00606 00607 /* 00608 * EVP_md5 00609 */ 00610 EVP_MD *EVP_md5(); 00611 00612 00613 /* 00614 * ASN1_INTEGER free 00615 */ 00616 void ASN1_INTEGER_free(ASN1_INTEGER *x); 00617 00618 00619 /* 00620 * ASN1_STRING_data 00621 */ 00622 unsigned char *ASN1_STRING_data(ASN1_STRING *x); 00623 00624 /* 00625 * 00626 */ 00627 int OBJ_obj2nid(ASN1_OBJECT *o); 00628 00629 /* 00630 * 00631 */ 00632 const char * OBJ_nid2ln(int n); 00633 00634 /* 00635 * get the number of extensions 00636 */ 00637 int X509_get_ext_count(X509 *x); 00638 00639 /* 00640 * 00641 */ 00642 int X509_get_ext_by_NID(X509 *x, int nid, int lastpos); 00643 00644 /* 00645 * 00646 */ 00647 int X509_get_ext_by_OBJ(X509 *x,ASN1_OBJECT *obj,int lastpos); 00648 00649 /* 00650 * 00651 */ 00652 X509_EXTENSION *X509_get_ext(X509 *x, int loc); 00653 00654 /* 00655 * 00656 */ 00657 X509_EXTENSION *X509_delete_ext(X509 *x, int loc); 00658 00659 /* 00660 * 00661 */ 00662 int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); 00663 00664 /* 00665 * 00666 */ 00667 void *X509_get_ext_d2i(X509 *x, int nid, int *crit, int *idx); 00668 00669 /* 00670 * 00671 */ 00672 char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5); 00673 00674 /* 00675 * 00676 */ 00677 int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); 00678 00679 /* 00680 * 00681 */ 00682 PKCS7 *PKCS7_new(void); 00683 00684 /* 00685 * 00686 */ 00687 void PKCS7_free(PKCS7 *a); 00688 00689 /* 00690 * 00691 */ 00692 void PKCS7_content_free(PKCS7 *a); 00693 00694 /* 00695 * 00696 */ 00697 int i2d_PKCS7(PKCS7 *a, unsigned char **pp); 00698 00699 /* 00700 * 00701 */ 00702 PKCS7 *d2i_PKCS7(PKCS7 **a, unsigned char **pp,long length); 00703 00704 /* 00705 * 00706 */ 00707 int i2d_PKCS7_fp(FILE *fp,PKCS7 *p7); 00708 00709 /* 00710 * 00711 */ 00712 PKCS7 *d2i_PKCS7_fp(FILE *fp,PKCS7 **p7); 00713 00714 /* 00715 * 00716 */ 00717 int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7); 00718 00719 /* 00720 * 00721 */ 00722 PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 **p7); 00723 00724 /* 00725 * 00726 */ 00727 PKCS7 *PKCS7_dup(PKCS7 *p7); 00728 00729 /* 00730 * Create a PKCS7 signature / signed message 00731 */ 00732 PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, 00733 BIO *data, int flags); 00734 00735 /* 00736 * Verify a PKCS7 signature. 00737 */ 00738 int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, 00739 BIO *indata, BIO *out, int flags); 00740 00741 /* 00742 * Get signers of a verified PKCS7 signature 00743 */ 00744 STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags); 00745 00746 /* 00747 * PKCS7 encrypt message 00748 */ 00749 PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, EVP_CIPHER *cipher, 00750 int flags); 00751 00752 /* 00753 * decrypt PKCS7 message 00754 */ 00755 int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags); 00756 00757 00758 /* 00759 * Load a CA list file. 00760 */ 00761 STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); 00762 00763 /* 00764 * Load a file of PEM encoded objects. 00765 */ 00766 STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, 00767 pem_password_cb *cb, void *u); 00768 00769 /* 00770 * Get the number of purposes available 00771 */ 00772 int X509_PURPOSE_get_count(); 00773 00774 00775 /* 00776 * Get the ID of a purpose 00777 */ 00778 int X509_PURPOSE_get_id(X509_PURPOSE *); 00779 00780 00781 /* 00782 * Check the existence of purpose id "id" in x. for CA, set ca = 1, else 0 00783 */ 00784 int X509_check_purpose(X509 *x, int id, int ca); 00785 00786 00787 /* 00788 * Get the purpose with index #idx 00789 */ 00790 X509_PURPOSE * X509_PURPOSE_get0(int idx); 00791 00792 00793 /* 00794 * Create a new Private KEY 00795 */ 00796 EVP_PKEY* EVP_PKEY_new(); 00797 00798 00799 /* 00800 * Assign a private key 00801 */ 00802 int EVP_PKEY_assign(EVP_PKEY *pkey, int type, char *key); 00803 00804 00805 /* 00806 * Generate a RSA key 00807 */ 00808 RSA *RSA_generate_key(int bits, unsigned long e, void 00809 (*callback)(int,int,void *), void *cb_arg); 00810 00811 00812 /* 00813 * Create/destroy a certificate request 00814 */ 00815 X509_REQ *X509_REQ_new(); 00816 void X509_REQ_free(X509_REQ *a); 00817 00818 00819 /* 00820 * Set the public key in the REQ object 00821 */ 00822 int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); 00823 00824 /* for testing */ 00825 int i2d_X509_REQ_fp(FILE *fp, X509_REQ *x); 00826 00827 /* SMime support */ 00828 STACK *X509_get1_email(X509 *x); 00829 void X509_email_free(STACK *sk); 00830 00831 /* Ciphers needed for SMime */ 00832 EVP_CIPHER *EVP_des_ede3_cbc(); 00833 EVP_CIPHER *EVP_des_cbc(); 00834 EVP_CIPHER *EVP_rc2_cbc(); 00835 EVP_CIPHER *EVP_rc2_64_cbc(); 00836 EVP_CIPHER *EVP_rc2_40_cbc(); 00837 00838 /* clear the current error - use this often*/ 00839 void ERR_clear_error(); 00840 00841 /* retrieve the latest error */ 00842 unsigned long ERR_get_error(); 00843 00844 /* Print the errors to this stream */ 00845 void ERR_print_errors_fp(FILE *fp); 00846 00847 /* Get a pointer to the SSL session id (reference counted) */ 00848 SSL_SESSION *SSL_get1_session(SSL *ssl); 00849 00850 /* Frees a pointer to the SSL session id (reference decremented if needed) */ 00851 void SSL_SESSION_free(SSL_SESSION *session); 00852 00853 /* Set the SSL session to reuse. */ 00854 int SSL_set_session(SSL *ssl, SSL_SESSION *session); 00855 00856 /* Decode ASN.1 to SSL_SESSION */ 00857 SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, unsigned char **pp, long length); 00858 /* Encode SSL_SESSION to ASN.1 */ 00859 int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); 00860 00861 /* Write privatekey to FILE stream */ 00862 int i2d_PrivateKey_fp(FILE*, EVP_PKEY*); 00863 00864 /* Write PKCS#8privatekey to FILE stream */ 00865 int i2d_PKCS8PrivateKey_fp(FILE*, EVP_PKEY*, const EVP_CIPHER*, char*, int, pem_password_cb*, void*); 00866 00867 /* Free RSA structure */ 00868 void RSA_free(RSA*); 00869 00870 /* Get a blowfish CBC pointer */ 00871 EVP_CIPHER *EVP_bf_cbc(); 00872 00873 /* Sign a CSR */ 00874 int X509_REQ_sign(X509_REQ*, EVP_PKEY*, const EVP_MD*); 00875 00876 /* add a name entry */ 00877 int X509_NAME_add_entry_by_txt(X509_NAME*, char*, int, unsigned char*, int, int, int); 00878 00879 /* Create a name */ 00880 X509_NAME *X509_NAME_new(); 00881 00882 /* Set the subject */ 00883 int X509_REQ_set_subject_name(X509_REQ*,X509_NAME*); 00884 00885 #endif 00886 00887 private: 00888 KOpenSSLProxy(); 00889 ~KOpenSSLProxy(); 00890 KOpenSSLProxyPrivate *d; 00891 00892 KLibrary *_sslLib; 00893 KLibrary *_cryptoLib; 00894 static KOpenSSLProxy *_me; 00895 00896 bool _ok; 00897 }; 00898 00899 #endif 00900
KDE Logo
This file is part of the documentation for kio Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Apr 12 23:09:17 2005 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003