安全性的网络编程主要是通过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);

转载于:https://blog.51cto.com/wirelesscao/631893

《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之76——BREW中的安全性网络编程...相关推荐

  1. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之27---BREW 应用定价

    运营商在向移动用户提供移动增值服务的同时, 应确定该服务定价模式即用户的付费方式.在定价的时候,和一般的产品定价类似,一种服务的价格是由为用户创造的价值和用户可获得的替代选择决定的.不同的是,移动增值 ...

  2. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之36---支持BREW的手机

    目前,支持BREW功能的手机还主要是CDMA网络的用户终端,但随着3G的到来以及中国电信开始经营基于BREW的移动增值业务,支持BREW功能的手机会越来越多. 早在2003年,Nokia就推出了自己首 ...

  3. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之26---礼品卡支付...

    除了用户通过BREW中的移动商店购买应用之外,其他丰富的付费方式(实际上是指购买方式)无疑能够提高移动增值业务的市场穿透能力.在零售行业中,礼品卡或者购物券是非常普遍的促销方式(图6-8所示). 90 ...

  4. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之22---BDS的分发流程...

    BREW通过一个安全的企业外联网站点使运营商对应用的选择.管理.定价.用户的使用跟踪和计费拥有完全的控制权.从商业模式上来讲,BREW应用的分发主要有两种: 一种是运营商控制的应用的分发,另一种是典型 ...

  5. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之6---移动增值业务概述

    移动增值业务(Mobile Added Value Service)就是在移动通信网上开发运行除了语音等基本业务以外的服务类型.目前国际上通常把移动增值业务概括为两大类,即移动话音增值业务和移动数据增 ...

  6. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之9---移动增值业务产业链

    移动增值业务领域中的产业链突破了传统语音增值业务中移动运营商的限制,其产业链扩展至:设备制造商.运营商.业务运营商(SP).内容提供商(CP)和最终用户等市场主体,逐步创造多方共赢的商业模式: (1) ...

  7. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之11---什么是BREW

    BREW作为动词,有酿成.策划.酝酿的含义:作为名词,它的意思是酿造的饮料.而这里是指Binary Runtime Environment for Wireless 的缩写. BINARY 是指二进制 ...

  8. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之44---QChat 技术...

    从本质上说,POC/PTT技术是把VoIP技术应用于移动终端,将原来由运营商承担的部分VoIP功能转移到手机终端来实现.因此,POC可参照传统的网络分层概念.其中,POC系统中的移动信道层.应用层以及 ...

  9. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之70---面向照相机的开发...

    这里主要讲述一下面向手机中照相机的应用开发.ICamera能够使应用访问手机中的照相机传感器,配置照相机的快照和录像模式,并提供多种的记录和编码的方式(图14-9). 图14-9:ICamera的体系 ...

  10. 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之8---Symbian,Windows Mobile,Palm,Linux,J2ME, BREW

    Symbian Symbian OS是专门为手机开发的操作系统,所以在手机常用的功能方面进行了加强和扩展,同时也加入了一些PDA的功能,比如所个人信息管理,多媒体功能,但是并不很完善,和微软的Wind ...

最新文章

  1. OpenCV(项目)车牌识别1 -- 车牌提取(形态学)
  2. 博士后工作站来了!智源研究院获得正式授牌
  3. 从大学入门到研究生拿大厂offer,必须看的数据结构与算法书籍推荐,不好不推荐!
  4. php框架 css文件引用,yii框架中怎么引入css文件
  5. php嵌套查询mysql语句_mysql 查询嵌套
  6. 生成树协议实验报告_多生成树协议MSTP
  7. 关于队列(数组队列,链表队列,循环队列)
  8. Effective C# Item33:限制类型的可见性
  9. Java Swing 开发之JTable中在添加组件(JCheckBox)
  10. 学生信息管理系统[有软件截图]
  11. 迅雷精简版 for Mac!附精简教程!
  12. [Mac]如何卸载McAfee
  13. 四参数拟合曲线_Origin进行体外释药规律的拟合
  14. 使用Canvas绘制简单工程符号(续)
  15. Element-UI下拉框el-select实现拼音搜索
  16. c++ 中文字符的 setw 格式化打印问题
  17. 计算机桌面文字重影,为什么电脑屏幕上的字老是重影,该怎么调?
  18. CQOI2007]涂色paint(BZOJ 1260) 区间动态规划 DP 逆向思维
  19. Linux第二章:6.Xftp安装教程、使用Xftp进行远程文件传输
  20. 一台主机 两台显示器 就可以两个用户同时使用电脑

热门文章

  1. python爬虫爬图片教程_Python爬虫入门教程 5-100 27270图片爬取
  2. POJ2528线段树段更新逆序异或(广告牌)
  3. LA3135简单多路归并(优先队列)
  4. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质示例 )
  5. 【Groovy】编译时元编程 ( 编译时处理 ASTTransformation 接口实现 | 配置 ASTTransformation )
  6. 【Groovy】Groovy 脚本调用 ( Groovy 脚本中的作用域 | 本地作用域 | 绑定作用域 )
  7. 【Android 逆向】APK 文件格式 ( Android 应用安装 | Zip 文件格式 | 使用 Python 代码提取 APK 文件 )
  8. 【Flutter】底部导航栏页面框架 ( BottomNavigationBar 底部导航栏 | PageView 滑动页面 | 底部导航与滑动页面关联操作 )
  9. 【组合数学】非降路径问题 ( 非降路径问题概要说明 | 非降路径问题基本模型 | 非降路径问题拓展模型 1 非原点起点 | 非降路径问题拓展模型 2 有途经点 )
  10. 【计算理论】正则语言 ( 正则表达式原子定义 | 正则表达式递归定义 | 正则表达式语言原子定义 | 正则表达式语言结构归纳 | 正则表达式语言示例 | 根据正则表达式构造自动机 )