summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9321.txt
blob: fec9c3cc96e1ed7e2645d91077c793d6ab68cc6c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
Independent Submission                                      S. Santesson
Request for Comments: 9321                               IDsec Solutions
Category: Informational                                       R. Housley
ISSN: 2070-1721                                           Vigil Security
                                                            October 2022


                       Signature Validation Token

Abstract

   Electronic signatures have a limited lifespan with respect to the
   time period that they can be validated and determined to be
   authentic.  The Signature Validation Token (SVT) defined in this
   specification provides evidence that asserts the validity of an
   electronic signature.  The SVT is provided by a trusted authority,
   which asserts that a particular signature was successfully validated
   according to defined procedures at a certain time.  Any future
   validation of that electronic signature can be satisfied by
   validating the SVT without any need to also validate the original
   electronic signature or the associated digital certificates.  The SVT
   supports electronic signatures in Cryptographic Message Syntax (CMS),
   XML, PDF, and JSON documents.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   This is a contribution to the RFC Series, independently of any other
   RFC stream.  The RFC Editor has chosen to publish this document at
   its discretion and makes no statement about its value for
   implementation or deployment.  Documents approved for publication by
   the RFC Editor are not candidates for any level of Internet Standard;
   see Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc9321.

Copyright Notice

   Copyright (c) 2022 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.

Table of Contents

   1.  Introduction
   2.  Definitions
   3.  Signature Validation Token
     3.1.  Signature Validation Token Function
     3.2.  Signature Validation Token Syntax
       3.2.1.  Data Types
       3.2.2.  Signature Validation Token JWT Claims
       3.2.3.  SigValidation Object Class
       3.2.4.  Signature Claims Object Class
       3.2.5.  SigReference Claims Object Class
       3.2.6.  SignedDataReference Claims Object Class
       3.2.7.  PolicyValidation Claims Object Class
       3.2.8.  TimeValidation Claims Object Class
       3.2.9.  CertReference Claims Object Class
       3.2.10. SVT JOSE Header
   4.  Profiles
     4.1.  Defined Profiles
   5.  Signature Verification with an SVT
   6.  IANA Considerations
     6.1.  Claim Names Registration
       6.1.1.  Registry Contents
     6.2.  Header Parameter Names Registration
       6.2.1.  Registry Contents
   7.  Security Considerations
     7.1.  Level of Reliance
     7.2.  Aging Algorithms
   8.  References
     8.1.  Normative References
     8.2.  Informative References
   Appendix A.  XML Signature Profile
     A.1.  Notation
       A.1.1.  References to XML Elements from XML Schemas
     A.2.  SVT in XML Documents
       A.2.1.  SignatureValidationToken Signature Property
       A.2.2.  Multiple SVTs in an XML Signature
     A.3.  XML Signature SVT Claims
       A.3.1.  XML Profile Identifier
       A.3.2.  XML Signature Reference Data
       A.3.3.  XML Signed Data Reference Data
       A.3.4.  XML Signer Certificate References
     A.4.  JOSE Header
       A.4.1.  SVT Signing Key Reference
   Appendix B.  PDF Signature Profile
     B.1.  SVTs in PDF Documents
       B.1.1.  SVT Extension to Timestamp Tokens
     B.2.  PDF Signature SVT Claims
       B.2.1.  PDF Profile Identifier
       B.2.2.  PDF Signature Reference Data
       B.2.3.  PDF Signed Data Reference Data
       B.2.4.  PDF Signer Certificate References
     B.3.  JOSE Header
       B.3.1.  SVT Signing Key Reference
   Appendix C.  JWS Profile
     C.1.  SVT in JWS
       C.1.1.  "svt" Header Parameter
       C.1.2.  Multiple SVTs in a JWS Signature
     C.2.  JWS Signature SVT Claims
       C.2.1.  JWS Profile Identifier
       C.2.2.  JWS Signature Reference Data
       C.2.3.  JWS Signed Data Reference Data
       C.2.4.  JWS Signer Certificate References
     C.3.  SVT JOSE Header
       C.3.1.  SVT Signing Key Reference
   Appendix D.  Schemas
     D.1.  Concise Data Definition Language (CDDL)
     D.2.  JSON Schema
   Appendix E.  Examples
   Authors' Addresses

1.  Introduction

   Electronic signatures have a limited lifespan regarding when they can
   be validated and determined to be authentic.  Many factors make it
   more difficult to validate electronic signatures over time.  For
   example:

   *  Trusted information about the validity of the certificate
      containing the signer's public key is not available.

   *  Trusted information about the time when the signature was actually
      created is not available.

   *  Algorithms used to create the electronic signature may no longer
      be considered secure at the time of validation and may therefore
      no longer be available in software libraries.

   *  Services necessary to validate the signature are no longer
      available at the time of validation.

   *  Supporting evidence such as certification authority (CA)
      certificates, Online Certificate Status Protocol (OCSP) responses,
      Certificate Revocation Lists (CRLs), or timestamps is not
      available or can't be validated.

   The challenges to validation of an electronic signature increase over
   time, and eventually it may simply be impossible to verify the
   signature with a sufficient level of assurance.

   Existing standards, such as the ETSI XAdES [XADES] profile for XML
   signatures [XMLDSIG11], ETSI PAdES [PADES] profile for PDF signatures
   [ISOPDF2], and ETSI CAdES [CADES] profile for CMS signatures
   [RFC5652], can be used to extend the time within which a signature
   can be validated at the cost of significant complexity, which
   involves storing and validating significant amounts of external
   evidence data such as revocation data, signature time stamps, and
   archival time stamps.

   The Signature Validation Token (SVT) defined in this specification
   takes a trusted signature validation process as an input and
   preserves the validation result for the associated signature and
   signed document.  The SVT asserts that a particular electronic
   signature was successfully validated by a trusted authority according
   to defined procedures at a certain time.  Those procedures MUST
   include checks that the signature match the signed document, checks
   that the signature can be validated by the signing certificate, and
   checks that the signing certificate pass certificate path validation
   [RFC5280].  Those procedures MAY also include checks associated with
   a particular trust policy such as that an acceptable certificate
   policy [RFC5280] [RFC3647] was used to issue the signer's certificate
   and checks that an acceptable signature policy was used by the signer
   [RFC3125].

   Once the SVT is issued by a trusted authority, any future validation
   of that electronic signature can be satisfied by validating the SVT
   without any need to also revalidate the original electronic
   signature.

   As the SVT is used to preserve validation results obtained through
   applying existing standards for signature validation, it is
   complementary to and not a replacement for such standards, including
   the ETSI standards for long-term validation listed above.  The SVT
   does, however, have the potentially positive effect that it may
   significantly reduce the need to apply complex long-term validation
   and preservation techniques for signature validation if an SVT is
   issued and applied to the signed document at an early stage where the
   signature can be validated without support of large amounts of
   external evidence.  The use of SVTs may therefore drastically reduce
   the complexity of revalidation of old archived electronic signatures.

   The SVT can be signed with private keys and algorithms that provide
   confidence for a considerable time period.  In fact, multiple SVTs
   can be used to offer greater assurance.  For example, one SVT could
   be produced with a large RSA private key, a second one with a strong
   elliptic curve, and a third one with a quantum safe digital signature
   algorithm to protect against advances in computing power and
   cryptanalytic capabilities.  Further, the trusted authority can add
   additional SVTs in the future using fresh private keys and signatures
   to extend the lifetime of the SVTs if necessary.

2.  Definitions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

   This document use the following terms:

   Signed Data:  The data covered by a particular electronic signature.
      This is typically equivalent to the signed content of a document,
      and it represents the data that the signer intended to sign.  In
      some cases, such as in some XML signatures, the Signed Data can be
      the collection of several data fragments each referenced by the
      signature.  In the case of PDF, this is the data covered by the
      "ByteRange" parameter in the signature dictionary.  In JSON Web
      Signature (JWS), this is the unencoded payload data (before
      base64url encoding).

   Signed Bytes:  These are the actual bytes of data that were hashed
      and signed by the digital signature algorithm.  In most cases,
      this is not the actual Signed Data but a collection of signature
      metadata that includes references (hash) of the Signed Data as
      well as information about algorithms and other data bound to a
      signature.  In XML, this is the canonicalized SignedInfo element.
      In CMS and PDF signatures, this is the DER-encoded
      SignedAttributes structure.  In JWS, this is the protected header
      and payload data formatted according to [RFC7515].

   When these terms are used as defined in this section, they appear
   with a capitalized first letter.

