BREW中的安全性网络编程

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/6510418 安全性的网络编程主要是通过SSL实现的,首先要创建创建SSLRoot,可用的根证书通常是常用的VeriSign 根证书。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/6510418

安全性的网络编程主要是通过SSL实现的,首先要创建创建SSLRoot,可用的根证书通常是常用的VeriSign 根证书。它们可以节省手持设备上的空间,并且仅保留一个副本,而不是在每个使用 SSL 的应用程序中都保留副本。手持设备仅包含常用根证书的一小部分,从而防止占用过多的空间。SSL的实现有两种方法,一种是面向socket的实现,另一种是面向http的实现及HTTPS。这里主要阐明怎样使用IWeb接口实现HTTPS的功能。

// defined in pMe

IWebOpts *piRoots; …   

if(ISHELL_CreateInstance(piShell, AEECLISD_SSLROOTCERTS, (void **)&piRoots) != SUCCESS){ }

然后发送root证书给服务器

// defined in App Structure

AEECallback  pcb;

IWeb        *pIWeb;

IWebResp    *pIWebResp;

// Create instance of IWeb

if(ISHELL_CreateInstance(piShell, AEECLISD_WEB, (void**)&pMe->pIWeb) !=

                         SUCCESS)

    goto failure;   

// Initialize callback

CALLBACK_Init(&pMe->pcb, (PFNNOTIFY)CheckSecureResp, pMe);

// First secure connection attempt

IWeb_GetResponse(pMe->pIWeb, (pMe->pIWeb, &pMe->pIWebResp, &pMe->pcb,

                 "https://brewx.qualcomm.com/developer/devexhome.jsp",

                  WEBOPT_HEADERHANDLER, HeaderHandlerFn,

                  WEBOPT_DEFAULT, pMe->piRoots,

                  WEBOPT_END));

同时,需要获得HTTPS的头信息,如果需要的话,还要提供登录等功能:

void Header(void* pNotifyData, const char* pszName, GetLine* pplVal) {

   HTTPSDemo* pMe = pNotifyData;

   if(STRBEGINS("WWW-authenticate:", pszName)) {

      if(pplVal) {

         AppendIDPswdHeader(pMe, pplVal, “user”, “pass”);        

      }

   }  

   if(STRBEGINS("Set-Cookie:", pszName)) {

      if(pplVal) {

         AppendCookieHeader(pMe, pplVal->psz);        

      }

   }  

}

现在,就可以顺利的建立https的连接了

// Create new IWeb transaction

if(pMe->pIWeb) {

   IWEB_Release(pMe->pIWeb);

   pMe->pIWeb = NULL;

}

if(ISHELL_CreateInstance(piShell, AEECLISD_WEB, (void**)&pMe->pIWeb) !=  SUCCESS)

    // handle failure   

// Initialize callback

CALLBACK_Cancel(&pMe->pcb);

CALLBACK_Init(&pMe->pcb, (PFNNOTIFY)CheckSecureResp, pMe);

// Try a successful attempt

IWEB_GetResponse(pMe->pIWeb, (pMe->pIWeb, &pMe->pIWebResp, &pMe->pcb,

      "https://brewx.qualcomm.com/developer/devexhome.jsp", WEBOPT_HEADER, pMe->buffer,

      WEBOPT_HEADERHANDLER, HeaderHandlerFn,WEBOPT_DEFAULTS, pMe->pIRoots,

      WEBOPT_END));

为了保证应用的健壮性,需要关注SSL中的错误处理:

WebOpt wo;

SSLInfo* pSSLInfo = NULL;

// Query for SSL webopt

IWEBRESP_GetOpt(pMe->pIWebResp, WEBOPT_SSL_SEC_INFO, 0, &wo);

// pointer to ssl info

pSSLInfo = (SSLInfo*)(wo.pVal);

// error values are held in pSSLInfo->nResult

另外,还可以通过X.509对SSL进行配置:

X509TrustOVerride TO;

TO.uCertID = 0;

TO.uOverrideBits = X509CHAIN_CERT_EXIPRED;

