HDCP(High -bandwidth Digital Content Protection) ,用以保护数字内容。

HDCP在2.0以前的版本都主要是配合HDMI等需要有线连接的设备的,随着网络的发展,数字内容的保护需求明显增加,为了新的应用的需要,HDCP2.0出现了,它只是需要TCP/IP连接即可,这样HDCP就可以应用在更多的场合。

HDCP由SansaSecurity授权,拿到库和key文件后导入项目即可,因为是批量授权,key可以通用。

Android 4.2 在WIFI Display下添加了HDCP的接口,开发者若需要支持HDCP,则需要按照接口生成名为libstagefright_hdcp.的系统动态库。然后WifiDisplay 会透过mediaplayerservice提供的接口来访问。

其中初始化,包括AKE,LC,SKE的部分调用接口initAsync ,然后是数据的加解密接口,及结束HDCP的接口。

HDCP设备间的连接的建立, 需要通过复杂的验证过程,其流程大致如图:

1、建立tcp的套接字,等待source端来connect。端口号在WiFiDisplay的M3阶段透过字串 "wfd_content_protection: HDCP2.0 port=35000\r\n"告诉了source端。 当两端的tcp连接成功创建后,等待source端的验证动作。

2、HDCP设备相互验证分为三步进行,AKE(Authentication and Key Exchange)是验证的第一步。它主要的操作就是source端来验证HDCP Receiver的public key certificate(包括Receiver ID 和RSA public key)。它们之间会交换Km。

3、LC(Locality Check ),当在AKE阶段,sink端计算出的H‘和source端计算的H相等时,source端会继续下部验证,即LC,否则会终止TCP连接。LC通过一个消息对的时间来确定是不是两个相对较近的设备在连接,如果一个消息对的时间超过了7ms,则表示locality check 失败。

4、SKE(Session Key Exchange),在成功完成了前几步之后,source端和sink端就可以开始session key(ks)的交换。

5、ks成功后,source就完成了传输音视频数据传输前的所有准备,传输音视频数据时,source端会拿Ks加密,sink端会拿Ks解密。

加解密使用AES算法。

Android HDCP开发小结相关推荐

  1. Android USB开发小结:host模式与accessory模式

    很早之前就想对Android USB的两种模式作个小结,但是一直没有空去搞,毕竟USB这块应该属于冷门方向,并且应用层能够做的比较少也很简单.最近刚好在做大疆无人机的二次开发,想着对USB连接检测这块 ...

  2. 组播屏幕共享、Android屏幕共享开发小结

               因近期项目需要,实现了一套多种网络拓扑.多种应用场景的多平台屏幕共享系统,包括组播屏幕共享.服务器转发屏幕共享.P2P屏幕共享,暂支持Windows屏幕共享给Windows,Wi ...

  3. Android 即时通讯开发小结(二)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 相关推荐阅读:. Android即时通讯 ...

  4. Android 即时通讯开发小结(一)

    本文将基于 IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 客户端架构 作为一个 IM 软件,最重要的一个特性就是保证消息的达到率和实时性. ...

  5. Android开发小结Part2:目录

    2019独角兽企业重金招聘Python工程师标准>>> Android开发小结Part1:绪论 Android开发小结Part2:目录 Android开发小结Part3:Intent ...

  6. Android硬件开发、机顶盒开发工具小结

    Android机顶盒开发工具小结 https://www.csdn.net/tags/MtTaMg1sOTEwNjM2LWJsb2cO0O0O.html

  7. android随机运算器开发小结1

    想到第一天自己写了一个简单的四则运算程序的情景:我便想起了引起我们不断迭代开发的程序背景是:二柱子接受老师安排的给孩子出题的任务,每次需要给孩子设置出题任务,生成相应的小学运算题目,所以我们面对的需求 ...

  8. [转]Android敏捷开发指南

    原文地址:http://www.apkbus.com/android-72730-1-1.html 本文紧密结合移动开发方法与技术,围绕Android平台的开发探讨提供更高质量移动产品的解决方案.作者 ...

  9. 《Android应用开发入门经典(第3版)》——导读

    本节书摘来自异步社区<Android应用开发入门经典(第3版)>一书中的目录,作者 [美]Carmen Delessio , Lauren Darcey , Shane Conder,更多 ...

最新文章

  1. wp8对json的处理
  2. 单元格中指定内容标红_按照指定单元格内容进行拆分,想怎么拆就怎么拆
  3. Java 读取某个目录下所有文件、文件夹
  4. 多线程编程(7) - 从 CreateThread 说起[续五]
  5. 接口自动化测试框架搭建(10、运行特定测试case,生成报告发送邮件)--python+HTMLTestRunnerCN+request+unittest+mock+db
  6. 如何在Windows下像Mac一样优雅开发
  7. Mac电脑使用svn下载版本
  8. QT+SQL Server实现车辆管理系统 -代码具体实现
  9. 生信软件的下载与使用方法总结
  10. html css 窗口样式,简单的css样式网页
  11. 小学生的游戏 FZU - 1575
  12. chm打开秒退_用熊猫看书来看chm,却自动退出,什么原因?
  13. CAD二次开发 根据多段线Polyline产生的线段Line需要做进一步处理才可以使用
  14. 腾讯云通信WebIM事件回调的坑~
  15. Codeforces 1646C Factorials and Powers of Two
  16. Java基础知识之静态
  17. 一文读懂自动驾驶中常用的定位算法之NDT点云配准算法
  18. 算法 2.二进制加法
  19. 墨西哥萨卡特卡斯将举行GNOME GUADEC 2020 峰会
  20. 数据分析入门学习指南|零基础小白必看

热门文章

  1. 英语的加减乘除怎么计算机,英语加减乘除运算的表示方法
  2. PHP函数implode()与explode()的用法
  3. Certificate verification failed: The certificate is NOT trusted.解决方案
  4. DIR染料标记外泌体鼠体实验
  5. 使用PptxGenJS框架自定义模板生成PPT文件(1)
  6. 利用tushare接口获取前一日新闻联播文字稿
  7. 小程序通过扫码进入时获取二维码中的参数(采坑)
  8. 事件的独立与常见的几种分布
  9. 微信小程序之服装购物商城(含源码+论文+答辩PPT等)
  10. NTC 测取温度(方法一)