3.  Signature Validation Token

3.1.  Signature Validation Token Function

   The Signature Validation Token (SVT) is created by a trusted service
   to assert evidence of successful electronic signature validation
   using a well-defined and trustworthy signature validation process.
   The SVT binds the validation result to the validated signature, the
   document signed by the signature, and the certificate of the signer.
   This allows a relying party to verify the validity of a signed
   document without having to revalidate the original signature or to
   reuse any of its associated cryptographic algorithms for as long as
   the SVT itself can be validated.  The SVT achieves this by binding
   the following information to a specific electronic signature:

   *  A unique identification of the electronic signature.

   *  The data and metadata signed by the electronic signature.

   *  The signer's certificate that was validated as part of electronic
      signature verification.

   *  The certification path that was used to validate the signer's
      certificate.

   *  An assertion providing evidence of signature verification, the
      time the verification was performed, the procedures used to verify
      the electronic signature, and the outcome of the verification.

   *  An assertion providing evidence of the time at which the signature
      is known to have existed, the procedures used to validate the time
      of existence, and the outcome of the validation.

   The SVT aims to support long-term validation that can be further
   extended into the future by applying the following strategies:

   *  by using secure algorithms with long life expectancy when signing
      the SVT

   *  by reissuing the SVT before it becomes insecure or is considered
      expired

   *  optionally, by issuing multiple SVTs with different algorithms to
      provide redundancy in case one algorithm is broken

3.2.  Signature Validation Token Syntax

   The SVT is carried in a JSON Web Token (JWT) as defined in [RFC7519].

3.2.1.  Data Types

   The contents of claims in an SVT are specified using the following
   data types:

   String:  JSON Data Type of string that contains an arbitrary case-
      sensitive string value.

   Base64Binary:  JSON Data Type of string that contains a
      Base64-encoded byte array of binary data.

   StringOrURI:  JSON Data Type of string that contains an arbitrary
      string or a URI as defined in [RFC7519].  It is REQUIRED to
      contain the colon character (":") to be a URI.

   URI:  JSON Data Type of string that contains a URI as defined in
      [RFC7519].

   Integer:  JSON Data Type of number that contains a 32-bit signed
      integer value (from -2^31 to 2^31-1).

   Long:  JSON Data Type of number that contains a 64-bit signed integer
      value (from -2^63 to 2^63-1).

   NumericDate:  JSON Data Type of number that contains data as defined
      in [RFC7519], which is the number of seconds from
      1970-01-01T00:00:00Z UTC until the specified UTC date/time,
      ignoring leap seconds.

   Boolean:  JSON Data Type of boolean that contains the explicit value
      of true or false.

   Object<Class>:  A JSON object holding a claims object of a class
      defined in this specification (see Section 3.2.2).

   Map<Type>:  A JSON object with name-value pairs where the value is an
      object of the specified Type in the notation.  For example,
      Map<String> is a JSON object with name-value pairs where all
      values are of type String.

   Array:  A JSON array of a specific data type as defined in this
      section.  An array is expressed in this specification by square
      brackets.  For example, [String] indicates an array of String
      values, and [Object<DocHash>] indicates an array of DocHash
      objects.

   Null:  A JSON null that represents an absent value.  A claim with a
      null value is equivalent with an absent claim.

3.2.2.  Signature Validation Token JWT Claims

   The SVT MUST contain only JWT claims in the following list:

   "jti":  A String data type that is a "JWT ID" registered claim
      according to [RFC7519].  It is RECOMMENDED that the identifier
      holds a hexadecimal string representation of a 128-bit unsigned
      integer.  An SVT MUST contain one "JWT ID" claim.

   "iss":  A StringOrURI data type that is an "Issuer" registered claim
      according to [RFC7519], which is an arbitrary unique identifier of
      the SVT issuer.  This value SHOULD have the value of a URI based
      on a domain owned by the issuer.  An SVT MUST contain one "Issuer"
      claim.

   "iat":  A NumericDate data type that is an "Issued At" registered
      claim according to [RFC7519], which expresses the time when this
      SVT was issued.  An SVT MUST contain one "Issued At" claim.

   "aud":  A [StringOrURI] data type or a StringOrURI data type that is
      an "Audience" registered claim according to [RFC7519].  The
      audience claim is an array of one or more identifiers, identifying
      intended recipients of the SVT.  Each identifier MAY identify a
      single entity, a group of entities, or a common policy adopted by
      a group of entities.  If only one value is provided, it MAY be
      provided as a single StringOrURI data type value instead of as an
      array of values.  Inclusion of the "Audience" claim in an SVT is
      OPTIONAL.

   "exp":  A NumericDate data type that is an "Expiration Time"
      registered claim according to [RFC7519], which expresses the time
      when services and responsibilities related to this SVT are no
      longer provided by the SVT issuer.  The precise meaning of the
      expiration time claim is defined by local policies.  See
      implementation note below.  Inclusion of the "Expiration Time"
      claim in an SVT is OPTIONAL.

   "sig_val_claims":  An Object<SigValidation> data type that contains
      signature validation claims for this SVT extending the standard
      registered JWT claims above.  An SVT MUST contain one
      sig_val_claims claim.

   Note: An SVT asserts that a particular validation process was
   undertaken at a stated time.  This fact never changes and never
   expires.  However, some other aspects of the SVT such as liability
   for false claims or service provision related to a specific SVT may
   expire after a certain period of time, such as a service where an old
   SVT can be upgraded to a new SVT signed with fresh keys and
   algorithms.

3.2.3.  SigValidation Object Class

   The sig_val_claims JWT claim uses the SigValidation object class.  A
   SigValidation object holds all custom claims, and a SigValidation
   object contains the following parameters:

   "ver":  A String data type representing the version.  This parameter
      MUST be present and the version in this specification indicated by
      the value "1.0".

   "profile":  A StringOrURI data type representing the name of a
      profile that defines conventions followed for specific claims and
      any extension points used by the SVT issuer.  This parameter MUST
      be present.

   "hash_algo":  A URI data type that identifies the hash algorithm used
      to compute the hash values within the SVT.  The URI identifier
      MUST be one defined in [RFC9231] or in the IANA registry defined
      by this specification.  This parameter MUST be present.

   "sig":  An [Object<Signature>] data type that gives information about
      validated electronic signatures as an array of Signature objects.
      If the SVT contains signature validation evidence for more than
      one signature, then each signature is represented by a separate
      Signature object.  At least one Signature object MUST be present.

   "ext":  A Map<String> data type that provides additional claims
      related to the SVT.  Extension claims are added at the discretion
      of the SVT issuer; however, extension claims MUST follow any
      conventions defined in a profile of this specification (see
      Section 4).  Inclusion of this parameter is OPTIONAL.

3.2.4.  Signature Claims Object Class

   The sig parameter in the SigValidation object class uses the
   Signature object class.  The Signature object contains claims related
   to signature validation evidence for one signature, and it contains
   the following parameters:

   "sig_ref":  An Object<SigReference> data type that contains reference
      information identifying the target signature.  This parameter MUST
      be present.

   "sig_data_ref":  An [Object<SignedDataReference>] data type that
      contains an array of references to Signed Data that was signed by
      the target electronic signature.  At least one SignedDataReference
      object MUST be present.

   "signer_cert_ref":  An Object<CertReference> data type that
      references the signer's certificate and optionally references a
      supporting certification path that was used to verify the target
      electronic signature.  This parameter MUST be present.

   "sig_val":  An [Object<PolicyValidation>] data type that contains an
      array of results of signature verification according to defined
      procedures.  At least one PolicyValidation object MUST be present.

   "time_val":  An [Object<TimeValidation>] data type that contains an
      array of time verification results showing that the target
      signature has existed at a specific time in the past.  Inclusion
      of this parameter is OPTIONAL.

   "ext":  A MAP<String> data type that provides additional claims
      related to the target signature.  Extension claims are added at
      the discretion of the SVT issuer; however, extension claims MUST
      follow any conventions defined in a profile of this specification
      (see Section 4).  Inclusion of this parameter is OPTIONAL.

