SSO with Kerberos SSO(Single Sign On)是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的业务子系统。 Kerberos 协议主要用于计算机网络的身份鉴别(Authentication),其特点是用户只需输入一次身份验证信息就可以凭借此验证获得的票据(ticket-granting ticket)访问多个服务,即实现了 SSO。
AFSecurityPolicy 之 evaluateServerTrust 针对 TLS HandShake 中服务器下发的 `Certificate`,macOS/iOS 的 Security.framework 的 SecPolicy.h/SecTrust.h 中定义了证书校验信任评估的接口。调用 `SecTrustEvaluate` 对证书校验通过后,客户端需要基于对服务器的信任来建立凭证。
TLS握手协商流程解析 1.Hello 协商加密套件与密码套件2.客户端基于 Certificate 和 Server Key Exchange 计算对称密钥3.服务端基于 Client Key Exchange 计算对称密钥4.HTTP over TLS(HTTPs)
HTTPs握手流程抓包解析 TLS Handshake Flow:以下是访问 https://github.com 的 wireshark 抓包截图:C->S:Client Hello S->C:Server Hello S->C:Certificate, Server Key Exchange, Server Hello Done C->S:Client Key Change C->S:Change Cip
TLSPARAMS - Cipher Suites In SSL, the key exchange, symmetric encryption and MAC algorithm are all grouped together into a single aggregate notion called a cipher suite.
TLS Handshake Flow(extracts from RFCs) AbstractThe TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping(窃听), tampe
Mac/iPhone 多媒体(图片、音视频)处理 拍照充斥生活,“咔嚓”不绝于耳,捕捉流光溢彩,记录似水年华,定格美好回忆。 屏幕截图,扫描提取,即影即录即显;语音备忘,视频录制,绘声绘色绘影。 本文梳理汇聚了一批“声色”类应用,以满足日常多媒体处理及设计刚需。如何从 iPhone 导出照片和录制的视频应用Image Capture(图像捕捉)“图像捕捉”在数码相机或扫描仪与您的 Mac 电脑之间传输图像。当带有摄像头的兼容设备连接到电脑时,可
OmniOutliner:提纲挈领,纲举目张 OmniOutliner 是一个灵活的集创造、收集、组织信息为一体的软件,可以用来草案待办事项清单、建立日程、管理任务、跟踪费用、临堂笔记、日程安排等。基于 OmniOutliner 可建立一个由主标题跟下级观点构成的可扩展或折叠的多级别、多层次的文档构架。构思流于脑,蓝图诉诸手,壹引其纲,万目皆张。
Markdown 编辑器集锦 Markdown 编辑器:(1). Web APP: Classeur、Madoko;(2). MarkDown: Typora、FoldingText + Marked2;(3). NoteBook: OneNote、有道云笔记;
NSDictionary&NSMutableDictionary常用操作梳理 NSDictionary&NSMutableDictionary也是继数组和字符串外高频使用的OC基本操作类,今天抽空将OC字典类常用操作稍作整理,以便需要时能条件反射信手拈来,避免需要某个utility时,因为不知系统已经提供而陷入造轮子的尴尬。
NSString&NSMutableString常用操作梳理 上一篇梳理了NSArray&NSMutableArray常用操作,这次来梳理一下Objective-C中每天都要用到的字符串处理类——NSString。Objective-C中的NSString/NSMutableString类似MFC中的CString,封装了字符串的日常基本操作。1.创建初始化(Initialization&Creation)1.1 常量字符串...
NSArray&NSMutableArray常用操作梳理 几乎天天都在使用NSArray&NSMutableArray,今天抽空将OC数组类常用操作稍作整理,以便需要时能条件反射信手拈来,避免需要某个utility时,因为不知系统已经提供而陷入造轮子的尴尬。
Mac OS X访问Windows8共享文件 1.在Windows8高级共享设置中启用网络发现和文件共享。2.确保WinPC和Mac隶属同一工作组——WORKGROUP。2.1 在Windows8系统信息中查看所属工作组:2.2 在Mac OS X【系统偏好设置-网络-高级-WINS】中查看所属工作组:3.确保WinPC和Mac在同一局域网——192.168.199.*。3.1 WinPC命令行终端ipconf...
MultipeerConnectivity.framework框架 Multipeer Connectivity框架扩充的功能与利用AirDrop传输文件非常类似,可以将其看作AirDrop不能直接使用的补偿,代价是需要自己实现。FireChat和See You Around等近场聊天App和交互拍照神器拍咯App都是基于Multipeer Connectivity框架实现。另外,本文对MC可能存在的MitM攻击风险也有所提及。
iPhone/iOS开启个人热点的纵向适配小结 iPhone作为个人热点(Personal Hotspot)且有连接时(即双环上网),系统状态栏下面会多一行热点连接提示栏,纵向会下压20pt(statusBarFrame.size.height=40);当所有连接都断开时,热点栏消失,系统状态栏恢复到标准高度(statusBarFrame.size.height=20)。因此,针对矮屏iPhone4(s)需要预留足够余量,以避免个人热点栏将内容区域挤压出屏幕。另一方面,iOS7把整个屏幕高度(包括状态栏,不包括热点栏)都作为了视图控制器的有效高度。因此
iOS Provisioning Profile(Certificate)与Code Signing详解 关于开发证书配置(Certificates&Identifiers&Provisioning Profiles),相信做iOS开发的同学没少被折腾,本文将对相关概念做个系统的梳理。
iPhone屏幕尺寸、分辨率及适配 从初代iPhone3GS到现如今的iPhone6(+),屏幕尺寸、分辨率、像素密度都在在不断增大。如何适配不同的屏幕尺寸,使UI更加协调美观,这给iPhone/iOS应用开发者带来了挑战。本文结合个人在iOS UI开发和适配方面的粗浅经验,对常用屏幕适配相关因素做个梳理盘点,以备日后查阅。
resizableImageWithCapInsets实现登录按钮、胶囊tab按钮和聊天气泡贴图效果 使用stretchable或resizable来设置圆角按钮的背景贴图,当按钮尺寸发生改变时,背景贴图的圆角保持不变,中心部分进行必要伸缩来适应新的尺寸。
subversion版本控制 版本控制是管理信息修改的艺术,它一直是程序员最重要的工具,程序员经常会花时间作出小的修改,然后又在某一天取消了这些修改,想象一下一个开发者并行工作的团队 - 或许是同时工作在同一个文件!- 你就会明白为什么一个好的系统需要管理潜在的混乱。软件配置管理(SCM)是“系统化地定义软件项目工作和处理变化,以使项目保持其完整性”的实践活动。
Araxis Merge 基本配置及操作 1.Araxis Merge简介$129 / TRY FREE FOR 30 DAYSAdvanced 2 and 3-way file comparison (diff), merging and folder synchronization forWindows &Mac OS X.Merge is the visualfile comparison (diff)...
python字符串模板中的KeyError 由于新式的字符串Template对象的引进使得string 模块又重新活了过来,Template对象有两个方法:substitute()和safe_substitute()。python中string的Template类似C语言中printf中的,使用“${*}”声明变量(类似C语言中的"%*");紧跟substitute则类似printf的,必须一一对应,数量必须严格匹配。前者更为严谨,
P2P的原理和常见的实现方式 P2P的原理和常见的实现方式 为了项目的后期IM应用,最近在研究libjingle,中间看了也收集了很多资料,感慨网上很多资料要么太过于纠结协议(如STUN、ICE等)实现细节,要么中间有很多纰漏。最后去伪存真,归纳总结了一下,希望对以后的同行有些许帮助。如果有什么需要讨论或者指正的,欢迎留言或者邮件peakflys@gmail.com 一.P2P实现的原理首先先介绍一些基
JNI调用机制 JNI调用机制1.JNI简介Java Native Interface(JNI)是java本地调用接口,所谓的native就是调用c/c++的程序。java调用C语言的情况一般有三种:调用驱动。由于操作系统提供的驱动一般都是C接口,Java语言并不具备操作这些驱动的能力。对于计算量比较大,处理数据比较多的模块,java的效率没有C高,所以希望用C去完成。对于某些功能
Xcode操作流 1.Xcode IDE概览说明:从左到右,依次是“导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码编辑窗口(Standard/Primary Editor)”。边列(Gutter):显示行号和断点。 焦点列(Ribbon):灰色深度与代码嵌套深度相关:鼠标悬停可突出显示右侧相应代码块(Focus code blocks...
Mac OS X截图操作 为整个屏幕拍摄屏幕快照:shift+command+3;为所选部分拍摄屏幕快照:shift+command+4;为所选窗口拍摄屏幕快照:shift+command+4+space;以上保存到指定路径(默认桌面),若按下control则保存到剪贴板。
Android开发环境构建 1.adt-bundle-windows-x86-MAT(1)Eclipse:D:Android\adt-bundle-windows-x86-MAT\eclipse(免安装)(2)Android SDK:D:Android \adt-bundle-windows-x86-MAT\sdk 2.jdk1.7.0_45(1)下载路径:Java SE Developmen
VLAN原理详解 VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。
DMA描述符及映射 1.DMA通道DMA(Direct Memory Access)通道建立在设备和RAM之间,DMAC(DMA Controler)与设备I/O控制器相互作用共同实现数据传送。在PC中,DMA控制器位于主板上负责管理I/O总线的南桥上。典型的PC架构的数据通道示意图如下:在实现DMA传输时,由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。在DMA传输前,C
MIPS存储管理 在MIPS CPU里,你的程序中使用的地址绝对不会和芯片里的物理地址一样(有可能会很接近,但不会相同)。我们分别称为:程序地址和物理地址(Physical Address)。这里所讲的程序地址的含义同虚拟地址(Virtual Address)完全相同,不过不会牵扯到操作系统内存管理(进程)语境下的复杂性。MIPS CPU可以运行在两种特权级别上:用户态和核心态(R4000之后的MIPS CPU
802.1X协议的工作机制流程详解 802.1X协议的工作机制流程详解802.1X协议是一种基于端口的网络接入控制协议,“基于端口的网络接入控制”是指在局域网接入设备的端口这一级,对所接入的用户设备进行认证和控制。作为一个认证协议,802.1X在实现的过程中有很多重要的工作机制。下图显示了802.1X协议的基本原理:Supplicant发出一个连接请求(EPAoL,ExtensibleAuthentication Pro
PPPoE拨号流程 PPPoE(Pointto Point Protocol over Ethernet,基于以太网的点对点协议)的工作流程包含发现(Discovery)和会话(Session)两个阶段,发现阶段是无状态的,目的是获得PPPoE终端(在局端的ADSL设备上)的以太网MAC地址,并建立一个惟一的PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。
软件设计模式 故纸堆里翻出来的收藏博文,稍作整理转载以作备忘。--------------------------------------------------------------活用设计模式一、设计模式的隐喻武功套路是习武的门径。新手要一招一式地练习套路,烂熟于心之后,熟能生巧,在实战之中即可见招拆招、运用自如——此时习武之人已从“新手”成长为“好手”。“高手”则没有套路,实
从任务调度机制分析操作系统的实时性 什么是真正的实时操作系统做嵌入式系统开发有一段时间了,做过用于手机平台的嵌入式Linux,也接触过用于交换机、媒体网关平台的VxWorks。实际应用后回过头来看理论,才发现自己理解的肤浅,也发现CSDN上好多同学们都对实时、嵌入式这些概念似懂非懂。毕竟如果不做类似的产品,平时接触的机会很少,即使做嵌入式产品开发,基本也是只管调用Platform Team封装好的API。所以,在此总结一下这
Linux设备驱动模型概述 Linux设备驱动模型(一)-节能之初衷2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:(1)代码重复最小化。(2)提供诸如引用计数这样的统一机制。(3)可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。(4)可以将系统中的全部
Linux文件系统概述 Linux文件系统(一)——群居和一儒家和谐的思想不仅主导着我们的日常生活和社会关系,而且在Unix/Linux文件系统的设计中充分体现。先秦儒家以西周末年太史史伯提出的“和实生物,同则不继。”《国语·郑语》中,则对和谐思想做了进一步的完善和发展,把“和”作为处理人的身心关系、人际关系、群己关系、人与自然关系的根本法则,所谓“和也者,天下之达道也”。 “和”既是人伦关系的价值取向,又是万事万物
VxWorks/MIPS中断处理机制 在《中断处理》中,梳理了中断处理的一些通用框架和概念,下面我们来探讨一下VxWorks/MIPS具体平台下的中断处理机制。时钟中断作为最高优先级的中断,其处理不失一般性,可作为分析理解VxWorks中断处理机制的切入点。所谓“硬件搭台,软件唱戏”,在展开具体软件实现之前,先厘清既有的硬件资源支持,是本人一贯秉承的思维习惯。本文以VxWorks中的tick起源问题为引子,沿着“MIPS中断资源-
中断处理 1 轮询与中断外部设备与中央处理器交互一般有两种手段:轮询和中断。(1)轮询(Polling)很多I/O设备都有一个状态寄存器,用于描述设备当前的工作状态,每当设备状态发生改变时,设备将修改相应状态寄存器位。通过不断查询设备的状态寄存器,CPU就可以了解设备的状态,从而进行必要的I/O操作。为了节约CPU资源,查询工作往往不是连续的,而是定时进行。轮询方式具有简单、易实现、易控
VxWorks/MIPS运行期的gp重定位 引言在《VxWorks引导启动过程》和《VxWorks启动之romStart剖析》中都留下了这样一个疑问,那就是bootrom中compressedEntry()和vxWorks_rom(Compress)中usrEntry()这两个桩函数到底是用来干什么的呢?由于桩函数封装的代码只有寥寥数行,我们很容易分析透彻。除了对usrInit()的简单封装外,核心就是对gp寄存器的赋值操作,也
VxWorks组件技术 VxWorks组件技术的研究1.组件概述VxWorks的配置和裁剪是以组件为基本单位。组件是VxWorks相对独立和完整的一个功能模块,也是系统中最小的、可升级的单元,它通常不再包含子节点。VxWorks用CDF文件来描述系统中的组件。CDF(Common Data Format)称作通用数据格式文件,是一种用于存储数据、访问多维数据集的文件格式。CDF文件的后缀为.cdf,用
MIPS中的跳转/分支指令 本文节选自《See MIPS run2rd》/《MIPS体系结构透视》中的部分章节,结合个人理解,对部分译文有所改动。1.5.2 编址及内存访问1.5.4 程序员可见的流水线效果8.7.8 跳转, 分支和子程序调用指令
VxWorks启动之romStart剖析 0 引言在VxWorks BSP中,从romInit.s跳转到romStart()那一刻起,我们便开始从汇编乾坤大挪移到C的世界。作为VxWorks BSP中的第一个C函数,它的主要任务是清空内存(BOOT_COLD and BOOT_CLEAR),并将bootloader或VxWorks(如果压缩则先解压)拷贝重定位到RAM,最后将CPU执行权交给usrInit()。对于bootlo
虚拟内存地址VMA、装载内存地址LMA和位置无关代码PIC 1.链接地址对于链接器,一种普遍情景是由多个子程序来构建一个程序,并生成一个链接好的起始地址为0的输出程序,各个子程序通过重定位在大程序中确定位置。具体来说:利用第一遍扫描得到的数据,链接器将相似段合并,计算出各个段在输出地址空间中的大小和位置。第二遍扫描会利用第一遍扫描中收集到的信息来控制实际的链接过程。它会读取输入文件中的段的数据和重定位信息,并且进行符号解析与重定位。符号解析将为符号
Memory support in VxWorks 1 Main memory RAM configuration:Zeroed at power-up for cold-boot to prevent parity errors.Configured and enabled by ROM code at system power-up. 2 Cache memory RAM configuration:Usually disa
计算机存储设备 在嵌入式开发中,每天都在跟ROM/Flash、RAM/SDRAM打交道,还有那些默默无闻的片内SRAM和EEPROM。但是对SDR/DDR等概念的区分始终不是那么透彻,故网罗相关资料,系统整理了一下ROM/RAM等存储设备的概念。1存储设备1.1 存储设备概述存储设备是用于储存信息的设备或设备。通常是将信息数字化后再以利用电、磁或光学等方式的媒体加以存储。常见的存储设备
WNR3500L+TOMATO网络结构分析 WNR3500L+TOMATO网络结构分析前几个月入手了一个官翻的WNR3500L,此路由号称开源并对第三方固件支持是很吸引我的地方,开始先是刷了DD-WRT后来又换成TOMATO,在换成TOMATO后通过ssh连接到路由,ifconfig显示出了一大堆interface,除了熟悉的eth0,eht1,br0外,还多出vlan0,vlan1之类的,通过运行brctl show br0后,发
VxWorks引导启动过程 一 基本概念及引导概述1 bootloader/bootrom/bootstrapCPU上电经自复位的过程(由硬件时序逻辑决定的Power-On StrappingSequence)后,指令指针指向一个固定的地址(after-reset startingpoint)。这个固定地址因体系架构而异:在一个基于 ARM7TDMI core 的嵌入式系统中,系统在上电或复位时通常都从地址0x0
嵌入式系统 Boot Loader 技术内幕 嵌入式系统 BootLoader 技术内幕1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次:(1). 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loader 两大部分。(2). Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参
VxWorks网络设备的加载及协议栈初始化 一.MUX中间层 为了能够兼容更多的网络设备和网络协议,VxWorks操作系统专门在网络设备驱动程序和网络协议层之间增加了MUX接口层。网络设备驱动程序不关心用户通过何种网络协议访问设备,只需要将数据传递给MUX层,或者从MUX层获取需要发送的数据;同样,协议层中的协议也不需要关心用户使用何种网络设备,将数据发送给MUX层或者从MUX层读取数据即可。 MUX层位于数据链路层
嵌入式操作系统VxWorks中网络协议存储池原理及实现 嵌入式操作系统VxWorks中网络协议存储池原理及实现周卫东 蔺妍 刘利强(哈尔滨工程大学自动化学院,黑龙江 哈尔滨,150001) 摘 要 本文讨论了网络协议存储池的基本原理和在嵌入式操作系统中的实现方法。为在嵌入式系统中实现TCP/IP协议栈,提供了一种有效、简洁、可靠的缓冲区管理。关键词 VxWorks; mBlk; clBlk; 网络协议存储池 VxWor
VxWorks网络协议栈的MUX接口 VxWorks网络协议栈的MUX接口中国矿业大学 张晓华 李智涛徐钊 摘要 嵌入式系统网络协议栈的灵活性在应用上是一个重要的指标。介绍嵌入式操作系统VxWorks网络协议栈的MUX(Multiplexer)接口及其使用方法。关键词 VxWorks 网络协议栈 MUX VxWorks是美国Wind River System公司(风河公司)推出的一个运行在目标机上的高性能、可裁