小编h2o*_*dev的帖子

不使用 :scope 的 querySelectorAll 根元素

假设我们有这样的 HTML 结构:

<div id='test-div'>
    <div class='random-class-1'>
        <div class='useless-element-1'>
        </div>
        <div class='useless-element-2'>
        </div>
        <p>Just a paragraph, and useless</p>
    </div>
    <div class='random-class-2'>
        <div class='useless-element-3'>
        </div>
        <div class='useless-element-4'>
        </div>
        <div class='useless-element-5'>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我需要选择第一个 DIV 中的所有子级“DIV 元素”(不是孙子级)(在本例中为 id='test-div'),不是从文档而是从元素 (div) 本身。

所以,我不想使用下面的“查询”,因为我已经选择了元素 DIV [object HTMLDivElement]:

// I don't want to use this query
var children = document.querySelectorAll("div > div");
Run Code Online (Sandbox Code Playgroud)

只是一个例子来实现这一点(https://jsfiddle.net/t4gxt65k/):

// I already have selected DIV element 
var el = document.getElementById("test-div")
// OR var el = document.querySelectorAll("#test-div");

var children = …
Run Code Online (Sandbox Code Playgroud)

javascript children selectors-api

6
推荐指数
2
解决办法
3224
查看次数

使用 PHP 将时间戳添加到 PDF 签名

使用 tcpdf 库,我可以向 pdf 添加签名,但时间戳(RFC3161)尚未在该库(applyTSA)中实现,我需要此功能。

根据 ISO 32000-1:2008:

作为无符号属性的时间戳信息 (PDF 1.6):时间戳令牌应符合 RFC3161,并应按照 RFC3161 附录 A 中的描述进行计算并嵌入到 PKCS#7 对象中。时间戳的具体处理及其处理留给特定的签名处理程序来定义。

来自 RFC3161 附录 A

以下对象标识符标识签名时间戳属性:

id-aa-timeStampToken 对象标识符 ::= { iso(1) 成员主体(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2) 14 }

Signature 时间戳属性值具有 ASN.1 类型 SignatureTimeStampToken:

SignatureTimeStampToken ::= TimeStampToken

TimeStampToken 中的 messageImprint 字段的值应为带有时间戳的签名数据的 SignerInfo 中的签名字段值的哈希值。

使用 openssl 生成时间戳非常容易,但我不清楚如何将其嵌入到 PKCS#7 对象中。我的问题是:

  1. 如何在我的签名中添加时间戳?
  2. 或者,有任何开源库(php 或其他)具有此功能?

举个例子将不胜感激

php pdf timestamp trusted-timestamp rfc3161

5
推荐指数
0
解决办法
2814
查看次数

PDF电子签名ByteRange

我正在处理一些 PDF 文件,但没有找到对此处发布的问题的明确解释。在经过数字签名的 PDF 文件上,我们有以下临时签名:

<< /Type /Sig /Filter /Adobe.PPKLite /SubFilter /adbe.pkcs7.detached/ByteRange[O1 L1 O2 L2]                  /Contents<0000....0000>
Run Code Online (Sandbox Code Playgroud)

O1 = 偏移 1(零)

L1 = 长度1(签名前的内容长度)

O2 = 偏移量 2(L1 + 签名长度)

L2 = 长度2(签名后的内容长度)

我有这些问题:

1 - 要“散列”的内容应包含“<”和“>”(在签名占位符 0000....0000 的开头和结尾)?

2 - 签名长度是11742?这包括“<”和“>”吗?

3 - 在ByteRange上,第二个参数是从文件开头到“<”(签名占位符 0000....0000 之前)的长度还是包括它?与上一个问题相同,ByteRange上的最后一个参数是否包含“>”字符(在签名占位符 0000....0000 的末尾)?

如果有人可以将我重定向到有关此的技术手册,这将非常有帮助。

pdf structure signature

3
推荐指数
1
解决办法
3245
查看次数

插入多个数字批准签名而不会使前一个无效

要签署文档,我们必须将用户签名(转换为 PNG 图像)放在文档上,然后对该 PDF 进行数字签名。根据 PDF 文档,只有第一个需要“DocMDP”选项。一切看起来都很好,直到我放置第二个签名(批准签名)。这使第一个签名无效,因为文档已更改,而不是签名字节数中的数据,而是由于增量更新(已添加图像)。

问题是:

如何添加多个数字签名(批准签名)而不会使前一个无效?

增量更新时如何处理镜像签名?

以下是增量更新期间的 PDF 结构示例。(只是一个例子来显示里面的对象。

%PDF-1.7

1 0 obj
<</Type /Pages
/Kids [ 3 0 R]
/Count 1
/MediaBox [0 0 595.28 841.89]
>>
endobj

3 0 obj
<</Type /Page
/Parent 1 0 R
/MediaBox [0 0 595.28 841.89]
/Rotate 0
/Resources 2 0 R
/Group <</Type /Group /S /Transparency /CS /DeviceRGB>>
/Contents [4 0 R 5 0 R] >>
endobj

4 0 obj
<</Length 44>>
stream
BT /F1 24 …
Run Code Online (Sandbox Code Playgroud)

pdf digital-signature

3
推荐指数
1
解决办法
743
查看次数

Paypal API v2响应指定的资源不存在

我正在尝试/捕获服务器端的资金,但收到错误消息“指定的资源不存在”。

我已将配置为沙箱nad EUR货币的Paypal脚本放置:

<script src='https://www.paypal.com/sdk/js?client-id=sb&currency=EUR&commit=true&disable-funding=card,credit' ></script>
Run Code Online (Sandbox Code Playgroud)

然后,如下所述配置按钮

paypal.Buttons( {
       createOrder : function( data, actions ) {
                     return actions.order.create( {
                            "intent"         : "CAPTURE",
                            "purchase_units" : [ { amount : { "value" : cart-total-amount,
                                                              "currency_code" : "EUR",
                                                              } } ] } );
                            },
       onApprove: function( data, actions ) {
                   /*
                   MY SERVER API
                   */
                   _this.api( "my-server-api-url/cart/submit/",
                               { "items" : _this.cart.items,
                                 "invoice" : _this.cart.invoice,
                                 "paymentmethod" : "paypal",
                                 "orderid"  : data.orderID,
                                 "payerid" : data.payerID,
                                  }, function( data ) {
                                 alert( data.message ); …
Run Code Online (Sandbox Code Playgroud)

php paypal paypal-sandbox

3
推荐指数
1
解决办法
903
查看次数