3.2.5.  SigReference Claims Object Class

   The sig_ref parameter in the Signature object class uses the
   SigReference object class.  The SigReference object provides
   information used to match the Signature claims object to a specific
   target electronic signature and to verify the integrity of the target
   signature value and Signed Bytes, and it contains the following
   parameters:

   "id":  A String data type that contains an identifier assigned to the
      target signature.  Inclusion of this parameter is OPTIONAL.

   "sig_hash":  A Base64Binary data type that contains a hash value of
      the target electronic signature value.  This parameter MUST be
      present.

   "sb_hash":  A Base64Binary data type that contains a hash value of
      the Signed Bytes of the target electronic signature.  This
      parameter MUST be present.

3.2.6.  SignedDataReference Claims Object Class

   The sig_data_ref parameter in the Signature object class uses the
   SignedDataReference object class.  The SignedDataReference object
   provides information used to verify the target electronic signature
   references to Signed Data as well as to verify the integrity of all
   data that is signed by the target signature, and it contains the
   following parameters:

   "ref":  A String data type that contains a reference identifier for
      the data or data fragment covered by the target electronic
      signature.  This parameter MUST be present.

   "hash":  A Base64Binary data type that contains the hash value for
      the data covered by the target electronic signature.  This
      parameter MUST be present.

3.2.7.  PolicyValidation Claims Object Class

   The sig_val parameter in the Signature object class uses the
   PolicyValidation object class.  The PolicyValidation object provides
   information about the result of a validation process according to a
   specific policy, and it contains the following parameters:

   "pol":  A StringOrURI data type that contains the identifier of the
      policy governing the electronic signature verification process.
      This parameter MUST be present.

   "res":  A String data type that contains the result of the electronic
      signature verification process.  The value MUST be one of
      "PASSED", "FAILED", or "INDETERMINATE" as defined by
      [ETSI319102-1].  This parameter MUST be present.

   "msg":  A String data type that contains a message describing the
      result.  Inclusion of this parameter is OPTIONAL.

   "ext":  A MAP<String> data type that provides additional claims
      related to the target signature.  Extension claims are added at
      the discretion of the SVT issuer; however, extension claims MUST
      follow any conventions defined in a profile of this specification
      (see Section 4).  Inclusion of this parameter is OPTIONAL.

3.2.8.  TimeValidation Claims Object Class

   The time_val parameter in the Signature object class uses the
   TimeValidation object class.  The TimeValidation claims object
   provides information about the result of validating evidence of time
   asserting that the target signature existed at a particular time in
   the past.  Evidence of time is typically a timestamp according to
   [RFC3161], but other types of evidence may be used such as a
   previously issued SVT for this signature.  The TimeValidation claims
   object contains the following parameters:

   "time":  A NumericDate data type that contains the verified time.
      This parameter MUST be present.

   "type":  A StringOrURI data type that contains an identifier of the
      type of evidence of time.  This parameter MUST be present.

   "iss":  A StringOrURI data type that contains an identifier of the
      entity that issued the evidence of time.  This parameter MUST be
      present.

   "id":  A String data type that contains an unique identifier assigned
      to the evidence of time.  Inclusion of this parameter is OPTIONAL.

   "hash":  A Base64Binary data type that contains the hash value of the
      validated evidence of time.  Inclusion of this parameter is
      OPTIONAL.

   "val":  An [Object<PolicyValidation>] data type that contains an
      array of results of the time evidence validation according to
      defined validation procedures.  Inclusion of this parameter is
      OPTIONAL.

   "ext":  A MAP<String> data type that provides additional claims
      related to the target signature.  Extension claims are added at
      the discretion of the SVT issuer; however, extension claims MUST
      follow any conventions defined in a profile of this specification
      (see Section 4).  Inclusion of this parameter is OPTIONAL.

3.2.9.  CertReference Claims Object Class

   The signer_cert_ref parameter in the Signature object class uses the
   CertReference object class.  The CertReference object references a
   single X.509 certificate or a X.509 certification path either by
   providing the certificate data or by providing hash references for
   certificates that can be located in the target electronic signature,
   and it contains the following parameters:

   "type":  A StringOrURI data type that contains an identifier of the
      type of reference.  The type identifier MUST be one of the
      identifiers defined below, an identifier specified by the selected
      profile, or a URI identifier.  This parameter MUST be present.

   "ref":  A [String] data type that contains an array of string
      parameters according to conventions defined by the type
      identifier.  At least one parameter MUST be present.

   The following type identifiers are defined:

   "chain":  The ref contains an array of Base64-encoded X.509
      certificates [RFC5280].  The certificates MUST be provided in the
      order starting with the end entity certificate.  Any following
      certificate must be able to validate the signature on the previous
      certificate in the array.

   "chain_hash":  The ref contains an array of one or more
      Base64-encoded hash values where each hash value is a hash over a
      X.509 certificate [RFC5280] used to validate the signature.  The
      certificates MUST be provided in the order starting with the end
      entity certificate.  Any following certificate must be able to
      validate the signature on the previous certificate in the array.
      This option MUST NOT be used unless all hashed certificates are
      present in the target electronic signature.

   Note: All certificates referenced using the identifiers above are
   X.509 certificates.  Profiles of this specification MAY define
   alternative types of public key containers; however, a major function
   of these referenced certificates is not just to reference the public
   key but also to provide the subject name of the signer.  It is
   therefore important for the full function of an SVT that the
   referenced public key container also provides the means to identify
   the signer.

3.2.10.  SVT JOSE Header

   The SVT JWT MUST contain the following JSON Object Signing and
   Encryption (JOSE) header parameters in accordance with Section 5 of
   [RFC7519]:

   "typ":  This parameter MUST have the string value "JWT" (upper case).

   "alg":  This parameter identifies the algorithm used to sign the SVT
      JWT.  The algorithm identifier MUST be specified in [RFC7518] or
      the IANA "JSON Web Signature and Encryption Algorithms" registry
      [IANA-JOSE-REG].  The specified signature hash algorithm MUST be
      identical to the hash algorithm specified in the hash_algo
      parameter of the SigValidation object within the sig_val_claims
      claim.

   The SVT header MUST contain a public key or a reference to a public
   key used to verify the signature on the SVT in accordance with
   [RFC7515].  Each profile, as discussed in Section 4, MUST define the
   requirements for how the key or key reference is included in the
   header.

4.  Profiles

   Each signed document and signature type will have to define the
   precise content and use of several claims in the SVT.

   At a minimum, each profile MUST define:

   *  The identifier of the profile

   *  How to reference the Signed Data content of the signed document

   *  How to reference the target electronic signature and the Signed
      Bytes of the signature

   *  How to reference certificates supporting each electronic signature

   *  How to include public keys or references to public keys in the SVT

   *  Whether each electronic signature is supported by a single SVT, or
      one SVT may support multiple electronic signatures of the same
      document

   A profile MAY also define:

   *  Explicit information on how to perform signature validation based
      on an SVT

   *  How to attach an SVT to an electronic signature or signed document

4.1.  Defined Profiles

   The following profiles are defined in appendixes of this document:

   Appendix A:  XML Signature Profile

   Appendix B:  PDF Signature Profile

   Appendix C:  JWS Profile

   Other documents MAY define other profiles that MAY complement, amend,
   or supersede these profiles.

5.  Signature Verification with an SVT

   Signature verification based on an SVT MUST follow these steps:

   1.  Locate all available SVTs available for the signed document that
       are relevant for the target electronic signature.

   2.  Select the most recent SVT that can be successfully validated and
       meets the requirement of the relying party.

   3.  Verify the integrity of the signature and the Signed Bytes of the
       target electronic signature using the sig_ref claim.

   4.  Verify that the Signed Data reference in the original electronic
       signature matches the reference values in the sig_data_ref claim.

   5.  Verify the integrity of referenced Signed Data using provided
       hash values in the sig_data_ref claim.

   6.  Obtain the verified certificates supporting the asserted
       electronic signature verification through the signer_cert_ref
       claim.

   7.  Verify that signature validation policy results satisfy the
       requirements of the relying party.

   8.  Verify that verified time results satisfy the context for the use
       of the signed document.

   After successfully performing these steps, signature validity is
   established as well as the trusted signer certificate binding the
   identity of the signer to the electronic signature.

6.  IANA Considerations

6.1.  Claim Names Registration

   IANA has registered the "sig_val_claims" claim name in the "JSON Web
   Token Claims" registry established by Section 10.1 of [RFC7519].

6.1.1.  Registry Contents

   Claim Name:  sig_val_claims

   Claim Description:  Signature Validation Token

   Change Controller:  IESG

   Specification Document(s):  Section 3.2.3 of RFC 9321

6.2.  Header Parameter Names Registration

   IANA has registered the "svt" Header Parameter in the "JSON Web
   Signature and Encryption Header Parameters" registry established by
   [RFC7515].

6.2.1.  Registry Contents

   Header Parameter Name:  svt

   Header Parameter Description:  Signature Validation Token

   Header Parameter Usage Location(s):  JWS

   Change Controller:  IESG

   Specification Document(s):  Appendix C.1.1 of RFC 9321

7.  Security Considerations

7.1.  Level of Reliance

   An SVT allows a signature verifier to still validate the original
   signature using the original signature data and to use the
   information in the SVT selectively to confirm the validity and
   integrity of the original data, such as confirming the integrity of
   Signed Data or the validity of the signer's certificate, etc.

   Another way to use an SVT is to completely rely on the validation
   conclusion provided by the SVT and to omit revalidation of the
   original signature value and original certificate status checking
   data.

   This choice is a decision made by the verifier according to its own
   policy and risk assessment.

   However, even when relying on the SVT validation conclusion of an
   SVT, it is vital to still verify that the present SVT is correctly
   associated with the document and signature that is being validated by
   validating the hashed reference data in the SVT of the signature,
   signing certificate chain, Signed Data, and the Signed Bytes.

7.2.  Aging Algorithms

   Even if the SVT provides protection against algorithms becoming
   weakened or broken over time, this protection is only valid for as
   long as the algorithms used to sign the SVT are still considered
   secure.  It is advisable to reissue SVTs in cases where an algorithm
   protecting the SVT is getting close to its end of life.

   One way to increase the resistance of algorithms becoming insecure,
   is to issue multiple SVTs for the same signature with different
   algorithms and key lengths where one algorithm could still be secure
   even if the corresponding algorithm used in the alternative SVT is
   broken.

8.  References

