⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssl.cpp

📁 mysql-5.0.33源码包
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    }    else {        des.set_decryptKey(key, *ivec);        des.decrypt(output, input, sz);    }}// functions for libcurlint RAND_status(){    return 1;  /* TaoCrypt provides enough seed */}int DES_set_key(const_DES_cblock* key, DES_key_schedule* schedule){    memcpy(schedule, key, sizeof(const_DES_cblock));    return 1;}void DES_set_odd_parity(DES_cblock* key){    // not needed now for TaoCrypt}void DES_ecb_encrypt(DES_cblock* input, DES_cblock* output,                     DES_key_schedule* key, int enc){    DES  des;    if (enc) {        des.set_encryptKey(*key, 0);        des.encrypt(*output, *input, DES_BLOCK);    }    else {        des.set_decryptKey(*key, 0);        des.decrypt(*output, *input, DES_BLOCK);    }}void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX* ctx, void* userdata){    ctx->SetUserData(userdata);}X509* SSL_get_certificate(SSL* ssl){    // only used to pass to get_privatekey which isn't used    return 0;}EVP_PKEY* SSL_get_privatekey(SSL* ssl){    // only called, not used    return 0;}void SSL_SESSION_free(SSL_SESSION* session){    // managed by singleton}EVP_PKEY* X509_get_pubkey(X509* x){    // called, not used though    return 0;}int EVP_PKEY_copy_parameters(EVP_PKEY* to, const EVP_PKEY* from){    // called, not used though    return 0;}void EVP_PKEY_free(EVP_PKEY* pkey){    // never allocated from above}void ERR_error_string_n(unsigned long e, char *buf, size_t len){    if (len) ERR_error_string(e, buf);}void ERR_free_strings(void){    // handled internally}void EVP_cleanup(void){    // nothing to do yet}ASN1_TIME* X509_get_notBefore(X509* x){    if (x) return x->GetBefore();    return 0;}ASN1_TIME* X509_get_notAfter(X509* x){    if (x) return x->GetAfter();    return 0;}SSL_METHOD* SSLv2_client_method(void)   /* will never work, no v 2    */{    return 0;}SSL_SESSION* SSL_get1_session(SSL* ssl)  /* what's ref count */{    return SSL_get_session(ssl);}void GENERAL_NAMES_free(STACK_OF(GENERAL_NAME) *x){    // no extension names supported yet}int sk_GENERAL_NAME_num(STACK_OF(GENERAL_NAME) *x){    // no extension names supported yet    return 0;}GENERAL_NAME* sk_GENERAL_NAME_value(STACK_OF(GENERAL_NAME) *x, int i){    // no extension names supported yet    return 0;}unsigned char* ASN1_STRING_data(ASN1_STRING* x){    if (x) return x->data;    return 0;}int ASN1_STRING_length(ASN1_STRING* x){    if (x) return x->length;    return 0;}int ASN1_STRING_type(ASN1_STRING *x){    if (x) return x->type;    return 0;}int X509_NAME_get_index_by_NID(X509_NAME* name,int nid, int lastpos){    int idx = -1;  // not found    const char* start = &name->GetName()[lastpos + 1];    switch (nid) {    case NID_commonName:        const char* found = strstr(start, "/CN=");        if (found) {            found += 4;  // advance to str            idx = found - start + lastpos + 1;        }        break;    }    return idx;}ASN1_STRING* X509_NAME_ENTRY_get_data(X509_NAME_ENTRY* ne){    // the same in yaSSL    return ne;}X509_NAME_ENTRY* X509_NAME_get_entry(X509_NAME* name, int loc){    return name->GetEntry(loc);}// already formatted, caller responsible for freeing *outint ASN1_STRING_to_UTF8(unsigned char** out, ASN1_STRING* in){    if (!in) return 0;    *out = (unsigned char*)malloc(in->length + 1);    if (*out) {        memcpy(*out, in->data, in->length);        (*out)[in->length] = 0;    }    return in->length;}void* X509_get_ext_d2i(X509* x, int nid, int* crit, int* idx){    // no extensions supported yet    return 0;}void MD4_Init(MD4_CTX* md4){    // make sure we have a big enough buffer    typedef char ok[sizeof(md4->buffer) >= sizeof(TaoCrypt::MD4) ? 1 : -1];    (void) sizeof(ok);    // using TaoCrypt since no dynamic memory allocated    // and no destructor will be called    new (reinterpret_cast<yassl_pointer>(md4->buffer)) TaoCrypt::MD4();}void MD4_Update(MD4_CTX* md4, const void* data, unsigned long sz){    reinterpret_cast<TaoCrypt::MD4*>(md4->buffer)->Update(                static_cast<const byte*>(data), static_cast<unsigned int>(sz));}void MD4_Final(unsigned char* hash, MD4_CTX* md4){    reinterpret_cast<TaoCrypt::MD4*>(md4->buffer)->Final(hash);}void MD5_Init(MD5_CTX* md5){    // make sure we have a big enough buffer    typedef char ok[sizeof(md5->buffer) >= sizeof(TaoCrypt::MD5) ? 1 : -1];    (void) sizeof(ok);    // using TaoCrypt since no dynamic memory allocated    // and no destructor will be called    new (reinterpret_cast<yassl_pointer>(md5->buffer)) TaoCrypt::MD5();}void MD5_Update(MD5_CTX* md5, const void* data, unsigned long sz){    reinterpret_cast<TaoCrypt::MD5*>(md5->buffer)->Update(                static_cast<const byte*>(data), static_cast<unsigned int>(sz));}void MD5_Final(unsigned char* hash, MD5_CTX* md5){    reinterpret_cast<TaoCrypt::MD5*>(md5->buffer)->Final(hash);}int RAND_bytes(unsigned char* buf, int num){    RandomPool ran;    if (ran.GetError()) return 0;    ran.Fill(buf, num);    return 1;}int SSL_peek(SSL* ssl, void* buffer, int sz){    Data data(min(sz, MAX_RECORD_SIZE), static_cast<opaque*>(buffer));    return receiveData(*ssl, data, true);}int SSL_pending(SSL* ssl){    // Just in case there's pending data that hasn't been processed yet...    char c;    SSL_peek(ssl, &c, 1);        return ssl->bufferedData();}void SSL_CTX_set_default_passwd_cb(SSL_CTX* ctx, pem_password_cb cb){    ctx->SetPasswordCb(cb);}int SSLeay_add_ssl_algorithms()  // compatibility only{    return 1;}void ERR_remove_state(unsigned long){    GetErrors().Remove();}int ERR_GET_REASON(int l){    return l & 0xfff;}unsigned long err_helper(bool peek = false){    int ysError = GetErrors().Lookup(peek);    // translate cert error for libcurl, it uses OpenSSL hex code    switch (ysError) {    case TaoCrypt::SIG_OTHER_E:        return CERTFICATE_ERROR;        break;    default :        return 0;    }}unsigned long ERR_peek_error(){    return err_helper(true);}unsigned long ERR_get_error(){    return err_helper();}    // functions for stunnel    void RAND_screen()    {        // TODO:    }    const char* RAND_file_name(char*, size_t)    {        // TODO:        return 0;    }    int RAND_write_file(const char*)    {        // TODO:        return 0;    }    int RAND_load_file(const char*, long)    {        // TODO:        return 0;    }    void RSA_free(RSA*)    {        // TODO:    }    RSA* RSA_generate_key(int, unsigned long, void(*)(int, int, void*), void*)    {        //  TODO:        return 0;    }    int X509_LOOKUP_add_dir(X509_LOOKUP*, const char*, long)    {        // TODO:        return SSL_SUCCESS;    }    int X509_LOOKUP_load_file(X509_LOOKUP*, const char*, long)    {        // TODO:        return SSL_SUCCESS;    }    X509_LOOKUP_METHOD* X509_LOOKUP_hash_dir(void)    {        // TODO:        return 0;    }    X509_LOOKUP_METHOD* X509_LOOKUP_file(void)    {        // TODO:        return 0;    }    X509_LOOKUP* X509_STORE_add_lookup(X509_STORE*, X509_LOOKUP_METHOD*)    {        // TODO:        return 0;    }    int X509_STORE_get_by_subject(X509_STORE_CTX*, int, X509_NAME*, X509_OBJECT*)    {        // TODO:        return SSL_SUCCESS;    }    X509_STORE* X509_STORE_new(void)    {        // TODO:        return 0;    }    char* SSL_alert_type_string_long(int)    {        // TODO:        return 0;    }    char* SSL_alert_desc_string_long(int)    {        // TODO:        return 0;    }    char* SSL_state_string_long(SSL*)    {        // TODO:        return 0;    }    void SSL_CTX_set_tmp_rsa_callback(SSL_CTX*, RSA*(*)(SSL*, int, int))    {        // TDOD:    }    long SSL_CTX_set_timeout(SSL_CTX*, long)    {        // TDOD:        return SSL_SUCCESS;    }    int SSL_CTX_use_certificate_chain_file(SSL_CTX*, const char*)    {        // TDOD:        return SSL_SUCCESS;    }    int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX*, const char*, int)    {        // TDOD:        return SSL_SUCCESS;    }    int SSL_set_rfd(SSL*, int)    {        return SSL_SUCCESS; // TODO:    }    int SSL_set_wfd(SSL*, int)    {        return SSL_SUCCESS; // TODO:    }    int SSL_want_read(SSL*)    {        return 0; // TODO:    }    int SSL_want_write(SSL*)    {        return 0; // TODO:    }    void SSL_set_shutdown(SSL*, int)    {        // TODO:    }    SSL_CIPHER* SSL_get_current_cipher(SSL*)    {        // TODO:        return 0;    }    char* SSL_CIPHER_description(SSL_CIPHER*, char*, int)    {        // TODO:        return 0;    }    // end stunnel needs} // extern "C"} // namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -