Tag: 数字签名

使用带有Swift的PDFKit向PDF添加签名

去年WWDC17期间,Apple在iOS上引入了PDFKit。 与Adobe PDF 1.7版相比,这有了一个很好的框架,使使用PDF文件格式的工作变得更加容易。 因此,我们创建了一个了不起的框架,该框架为您提供了PDF的功能,而您无需阅读所有这些详细信息。 我们阅读了它,所以您不必一定没事。 使用PDFKit,有3种类型的类别类别-视图,文档和支持。 PDFView将成为我们包含PDFDocument的容器视图。 在文档或PDFDocument上,它将保留页面和注释。 PDF上的注释基本上是页面上的交互式元素。 注释将诸如笔记,声音或电影之类的对象与PDF文档页面上的位置相关联,或提供了一种通过鼠标和键盘与用户进行交互的方式。 借助PDFKit,Apple打包了这些类型以使我们可以访问。 那么,我们如何添加签名? 向PDFPage添加PDFAnnotation,一切正常,对吗? PDFAnnotation具有子类型,因此在特定情况下应使用哪一种。 有两个引人注意的地方:PDFAnnotationSubtype和PDFAnnotationWidgetSubtype。 如果单击它们,您会注意到有一个“签名”注释小部件。 凉! 让我们使用它。 除此以外,没有关于如何使用它的文档,也没有任何示例代码。 (如果您知道,请告诉我!) 在Adobe的PDF规范中(是的,一个苹果公司说我们不必阅读)概述了PDF的不同注释类型。 通过研究,我发现了橡皮图章注释。 橡皮图章注释(PDF 1.3)显示的文本或图形看起来像是在橡皮图章上被盖章的文本。 好吧,让我们做一些我们知道会起作用的事情。 我们为什么不只将签名的UIImage作为图章注释添加到PDF页面! 我们将使用dehili的TouchDraw添加一个视图,该视图将捕获我们签名的笔触。 这个框架有一个很好的方法可以将图形提取到UIImage中,从而从图像上下文中获取笔触。

在Swift中解码ASN.1 DER序列

我正在使用的API返回使用椭圆曲线数字签名算法(ECDSA)签名的敏感数据。 签名本身是一个ASN.1 DER序列-因为我在网上找不到Swift或Objective-C DER解析器,所以我需要自己编写。 ECDSA签名可以分为两个整数。 我们可以使用openssl检查此整数。 $ echo -en“ 3045022100a85e76ff1f18e52d4eccde774aa46e3ec2891068ebef89a7cb6e0653eb0dffb202204cd76e19bcb18d76c13af0ea061117cbd6d3c8fbd1d9fc9aac265266371c3a3f” xxd -pu -r>签名 $ openssl asn1parse-通知der-输入签名 。 0:d = 0。 hl = 2 l =。 69弊:SEQUENCE。 。 2:d = 1。 hl = 2 l =。 33 prim:整数。 :A85E76FF1F18E52D4ECCDE774AA46E3EC2891068EBEF89A7CB6E0653EB0DFFB2 。 37:d = 1。 hl = 2 l =。 32素数:整数。 :4CD76E19BCB18D76C13AF0EA061117CBD6D3C8FBD1D9FC9AAC265266371C3A3F 如您所见,这两个整数在签名的十六进制编码版本中可见,但是我们如何使用Swift将它们取出呢? 维基百科上有一些DER编码数据的很好的例子。 事实证明,整个十六进制字符串都位于类型-长度-值三元组中。 这意味着数据所保存的每个可变长度值都以其类型和长度为开头,每个值都为1个字节。 我发现此页面描述了ASN1解码器应该期望的类型标签。 让我们将其表示为一个enum […]