8.1.  Normative References

   [CADES]    ETSI, "Electronic Signatures and Infrastructures (ESI);
              CAdES digital signatures; Part 1: Building blocks and
              CAdES baseline signatures", v1.1.1, ETSI EN 319 122-1,
              April 2016.

   [ETSI319102-1]
              ETSI, "Electronic Signatures and Infrastructures (ESI);
              Procedures for Creation and Validation of AdES Digital
              Signatures; Part 1: Creation and Validation", v1.1.1, ETSI
              EN 319 102-1, May 2016.

   [IANA-JOSE-REG]
              IANA, "JSON Object Signing and Encryption (JOSE)",
              <https://www.iana.org/assignments/jose/>.

   [ISOPDF2]  ISO, "Document management -- Portable document format --
              Part 2: PDF 2.0", ISO 32000-2:2020, December 2020.

   [PADES]    ETSI, "Electronic Signatures and Infrastructures (ESI);
              PAdES digital signatures; Part 1: Building blocks and
              PAdES baseline signatures", v1.1.1, ETSI EN 319 142-1,
              April 2016.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3125]  Ross, J., Pinkas, D., and N. Pope, "Electronic Signature
              Policies", RFC 3125, DOI 10.17487/RFC3125, September 2001,
              <https://www.rfc-editor.org/info/rfc3125>.

   [RFC3161]  Adams, C., Cain, P., Pinkas, D., and R. Zuccherato,
              "Internet X.509 Public Key Infrastructure Time-Stamp
              Protocol (TSP)", RFC 3161, DOI 10.17487/RFC3161, August
              2001, <https://www.rfc-editor.org/info/rfc3161>.

   [RFC3647]  Chokhani, S., Ford, W., Sabett, R., Merrill, C., and S.
              Wu, "Internet X.509 Public Key Infrastructure Certificate
              Policy and Certification Practices Framework", RFC 3647,
              DOI 10.17487/RFC3647, November 2003,
              <https://www.rfc-editor.org/info/rfc3647>.

   [RFC5035]  Schaad, J., "Enhanced Security Services (ESS) Update:
              Adding CertID Algorithm Agility", RFC 5035,
              DOI 10.17487/RFC5035, August 2007,
              <https://www.rfc-editor.org/info/rfc5035>.

   [RFC5280]  Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
              Housley, R., and W. Polk, "Internet X.509 Public Key
              Infrastructure Certificate and Certificate Revocation List
              (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
              <https://www.rfc-editor.org/info/rfc5280>.

   [RFC5652]  Housley, R., "Cryptographic Message Syntax (CMS)", STD 70,
              RFC 5652, DOI 10.17487/RFC5652, September 2009,
              <https://www.rfc-editor.org/info/rfc5652>.

   [RFC7515]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web
              Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May
              2015, <https://www.rfc-editor.org/info/rfc7515>.

   [RFC7518]  Jones, M., "JSON Web Algorithms (JWA)", RFC 7518,
              DOI 10.17487/RFC7518, May 2015,
              <https://www.rfc-editor.org/info/rfc7518>.

   [RFC7519]  Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token
              (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015,
              <https://www.rfc-editor.org/info/rfc7519>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

   [RFC9231]  Eastlake 3rd, D., "Additional XML Security Uniform
              Resource Identifiers (URIs)", RFC 9231,
              DOI 10.17487/RFC9231, July 2022,
              <https://www.rfc-editor.org/info/rfc9231>.

   [XADES]    ETSI, "Electronic Signatures and Infrastructures (ESI);
              XAdES digital signatures; Part 1: Building blocks and
              XAdES baseline signatures", v1.1.1, ETSI EN 319 132-1,
              April 2016.

   [XMLDSIG11]
              Eastlake 3rd, D., Reagle, J., Solo, D., Hirsch, F.,
              Nystrom, M., Roessler, T., and K. Yiu, "XML Signature
              Syntax and Processing Version 1.1", W3C Proposed
              Recommendation, April 2013.  Latest version available at
              https://www.w3.org/TR/xmldsig- core1/.

8.2.  Informative References

   [RFC8610]  Birkholz, H., Vigano, C., and C. Bormann, "Concise Data
              Definition Language (CDDL): A Notational Convention to
              Express Concise Binary Object Representation (CBOR) and
              JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610,
              June 2019, <https://www.rfc-editor.org/info/rfc8610>.

Appendix A.  XML Signature Profile

   This appendix defines a profile for implementing SVTs with a signed
   XML document and defines the following aspects of SVT usage:

   *  How to include reference data related to XML signatures and XML
      documents in an SVT

   *  How to add an SVT token to an XML signature

   XML documents can have any number of signature elements, signing an
   arbitrary number of fragments of XML documents.  The actual signature
   element may be included in the signed XML document (enveloped),
   include the Signed Data (enveloping), or may be separate from the
   signed content (detached).

   To provide a generic solution for any type of XML signature, an SVT
   is added to each XML signature element within the XML signature
   <ds:Object> element.

A.1.  Notation

A.1.1.  References to XML Elements from XML Schemas

   When referring to elements from the W3C XML Signature namespace
   (https://www.w3.org/2000/09/xmldsig#), the following syntax is used:

   *  <ds:Signature>

   When referring to elements from the ETSI XAdES XML Signature
   namespace (https://uri.etsi.org/01903/v1.3.2#), the following syntax
   is used:

   *  <xades:CertDigest>

   When referring to elements defined in this specification
   (http://id.swedenconnect.se/svt/1.0/sig-prop/ns), the following
   syntax is used:

   *  <svt:Element>

A.2.  SVT in XML Documents

   When SVTs are provided for XML signatures, then one SVT MUST be
   provided for each XML signature.

   An SVT embedded within the XML signature element MUST be placed in a
   <svt:SignatureValidationToken> element as defined in Appendix A.2.1.

A.2.1.  SignatureValidationToken Signature Property

   The <svt:SignatureValidationToken> element MUST be placed in a
   <ds:SignatureProperty> element in accordance with [XMLDSIG11].  The
   <ds:SignatureProperty> element MUST be placed inside a
   <ds:SignatureProperties> element inside a <ds:Object> element inside
   a <ds:Signature> element.

   Note: [XMLDSIG11] requires the Target attribute to be present in
   <ds:SignatureProperty>, referencing the signature targeted by this
   signature property.  If an SVT is added to a signature that does not
   have an Id attribute, implementations SHOULD add an Id attribute to
   the <ds:Signature> element and reference that Id in the Target
   attribute.  This Id attribute and Target attribute value matching is
   required by the [XMLDSIG11] standard, but it is redundant in the
   context of SVT validation as the SVT already contains information
   that uniquely identifies the target signature.  Validation
   applications SHOULD NOT reject an SVT token because of Id and Target
   attribute mismatch and MUST rely on matching against a signature
   using signed information in the SVT itself.

   The <svt:SignatureValidationToken> element is defined by the
   following XML Schema:

   <?xml version="1.0" encoding="UTF-8"?>
   <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
       elementFormDefault="qualified"
       targetNamespace="http://id.swedenconnect.se/svt/1.0/sig-prop/ns"
       xmlns:svt="http://id.swedenconnect.se/svt/1.0/sig-prop/ns">

     <xs:element name="SignatureValidationToken"
         type="svt:SignatureValidationTokenType" />

     <xs:complexType name="SignatureValidationTokenType">
       <xs:simpleContent>
         <xs:extension base="xs:string">
         </xs:extension>
       </xs:simpleContent>
     </xs:complexType>

   </xs:schema>

   The SVT token MUST be included as a string representation of the SVT
   JWT.  Note that this is the string representation of the JWT without
   further encoding.  The SVT MUST NOT be represented by the
   Base64-encoded bytes of the JWT string.

   Example:

   <ds:Signature Id="MySignatureId">
     ...
     <ds:Object>
       <ds:SignatureProperties>
         <ds:SignatureProperty Target="#MySignatureId">
           <svt:SignatureValidationToken>
                 eyJ0eXAiOiJKV1QiLCJhb...2aNZ
           </svt:SignatureValidationToken>
         </ds:SignatureProperty>
       </ds:SignatureProperties>
     </ds:Object>
   </ds:Signature>

A.2.2.  Multiple SVTs in an XML Signature

   If a new SVT is stored in a signature that already contains a
   previously issued SVT, implementations can choose either to replace
   the existing SVT or to store the new SVT in addition to the existing
   SVT.

   If the new SVT is stored in addition to the old SVT, it SHOULD be
   stored in a new <ds:SignatureProperty> element inside the existing
   <ds:SignatureProperties> element where the old SVT is located.

   For interoperability robustness, signature validation applications
   MUST be able to handle signatures where the new SVT is located in a
   new <ds:Object> element.

A.3.  XML Signature SVT Claims

A.3.1.  XML Profile Identifier

   When this profile is used, the SigValidation object MUST contain a
   "profile" claim with the value "XML".

A.3.2.  XML Signature Reference Data

   The SVT Signature object MUST contain a "sig_ref" claim (SigReference
   object) with the following elements:

   "id":  The Id-attribute of the XML signature, if present.

   "sig_hash":  The hash over the signature value bytes.

   "sb_hash":  The hash over the canonicalized <ds:SignedInfo> element
      (the bytes the XML signature algorithm has signed to generate the
      signature value).

A.3.3.  XML Signed Data Reference Data

   The SVT Signature object MUST contain one instance of the "sig_data"
   claim (SignedData object) for each <ds:Reference> element in the
   <ds:SignedInfo> element.  The "sig_data" claim MUST contain the
   following elements:

   "ref":  The value of the URI attribute of the corresponding
      <ds:Reference> element.

   "hash":  The hash of all bytes that were identified by the
      corresponding <ds:Reference> element after applying all identified
      canonicalization and transformation algorithms.  These are the
      same bytes that are hashed by the hash value in the
      <ds:DigestValue> element inside the <ds:Reference> element.

A.3.4.  XML Signer Certificate References

   The SVT Signature object MUST contain a "signer_cert_ref" claim
   (CertReference object).  The "type" parameter of the
   "signer_cert_ref" claim MUST be either "chain" or "chain_hash".

   *  The "chain" type MUST be used when signature validation was
      performed using one or more certificates where some or all of the
      certificates in the chain are not present in the target signature.

   *  The "chain_hash" type MUST be used when signature validation was
      performed using one or more certificates where all of the
      certificates are present in the target signature.

A.4.  JOSE Header

A.4.1.  SVT Signing Key Reference

   The SVT JOSE header for XML signatures must contain one of the
   following header parameters in accordance with [RFC7515] for storing
   a reference to the public key used to verify the signature on the
   SVT:

   "x5c":  Holds an X.509 certificate [RFC5280] or a chain of
      certificates.  The certificate holding the public key that
      verifies the signature on the SVT MUST be the first certificate in
      the chain.

   "kid":  A key identifier holding the Base64-encoded hash value of the
      certificate that can verify the signature on the SVT.  The hash
      algorithm MUST be the same hash algorithm used when signing the
      SVT as specified by the "alg" Header Parameter.

Appendix B.  PDF Signature Profile

   This appendix defines a profile for implementing SVTs with a signed
   PDF document, and it defines the following aspects of SVT usage:

   *  How to include reference data related to PDF signatures and PDF
      documents in an SVT.

   *  How to add an SVT token to a PDF document.

   PDF document signatures are added as incremental updates to the
   signed PDF document and signs all data of the PDF document up until
   the current signature.  When more than one signature is added to a
   PDF document the previous signature is signed by the next signature
   and can not be updated with additional data after this event.

   To minimize the impact on PDF documents with multiple signatures and
   to stay backwards compatible with PDF software that does not
   understand SVTs, PDF documents add one SVT token for all signatures
   of the PDF as an extension to a document timestamp added to the
   signed PDF as an incremental update.  This SVT covers all signatures
   of the signed PDF.

B.1.  SVTs in PDF Documents

   The SVT for a signed PDF document MAY provide signature validation
   information about any of the present signatures in the PDF.  The SVT
   MUST contain a separate "sig" claim (Signature object) for each
   signature on the PDF that is covered by the SVT.

   An SVT added to a signed PDF document MUST be added to a document
   timestamp in accordance with ISO 32000-2:2020 [ISOPDF2].

   The document timestamp contains an [RFC3161] timestamp token
   (TSTInfo) in EncapsulatedContentInfo of the CMS signature.  The SVT
   MUST be added to the timestamp token (TSTInfo) as an Extension object
   as defined in Appendix B.1.1.

B.1.1.  SVT Extension to Timestamp Tokens

   The SVT extension is an Extension suitable to be included in TSTInfo
   as defined by [RFC3161].

   The SVT extension is identified by the Object Identifier (OID)
   1.2.752.201.5.2.

   This extension data (OCTET STRING) holds the bytes of SVT JWT,
   represented as a UTF-8-encoded string.

   This extension MUST NOT be marked critical.

   Note: Extensions in timestamp tokens according to [RFC3161] are
   imported from the definition of the X.509 certificate extensions
   defined in [RFC5280].

B.2.  PDF Signature SVT Claims

B.2.1.  PDF Profile Identifier

   When this profile is used, the SigValidation object MUST contain a
   "profile" claim with the value "PDF".

B.2.2.  PDF Signature Reference Data

   The SVT Signature object MUST contain a "sig_ref" claim (SigReference
   object) with the following elements:

   "id":  Absent or a Null value.

   "sig_hash":  The hash over the signature value bytes.

   "sb_hash":  The hash over the DER-encoded SignedAttributes in
      SignerInfo.

B.2.3.  PDF Signed Data Reference Data

   The SVT Signature object MUST contain one instance of the "sig_data"
   claim (SignedData object) with the following elements:

   "ref":  The string representation of the ByteRange value of the PDF
      signature dictionary of the target signature.  This is a sequence
      of integers separated by space where each integer pair specifies
      the start index and length of a byte range.

   "hash":  The hash of all bytes identified by the ByteRange value.
      This is the concatenation of all byte ranges identified by the
      ByteRange value.

B.2.4.  PDF Signer Certificate References

   The SVT Signature object MUST contain a "signer_cert_ref" claim
   (CertReference object).  The "type" parameter of the
   "signer_cert_ref" claim MUST be either "chain" or "chain_hash".

   *  The "chain" type MUST be used when signature validation was
      performed using one or more certificates where some or all of the
      certificates in the chain are not present in the target signature.

   *  The "chain_hash" type MUST be used when signature validation was
      performed using one or more certificates where all of the
      certificates are present in the target signature.

   Note: The referenced signer certificate MUST match any certificates
   referenced using ESSCertID or ESSCertIDv2 from [RFC5035].

B.3.  JOSE Header

B.3.1.  SVT Signing Key Reference

   The SVT JOSE header must contain one of the following header
   parameters in accordance with [RFC7515] for storing a reference to
   the public key used to verify the signature on the SVT:

   "x5c":  Holds an X.509 certificate [RFC5280] or a chain of
      certificates.  The certificate holding the public key that
      verifies the signature on the SVT MUST be the first certificate in
      the chain.

   "kid":  A key identifier holding the Base64-encoded hash value of the
      certificate that can verify the signature on the SVT.  The hash
      algorithm MUST be the same hash algorithm used when signing the
      SVT as specified by the "alg" Header Parameter.  The referenced
      certificate SHOULD be the same certificate that was used to sign
      the document timestamp that contains the SVT.

Appendix C.  JWS Profile

   This appendix defines a profile for implementing SVTs with a JWS
   signed payload according to [RFC7515], and it defines the following
   aspects of SVT usage:

   *  How to include reference data related to JWS signatures in an SVT.

   *  How to add an SVT token to JWS signatures.

   A JWS may have one or more signatures, depending on its serialization
   format, signing the same payload data.  A JWS either contains the
   data to be signed (enveloping) or may sign any externally associated
   payload data (detached).

   To provide a generic solution for JWS, an SVT is added to each
   present signature as a JWS Unprotected Header.  If a JWS includes
   multiple signatures, then each signature includes its own SVT.

C.1.  SVT in JWS

   An SVT token MAY be added to any signature of a JWS to support
   validation of that signature.  If more than one signature is present,
   then each present SVT MUST provide information exclusively related to
   one associated signature and MUST NOT include information about any
   other signature in the JWS.

   Each SVT is stored in its associated signature's "svt" header as
   defined in Appendix C.1.1.

C.1.1.  "svt" Header Parameter

   The "svt" (Signature Validation Token) Header Parameter is used to
   contain an array of SVT tokens to support validation of the
   associated signature.  Each SVT token in the array has the format of
   a JWT as defined in [RFC7519] and is stored using its natural string
   representation without further wrapping or encoding.

   The "svt" Header Parameter, when used, MUST be included as a JWS
   Unprotected Header.

   Note: A JWS Unprotected Header is not supported with JWS Compact
   Serialization.  A consequence of adding an SVT token to a JWS is
   therefore that JWS JSON Serialization MUST be used either in the form
   of general JWS JSON Serialization (for one or more signatures) or in
   the form of flattened JWS JSON Serialization (optionally used when
   only one signature is present in the JWS).

C.1.2.  Multiple SVTs in a JWS Signature

   If a new SVT is stored in a signature that already contains a
   previously issued SVT, implementations can choose either to replace
   the existing SVT or to store the new SVT in addition to the existing
   SVT.

   If a JWS signature already contains an array of SVTs and a new SVT is
   to be added, then the new SVT MUST be added to the array of SVT
   tokens in the existing "svt" Header Parameter.

C.2.  JWS Signature SVT Claims

C.2.1.  JWS Profile Identifier

   When this profile is used, the SigValidation object MUST contain a
   "profile" claim with the value "JWS".

C.2.2.  JWS Signature Reference Data

   The SVT Signature object MUST contain a "sig_ref" claim (SigReference
   object) with the following elements:

   "sig_hash":  The hash over the associated signature value (the bytes
      of the base64url-decoded signature parameter).

   "sb_hash":  The hash over all bytes signed by the associated
      signature (the JWS Signing Input according to [RFC7515]).

C.2.3.  JWS Signed Data Reference Data

   The SVT Signature object MUST contain one instance of the "sig_data"
   claim (SignedData object) with the following elements:

   "ref":  This parameter MUST hold one of the following three possible
      values:

      1.  The explicit string value "payload" if the signed JWS Payload
          is embedded in a "payload" member of the JWS.

      2.  The explicit string value "detached" if the JWS signs detached
          payload data without explicit reference.

      3.  A URI that can be used to identify or fetch the detached
          Signed Data.  The means to determine the URI for the detached
          Signed Data is outside the scope of this specification.

   "hash":  The hash over the JWS Payload data bytes (not its base64url-
      encoded string representation).

C.2.4.  JWS Signer Certificate References

   The SVT Signature object MUST contain a "signer_cert_ref" claim
   (CertReference object).  The "type" parameter of the
   "signer_cert_ref" claim MUST be either "chain" or "chain_hash".

   *  The "chain" type MUST be used when signature validation was
      performed using one or more certificates where some or all of the
      certificates in the chain are not present in the target signature.

   *  The "chain_hash" type MUST be used when signature validation was
      performed using one or more certificates where all of the
      certificates are present in the target signature JOSE header using
      the "x5c" Header Parameter.

C.3.  SVT JOSE Header

C.3.1.  SVT Signing Key Reference

   The SVT JOSE header must contain one of the following header
   parameters in accordance with [RFC7515] for storing a reference to
   the public key used to verify the signature on the SVT:

   "x5c":  Holds an X.509 certificate [RFC5280] or a chain of
      certificates.  The certificate holding the public key that
      verifies the signature on the SVT MUST be the first certificate in
      the chain.

   "kid":  A key identifier holding the Base64-encoded hash value of the
      certificate that can verify the signature on the SVT.  The hash
      algorithm MUST be the same hash algorithm used when signing the
      SVT as specified by the "alg" Header Parameter.

Appendix D.  Schemas

D.1.  Concise Data Definition Language (CDDL)

   The following informative CDDL [RFC8610] expresses the structure of
   an SVT token:

   svt = {
     jti: text
     iss: text
     iat: uint
     ? aud: text / [* text]
     ? exp: uint
     sig_val_claims: SigValClaims
   }

   SigValClaims = {
     ver: text
     profile: text
     hash_algo: text
     sig: [+ Signature]
     ? ext: Extension
   }

   Signature = {
     sig_ref: SigReference
     sig_data_ref: [+ SignedDataReference]
     signer_cert_ref: CertReference
     sig_val: [+ PolicyValidation]
     ? time_val: [* TimeValidation]
     ? ext: Extension
   }

   SigReference = {
     ? id: text / null
     sig_hash: binary-value
     sb_hash: binary-value
   }

   SignedDataReference = {
     ref: text
     hash: binary-value
   }


   CertReference = {
     type: "chain" / "chain_hash"
     ref: [+ text]
   }

   PolicyValidation = {
     pol: text
     res: "PASSED" / "FAILED" / "INDETERMINATE"
     ? msg: text / null
     ? ext: Extension
   }

   TimeValidation = {
     "time": uint
     type: text
     iss: text
     ? id: text / null
     ? hash: binary-value / null
     ? val: [* PolicyValidation]
     ? ext: Extension
   }


   Extension = {
     + text => text
   } / null

   binary-value = text             ; base64 classic with padding

D.2.  JSON Schema

   The following informative JSON schema describes the syntax of the SVT
   token payload.

   {
       "$schema": "https://json-schema.org/draft/2020-12/schema",
       "title": "Signature Validation Token JSON Schema",
       "description": "Schema defining the payload format for SVTs",
       "type": "object",
       "required": [
           "jti",
           "iss",
           "iat",
           "sig_val_claims"
       ],
       "properties": {
           "jti": {
               "description": "JWT ID",
               "type": "string"
           },
           "iss": {
               "description": "Issuer",
               "type": "string"
           },
           "iat": {
               "description": "Issued At",
               "type": "integer"
           },
           "aud": {
               "description": "Audience",
               "type": [
                   "string",
                   "array"
               ],
               "items": {"type": "string"}
           },
           "exp": {
               "description": "Expiration time (seconds since epoch)",
               "type": "integer"
           },
           "sig_val_claims": {
               "description": "Signature validation claims",
               "type": "object",
               "required": [
                   "ver",
                   "profile",
                   "hash_algo",
                   "sig"
               ],
               "properties": {
                   "ver": {
                       "description": "Version",
                       "type": "string"
                   },
                   "profile": {
                       "description": "Implementation profile",
                       "type": "string"
                   },
                   "hash_algo": {
                       "description": "Hash algorithm URI",
                       "type": "string"
                   },
                   "sig": {
                       "description": "Validated signatures",
                       "type": "array",
                       "items": {
                           "$ref": "#/$def/Signature"
                       },
                       "minItems": 1
                   },
                   "ext": {
                       "description": "Extension map",
                       "$ref": "#/$def/Extension"
                   }
               },
               "additionalProperties": false
           }
       },
   "additionalProperties": false,
   "$def": {
            "Signature":{
                "type": "object",
                "required": [
                    "sig_ref",
                    "sig_data_ref",
                    "signer_cert_ref",
                    "sig_val"
                ],
                "properties": {
                    "sig_ref": {
                        "description": "Signature Reference",
                        "$ref": "#/$def/SigReference"
                    },
                    "sig_data_ref": {
                        "description": "Signed data array",
                        "type": "array",
                        "items": {
                            "$ref" : "#/$def/SignedDataReference"
                        },
                        "minItems": 1
                    },
                    "signer_cert_ref": {
                        "description": "Signer certificate reference",
                        "$ref": "#/$def/CertReference"
                    },
                    "sig_val": {
                        "description": "Signature validation results",
                        "type": "array",
                        "items": {
                            "$ref": "#/$def/PolicyValidation"
                        },
                        "minItems": 1
                    },
                    "time_val": {
                        "description": "Time validations",
                        "type": "array",
                        "items": {
                            "$ref": "#/$def/TimeValidation"
                        }
                    },
                   "ext": {
                       "description": "Extension map",
                       "$ref": "#/$def/Extension"
                   }
                },
                "additionalProperties": false
            },
            "SigReference":{
                "type": "object",
                "required": [
                    "sig_hash",
                    "sb_hash"
                ],
                "properties": {
                    "sig_hash": {
                        "description": "Hash of the signature value",
                        "type": "string",
                        "format": "base64"
                    },
                    "sb_hash": {
                        "description": "Hash of the Signed Bytes",
                        "type": "string",
                        "format": "base64"
                    },
                    "id": {
                        "description": "Signature ID reference",
                        "type": ["string","null"]
                    }
                },
               "additionalProperties": false
            },
            "SignedDataReference": {
                "type": "object",
                "required": [
                    "ref",
                    "hash"
                ],
                "properties": {
                    "ref": {
                        "description": "Reference to the signed data",
                        "type": "string"
                    },
                    "hash": {
                        "description": "Signed data hash",
                        "type": "string",
                        "format": "base64"
                    }
                },
               "additionalProperties": false
            },
            "CertReference":{
                "type": "object",
                "required": [
                    "type",
                    "ref"
                ],
                "properties": {
                    "type": {
                        "description": "Type of certificate reference",
                        "type": "string",
                        "enum": ["chain","chain_hash"]
                    },
                    "ref": {
                        "description": "Certificate reference data",
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "base64"
                        },
                        "minItems": 1
                    }
                },
               "additionalProperties": false
            },
            "PolicyValidation":{
                "type": "object",
                "required": [
                    "pol",
                    "res"
                ],
                "properties": {
                    "pol": {
                        "description": "Policy identifier",
                        "type": "string"
                    },
                    "res": {
                        "description": "Signature validation result",
                        "type": "string",
                        "enum": ["PASSED","FAILED","INDETERMINATE"]
                    },
                    "msg": {
                        "description": "Message",
                        "type": ["string","null"]
                    },
                    "ext": {
                       "description": "Extension map",
                       "$ref": "#/$def/Extension"
                   }
                },
               "additionalProperties": false
            },
            "TimeValidation":{
                "type": "object",
                "required": [
                    "time",
                    "type",
                    "iss"
                ],
                "properties": {
                    "time": {
                        "description": "Verified time",
                        "type": "integer"
                    },
                    "type": {
                        "description": "Type of time validation proof",
                        "type": "string"
                    },
                    "iss": {
                        "description": "Issuer of the time proof",
                        "type": "string"
                    },
                    "id": {
                        "description": "Time evidence identifier",
                        "type": ["string","null"]

                    },
                    "hash": {
                        "description": "Hash of time evidence",
                        "type": ["string","null"],
                        "format": "base64"
                    },
                    "val": {
                        "description": "Validation result",
                        "type": "array",
                        "items": {
                            "$ref": "#/$def/PolicyValidation"
                        }
                    },
                    "ext": {
                       "description": "Extension map",
                       "$ref": "#/$def/Extension"
                   }
                },
               "additionalProperties": false
            },
            "Extension": {
              "description": "Extension map",
              "type": ["object","null"],
              "required": [],
              "additionalProperties": {
                  "type": "string"
              }
            }
        }
   }

Appendix E.  Examples

   The following example illustrates a basic SVT according to this
   specification issued for a signed PDF document.

   Note: Line breaks in the decoded example are inserted for
   readability.  Line breaks are not allowed in valid JSON data.

   Signature validation token JWT:

   eyJraWQiOiJPZW5JKzQzNEpoYnZmRG50ZlZcLzhyT3hHN0ZrdnlqYUtWSmFWcUlG
   QlhvaFZoQWU1Zks4YW5vdjFTNjg4cjdLYmFsK2Z2cGFIMWo4aWJnNTJRQnkxUFE9
   PSIsInR5cCI6IkpXVCIsImFsZyI6IlJTNTEyIn0.eyJhdWQiOiJodHRwOlwvXC9l
   eGFtcGxlLmNvbVwvYXVkaWVuY2UxIiwiaXNzIjoiaHR0cHM6XC9cL3N3ZWRlbmNv
   bm5lY3Quc2VcL3ZhbGlkYXRvciIsImlhdCI6MTYwMzQ1ODQyMSwianRpIjoiNGQx
   Mzk2ZjFmZjcyOGY0MGQ1MjQwM2I2MWM1NzQ0ODYiLCJzaWdfdmFsX2NsYWltcyI6
   eyJzaWciOlt7ImV4dCI6bnVsbCwic2lnX3ZhbCI6W3sibXNnIjoiT0siLCJleHQi
   Om51bGwsInJlcyI6IlBBU1NFRCIsInBvbCI6Imh0dHA6XC9cL2lkLnN3ZWRlbmNv
   bm5lY3Quc2VcL3N2dFwvc2lndmFsLXBvbGljeVwvdHMtcGtpeFwvMDEifV0sInNp
   Z19yZWYiOnsic2lnX2hhc2giOiJ5Y2VQVkxJemRjcEs5N0lZT2hGSWYxbnk3OUht
   SUNiU1Z6SWVaTmJpem83ckdJd0hOTjB6WElTeUtHakN2bm9uT2FRR2ZMXC9QM3ZE
   dEI4OHlLU1dlWGc9PSIsImlkIjoiaWQtNzM5ODljNmZjMDYzNjM2YWI1ZTc1M2Yx
   MGY3NTc0NjciLCJzYl9oYXNoIjoiQm9QVjRXQ0E5c0FJYWhqSzFIYWpmRnhpK0F6
   QzRKR1R1ZjM5VzNaV2pjekRDVVJ4ZGM5WWV0ZUh0Y3hHVmVnZ3B4SEo3NVwvY1E3
   SE4xZERkbGl5SXdnPT0ifSwic2lnbmVyX2NlcnRfcmVmIjp7InJlZiI6WyIxK2Fh
   SmV0ZzdyZWxFUmxVRFlFaVU0WklaaFQ0UlV2aUlRWnVLN28xR0ZLYVRQUTZ5K2t4
   XC9QTnREcnB1cVE2WGZya0g5d1lESzRleTB5NFdyTkVybnc9PSIsImg0UER4YjVa
   S214MWVUU3F2VnZZRzhnMzNzMDVKendCK05nRUhGVTRnYzl0cUcwa2dIa2Y2VzNv
   THprVHd3dXJJaDZZOUFhZlpZcWMyelAycEUycDRRPT0iLCJEZDJDNXNCMElPUWVN
   Vm5FQmtNNVE5Vzk2bUJITnd3YTJ0elhNcytMd3VZY09VdlBrcnlHUjBhUEc4Tzlu
   SVAzbGJ3NktqUTFoRG1SazZ6Qzh4MmpkZz09Il0sInR5cGUiOiJjaGFpbl9oYXNo
   In0sInNpZ19kYXRhX3JlZiI6W3sicmVmIjoiIiwiaGFzaCI6IkZjR3BPT2Y4aWxj
   UHQyMUdEZDJjR25MR0R4UlM1ajdzdk00YXBwMkg0MWRERUxtMkN6Y2VUWTAybmRl
   SmZXamludG1RMzc2SWxYVE9BcjMxeXpZenNnPT0ifSx7InJlZiI6IiN4YWRlcy0x
   MWExNTVkOTJiZjU1Nzc0NjEzYmI3YjY2MTQ3N2NmZCIsImhhc2giOiJLUmtnYlo2
   UFwvbmhVNjNJTWswR2lVZlVcL0RUd3ZlWWl0ZVFrd0dlSnFDNUJ6VE5WOGJRYnBl
   ZFRUdVdKUHhxdkowUlk4NGh3bTdlWVwvZzBIckFPZWdLdz09In1dLCJ0aW1lX3Zh
   bCI6W119XSwiZXh0IjpudWxsLCJ2ZXIiOiIxLjAiLCJwcm9maWxlIjoiWE1MIiwi
   aGFzaF9hbGdvIjoiaHR0cDpcL1wvd3d3LnczLm9yZ1wvMjAwMVwvMDRcL3htbGVu
   YyNzaGE1MTIifX0.TdHCoIUSZj2zMINKg7E44-8VE_mJq6TG1OoPwnYSs_hyUbuX
   mrLJpuk8GR5YrndeOucPUYAwPxHt_f68JIQyFTi0agO9VJjn1R7Pj3Jt6WG9pYVN
   n5LH-D1maxD11ZxxbcYeHbsstd2Sy2uMa3BdpsstGdPymSmc6GxY5uJoL0-5vwo_
   3l-4Bb3LCTiuxYPcmztKIbDy2hEgJ3Hx1K4HF0SHgn3InpqBev3hm2SLw3hH5BCM
   rywBAhHYE6OGE0aOJ6ktA5UP0jIIHfaw9i1wIiJtHTaGuvtyWSLk5cshmun9Hkdk
   kRTA75bzuq0Iyd0qh070rA8Gje-s4Tw4xzttgKx1KSkvy8n5FqvzWdsZvclCG2mY
   Y9rMxh_7607NXcxajAP4yDOoKNs5nm937ULe0vCN8a7WTrFuiaGjry7HhzRM4C5A
   qxbDOBXPLyoMr4qn4LRJCHxOeLZ6o3ugvDOOWsyjk3eliyBwDu8qJH7UmyicLxDc
   Cr0hUK_kvREqjD2Z

   Decoded JWT Header:

   {
     "kid":"OenI+434JhbvfDntfV\/8rOxG7FkvyjaKVJaVqIFBXohVhAe5fK8anov
            1S688r7Kbal+fvpaH1j8ibg52QBy1PQ==",
     "typ":"JWT",
     "alg":"RS512"
   }

   Decoded JWT Claims:

   {
     "aud" : "http://example.com/audience1",
     "iss" : "https://swedenconnect.se/validator",
     "iat" : 1603458421,
     "jti" : "4d1396f1ff728f40d52403b61c574486",
     "sig_val_claims" : {
       "sig" : [ {
         "ext" : null,
         "sig_val" : [ {
           "msg" : "OK",
           "ext" : null,
           "res" : "PASSED",
           "pol" : "http://id.swedenconnect.se/svt/sigval-policy/
                    ts-pkix/01"
         } ],
         "sig_ref" : {
           "sig_hash" : "ycePVLIzdcpK97IYOhFIf1ny79HmICbSVzIeZNbizo7rGIw
                         HNN0zXISyKGjCvnonOaQGfL/P3vDtB88yKSWeXg==",
           "id" : "id-73989c6fc063636ab5e753f10f757467",
           "sb_hash" : "BoPV4WCA9sAIahjK1HajfFxi+AzC4JGTuf39W3ZWjczDCURx
                        dc9YeteHtcxGVeggpxHJ75/cQ7HN1dDdliyIwg=="
         },
         "signer_cert_ref" : {
           "ref" : [ "1+aaJetg7relERlUDYEiU4ZIZhT4RUviIQZuK7o1GFKaTPQ6y+
                      kx/PNtDrpuqQ6XfrkH9wYDK4ey0y4WrNErnw==",
                     "h4PDxb5ZKmx1eTSqvVvYG8g33s05JzwB+NgEHFU4gc9tqG0kgH
                      kf6W3oLzkTwwurIh6Y9AafZYqc2zP2pE2p4Q==",
                     "Dd2C5sB0IOQeMVnEBkM5Q9W96mBHNwwa2tzXMs+LwuYcOUvPkr
                      yGR0aPG8O9nIP3lbw6KjQ1hDmRk6zC8x2jdg==" ],
           "type" : "chain_hash"
         },
         "sig_data_ref" : [ {
           "ref" : "",
           "hash" : "FcGpOOf8ilcPt21GDd2cGnLGDxRS5j7svM4app2H41dDELm2Czc
                     eTY02ndeJfWjintmQ376IlXTOAr31yzYzsg=="
         }, {
           "ref" : "#xades-11a155d92bf55774613bb7b661477cfd",
           "hash" : "KRkgbZ6P/nhU63IMk0GiUfU/DTwveYiteQkwGeJqC5BzTNV8bQb
                     pedTTuWJPxqvJ0RY84hwm7eY/g0HrAOegKw=="
         } ],
         "time_val" : [ ]
       } ],
       "ext" : null,
       "ver" : "1.0",
       "profile" : "XML",
       "hash_algo" : "http://www.w3.org/2001/04/xmlenc#sha512"
     }
   }

Authors' Addresses

   Stefan Santesson
   IDsec Solutions AB
   Forskningsbyn Ideon
   SE-223 70 Lund
   Sweden
   Email: sts@aaa-sec.com


   Russ Housley
   Vigil Security, LLC
   516 Dranesville Road
   Herndon, VA 20170
   United States of America
   Email: housley@vigilsec.com