IWeb_GetResponse(pMe->pIWeb,(pMe->pIWeb,pMe->pWebResp,&pMe->CallBack,

"https://www.securesite.com",WEBOPT_SSL_ALLOWED_VERSION, SSL_VERSION_30,

       WEBOPT_X509_ROOT_CERT, pOurRoot, WEBOPT_X509_OVERRIDE, &TO,

       WEBOPT_DEFAULTS, pMe->pIRoots, WEBOPT_END));

对于银行类应用,或者证券交易类应用,一般会使用自定义的证书,示例如下:

IFileMgr*  pIFileMgr;

IFile*     pIFile;

WebOpt     apwoz;

if(ISHELL_CreateInstance(piShell, AEECLSID_FILEMGR, &pIFileMgr)) !=SUCCESS)

        goto Failure;

pIFile = IFILEMGR_OpenFile(pIFileMgr, “myCert.cer”, _OFM_READ);

IFILE_Read(pIFile, buffer, sizeof(buffer));

apwoz.nID = WEBOPT_X509_ROOT_CERT;

apwoz.pVal = buffer;

IWEB_AddOpt(pMe->pIWeb, apwoz);

IFILE_Release(pIFile);

IFILEMGR_Release(pIFileMgr);

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wireless_com/archive/2010/09/29/5914117.aspx

目录
相关文章
|
1月前
|
安全 算法 网络安全
无线网络中的WEP协议及其安全性问题
无线网络中的WEP协议及其安全性问题
62 0
|
4月前
|
安全 Java 网络安全
Java网络编程:高级应用与安全性探讨
Java网络编程:高级应用与安全性探讨
|
3月前
|
安全 Java 网络安全
Java网络编程:高级应用与安全性探讨
Java网络编程:高级应用与安全性探讨
|
3月前
|
安全 NoSQL Java
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
|
5月前
【专栏】子网划分在现代网络工程中的重要性,包括管理网络、增强安全性和优化IP地址使用
【4月更文挑战第28天】本文介绍了子网划分在现代网络工程中的重要性,包括管理网络、增强安全性和优化IP地址使用。文章阐述了子网划分的原理,如通过子网掩码划分广播域以减少网络风暴。接着,详细说明了子网划分的方法,涉及需求分析、选择子网掩码、计算子网及广播地址等步骤,并提到了VLSM和CIDR等高效技术。最后,通过实例展示了如何进行子网划分,强调实践对于掌握这项技能的关键作用。学习子网划分能提升网络管理和设计能力。
166 4
|
5月前
|
运维 安全 网络架构
【专栏】NAT技术是连接私有网络与互联网的关键,缓解IPv4地址短缺,增强安全性和管理性
【4月更文挑战第28天】NAT技术是连接私有网络与互联网的关键,缓解IPv4地址短缺,增强安全性和管理性。本文阐述了五大NAT类型:全锥形NAT(安全低,利于P2P)、限制锥形NAT(增加安全性)、端口限制锥形NAT(更安全,可能影响协议)、对称NAT(高安全,可能导致兼容性问题)和动态NAT(公网IP有限时适用)。选择NAT类型需考虑安全性、通信模式、IP地址数量和设备兼容性,以确保网络高效、安全运行。
535 1
|
5月前
|
安全
哪些因素影响网络交易商品(服务)的安全性?
【5月更文挑战第14天】哪些因素影响网络交易商品(服务)的安全性?
50 0
|
Rust 监控 并行计算
用Rust构建电脑网络监控软件:内存安全性和多线程编程
在当今数字化世界中,网络安全一直是至关重要的问题。电脑网络监控软件是确保网络系统安全和高效运行的关键工具。然而,编写电脑网络监控软件需要处理复杂的多线程编程和内存安全性问题。Rust编程语言提供了一种强大的方式来构建安全的电脑网络监控软件,同时避免了许多常见的编程错误。
339 0
|
网络协议 安全 网络安全
《计算机系统与网络安全》 第二章 计算机网络基础与TCPIP协议安全性
《计算机系统与网络安全》 第二章 计算机网络基础与TCPIP协议安全性
92 0
|
网络安全 数据安全/隐私保护
访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性
访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性
142 0
访问控制列表与SSH结合使用,为网络设备保驾护航,提高安全性

热门文章

最新文章