Skip to content

Commit 6783d0e

Browse files
committed
Optimized signature extraction process.
1 parent e5867df commit 6783d0e

3 files changed

Lines changed: 46 additions & 26 deletions

File tree

src/SetaPDF/Signer/SwisscomAIS/Batch.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ class SetaPDF_Signer_SwisscomAIS_Batch extends SetaPDF_Signer_SwisscomAIS_Abstra
3333
*/
3434
protected $_fieldName = 'Signature';
3535

36+
/**
37+
* The last signature/timestamp result.
38+
*
39+
* @var array
40+
*/
41+
protected $_signatures = array();
42+
3643
/**
3744
* Set the signature content length that will be used to reserve space for the final signature.
3845
*
@@ -90,6 +97,7 @@ public function getSignatureFieldName()
9097
*/
9198
public function sign(array $documents, $updateDss = false, $signatureProperties = array())
9299
{
100+
$this->_signatures = array();
93101
$digestMethod = $this->_getDigestMethod();
94102

95103
$data = array();
@@ -173,6 +181,8 @@ public function sign(array $documents, $updateDss = false, $signatureProperties
173181
$signature = $signatureData->Base64Signature->_;
174182
$no = $signatureData->WhichDocument;
175183

184+
$this->_signatures[$no] = $signature;
185+
176186
$documentData = $data[$no];
177187
/**
178188
* @var $signer SetaPDF_Signer
@@ -290,6 +300,8 @@ public function timestamp(array $documents, $updateDss = false)
290300
$timestamp = $timestampData->Timestamp->RFC3161TimeStampToken;
291301
$no = $timestampData->WhichDocument;
292302

303+
$this->_signatures[$no] = $timestamp;
304+
293305
$documentData = $data[$no];
294306
/**
295307
* @var $signer SetaPDF_Signer
@@ -312,4 +324,14 @@ public function timestamp(array $documents, $updateDss = false)
312324

313325
return true;
314326
}
327+
328+
/**
329+
* Get the last signatures/timestamps.
330+
*
331+
* @return array
332+
*/
333+
public function getSignatures()
334+
{
335+
return $this->_signatures;
336+
}
315337
}

src/SetaPDF/Signer/SwisscomAIS/Helper.php

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -30,37 +30,16 @@ static public function getSignatureData($signature)
3030
{
3131
if ($signature instanceof SetaPDF_Signer_SwisscomAIS_Batch) {
3232
$result = array();
33+
$signatures = $signature->getSignatures();
3334

34-
$lastResult = $signature->getLastResult();
35-
$signatures = $lastResult->SignResponse->SignatureObject->Other->SignatureObjects->ExtendedSignatureObject;
36-
if (!is_array($signatures)) {
37-
$signatures = array($signatures);
38-
}
39-
40-
foreach ($signatures AS $signatureData) {
41-
if (isset($signatureData->Timestamp->RFC3161TimeStampToken)) {
42-
$signature = $signatureData->Timestamp->RFC3161TimeStampToken;;
43-
} else {
44-
$signature = $signatureData->Base64Signature->_;
45-
}
46-
47-
$no = $signatureData->WhichDocument;
48-
35+
foreach ($signatures AS $no => $signature) {
4936
$result[$no] = self::_getSignatureData($signature);
5037
}
5138

5239
return $result;
5340

5441
} elseif ($signature instanceof SetaPDF_Signer_SwisscomAIS_Module) {
55-
$lastResult = $signature->getLastResult();
56-
// signature
57-
if (isset($lastResult->SignResponse->SignatureObject->Base64Signature)) {
58-
$signature = $lastResult->SignResponse->SignatureObject->Base64Signature->_;
59-
} elseif (isset($lastResult->SignResponse->SignatureObject->Timestamp->RFC3161TimeStampToken)) {
60-
$signature = $lastResult->SignResponse->SignatureObject->Timestamp->RFC3161TimeStampToken;
61-
} else {
62-
throw new InvalidArgumentException('Unable to get signature from module.');
63-
}
42+
$signature = $signature->getSignature();
6443
}
6544

6645
return self::_getSignatureData($signature);

src/SetaPDF/Signer/SwisscomAIS/Module.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ class SetaPDF_Signer_SwisscomAIS_Module extends SetaPDF_Signer_SwisscomAIS_Abstr
2121
SetaPDF_Signer_Signature_Module_ModuleInterface,
2222
SetaPDF_Signer_Timestamp_Module_ModuleInterface
2323
{
24+
/**
25+
* The last signature/timestamp result.
26+
*
27+
* @var string
28+
*/
29+
protected $_signature;
30+
2431
/**
2532
* Implementation of the createSignautre() method.
2633
*
@@ -82,7 +89,8 @@ public function createSignature($tmpPath)
8289
throw $exception;
8390
}
8491

85-
return $this->_lastResult->SignResponse->SignatureObject->Base64Signature->_;
92+
$this->_signature = $this->_lastResult->SignResponse->SignatureObject->Base64Signature->_;
93+
return $this->_signature;
8694
}
8795

8896
/**
@@ -137,6 +145,17 @@ public function createTimestamp($data)
137145
throw $exception;
138146
}
139147

140-
return $this->_lastResult->SignResponse->SignatureObject->Timestamp->RFC3161TimeStampToken;
148+
$this->_signature = $this->_lastResult->SignResponse->SignatureObject->Timestamp->RFC3161TimeStampToken;
149+
return $this->_signature;
150+
}
151+
152+
/**
153+
* Get the last signature/timestamp.
154+
*
155+
* @return string
156+
*/
157+
public function getSignature()
158+
{
159+
return $this->_signature;
141160
}
142161
}

0 commit comments

Comments
 (0)