-
Notifications
You must be signed in to change notification settings - Fork 13
/
ChangeLog
842 lines (517 loc) · 20.8 KB
/
ChangeLog
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
----------------
Changes in 2.4.1
----------------
Issue new test EK CA root certificates with a longer validity period.
----------------
Changes in 2.4.0
----------------
Add support for SHA-256, SHA-384, and SHA-512 IMA event logs. Add
local command line support and update the API to support
attestation. Add known value test to event regression tests. Change
the -ty switch to -ealg for event log angorithms.
Add support for EK intermediate certificates in the IWG standard
locations.
----------------
Changes in 2.3 1
----------------
Add policyparameters regression test that demos the original use
case. Add man page. Add VS project.
Add policycapability regression test.
Update VS project for OpenSSL 3.2 and the two policy commands.
----------------
Changes in 2.3 0
----------------
Add policycapability, policyparameters.
----------------
Changes in 2.2.0
----------------
Add support for loadexternal schemes
Fix ObjectTemplates to accept caller curveID
Add Nuvoton configure utilities to VS projects
ifdef out functions deprecated with openssl 3.x
Recode the OpenSSL pkeyutl uses. OpenSSL 3.x no longer ignores the
oaep hash algorithm for the pkcs1 scheme.
Add userWithAuth to unseal policy sample scripts. This is best
practice.
----------------
Changes in 2.1.1
----------------
Add man page for tpmproxy.
Update tss2.spec file for Fedora
Remove old OSes that don't include a modern OpenSSL from CI list
----------------
Changes in 2.1.0
----------------
Parse new IMA event log template data fields.
Add option to verify IMA template data
Travis code supports Travis v3
Correct minor regression test script typos.
----------------
Changes in 2.0.1
----------------
Add omitted VS projects for NTC commands.
----------------
Changes in 2.0.0
----------------
Expand TPMU_SENSITIVE_COMPOSITE to handle HW TPMs that return 5 RSA
primes. This is an ABI (not API) break.
Add support for TPM2_ECC_Encrypt and TPM2_ECC_Decrypt
Add more EFI event log handlers and event tracing.
SW TPM test CA now uses SHA-256, not the deprecated SHA-1.
Port tpmproxy for TPM 2.0 to Linux and Windows.
Add many new EK root certificates.
Remove OpenSSL functions deprecated in 3.x.
Fix TSS bug when using encrypt and decrypt in a PWAP session.
Add build flag to suppress SHA-1.
----------------
Changes in 1.6.0
----------------
The major new feature is the UEFI event log parsing library.
TSS
Add TPM_TSS_NODEV to compile out HW TPM code.
Utilities
Add a UEFI parsing library, including event tracing. Add sample
application code and several sample UEFI event logs.
importpem can clear userWithAuth
getcapability supports the TPM ACT feature
TPM proxy - Add support for more than one TPM command per
connection. This is required for command line utilities that are more
than 1:1 with TPM commands.
Sample scripts
Add a sample solution to the pre-OS unseal man-in-the middle attack
and the attack that moves the TPM to another platform.
Add UEFI and IMA event log regression tests.
-----------------------
Changes in 1.5.0 (1627)
-----------------------
The major new feature is top to bottom support for the RSA 3072 and
ECC P384 algorithms.
TSS
Add ECC P384 support - salt and marshaling
Utilities
Add ECC P384 support, including openssl converters
Implement high range EK options. These include the new IWG templates
and policies, and new key sizes RSA 3072 and ECC NIST p384.
Update EK utilities and sample code support for EK password, EK RSA
bit size, EK ECC curves. Original functions are deprecated.
Add support for endorsement auth to test high range policies, and EK
password for the high range.
certifyx509 handles additional ECC curves and RSA bit lengths.
Add the EK high range IWG policy templates, including the policies,
and update the functions to get the templates. Understand that the
high range never has a nonce.
Update the regression tests to handle the additional command line
arguments. Add EK high range tests, including password, policy A and
policy C. Add RSA 3072 and ECC P384 key creation and test loops. Fix
bug in initkeys where keys were all p256.
Certificates
Add Nuvoton 2111 CA certificate
Minor
Update tracing
Add ifdefs for unused algorithms
Clean up new gcc false positives
-----------------------
Changes in 1.4.0 (1602)
-----------------------
Minor changes for most users.
TSS
Add TPM_TSS_NORSA and other ifndef options.
Clean up Windows Tbsi and remove Windows 7 support, which required
install hacks
Utilities
Add RSA 3072 support
Add IMA library support for d-modsig, modsig, and buf templates
Regression test
Add RSAES examples
OpenSSL commands can pipe to stdout
-----------------------
Changes in 1.3.0 (1561)
-----------------------
The tarball name and git tag now reflect the Linux .so name
Add support for OpenSSL 1.1.1
The sample code abstracts OpenSSL 1.0, 1.1, 1.1.1 API changes
New TSS Features
Add Support for TPM2_CertifyX509
Add TPM_TSS_NOCMDCHECK and TPM_TSS_NODEPRECATED for applications that
need a reduced code size
Remove some command parameter checks to permit TPM compliance testing
Enhance command parameter tracing
New Utility Features
Add TPM2_CertifyX509 certificate input, reconstruction, and validation
Attestation and sign utilities can sign with HMAC key
Visual Studio solution includes the TPM proxy, enhanced for TPM 2.0
Add an API and utility for TPM Stop (used for TPM coverage tests)
Add ECC signature tracing
Add utility and test for setcommandcodeauditstatus
Object creation can get the password from a file
Added Regression Tests (sample scripts)
NV state and power management
Primary key derivation parent
NV Pin index TPM fix
NV Certify new TPM behavior
Unseal with more than one PCR
TSS Bug Fixes
The check for EC point length should use x and y length.
-----------------------
Changes in 1470
-----------------------
Move to Visual Studio 2017, default to OpenSSL 1.1, and Windows 10 TBS
on Windows
Add autotools support on Linux
Fix many static analysis and run time tool alerts
Isolate OpenSSL functions to low level files and use void pointers in
preparation for mbedtls support
TSS Library
Improve TSS parameter tracing
Change large stack variables to malloc in TSS to handle small stack
platforms
Default to TPM device driver in 'no socket' environment
Add wrappers to algorithm IDs so they can be configured from the
command line
TSS Utilities and Sample Code
Add IMA sample custom template and big endian support
Improve getcapability utility tracing
Add VerifySignature utility HMAC support
Add create utility encrypted duplication support
Add nvread utility PEM support
Add a public name calculator utility
Add printattr utility to trace TPM hex attributes
Add EK certificate regression tests
Add more use cases to regression test scripts
-----------------------
Changes in 1331
-----------------------
Major
This is a (hopefully one time) ABI compatibility break. The API is
still compatible. The library is now libibmtss.so.1.
The regression tests now iterate through SHA-384 and SHA-512. Thus,
the newest software TPM is required for the regression test. The TSS
library itself is compatible with older software TPMs and any hardware
TPMs.
The API break in the unmarshal functions was rolled back. New
functions with a u suffix are implemented to support the unsigned
buffer sizes. The unmarshal function are unofficial but evidently are
widely used.
The default makefile now builds a combined TPM 1.2 and TPM 2.0 TSS
library
TSS Library
Increased and hard coded some constants rather than have dependencies
on algorithms. This caused the ABI break. This was required because
the open source vTPM was changed to add SHA-512 (four banks of PCRs).
The include directory is now ibmtss (Linux distro request)
TSS_File_ReadStructureFlag() is added to read structures that require
the allowNULL flag
TSS Utilities
Added support for SHA-256 and SHA-512 in all utilities.
Several more utilities support -ns to print in a form directly usable
by policies.
imaextend has a -sim option to calculate PCR values rather than extend
to the TPM
eventextend can calculate the boot aggregate
loadexternal and importpem have -den (encryption key) option
ekutils traces the X509 certificate subject for certificate chain
debugging
nvread can optionally dump the certificate
Added Infineon TPM 1.2 root certificates
The man pages are now included and are better formatted
Added audit PCR read example (atomic alternative to PCR read and
Quote)
Added example unseal PCR brittleness solution using policy authorize
-----------------------
Changes in 1234
-----------------------
TSS Utilities
Added support for about 20 basic TPM 1.2 commands
imaevent can take beginning and event options for incremental update
simulation
policymaker can can output a digest with no formatting. This can feed
into policyor policy.
policymaker can handle long strings for a complex policyor
zreadpublic can trace the Name in policymaker format
Added gettestresult
Added policyduplicationselect, with sample application code
Added policynamehash, with sample application code
Added sample code for duplicating a sealed object
importpem can create a storage key
createekcert attributes changed to agree with the PC Client
specification plus Microsoft Windows certification test, can support
platform auth
Packaged new ST Micro root certificates that are compatible with
OpenSSL 1.1
TSS Library
Library name changed to ibmtss at Debian's request.
Packaged generally useful ekutils and cryptoutils into a library
ibmtssutils. This is sample code. The API is not stable.
Added support for about 20 basic TPM 1.2 commands with the same
API. These commands permit implementation of a TPM 1.2 attestation
client.
Supports 'rawsingle' server type for the TPM 1.2 software TPM
TSS traces input structures in nested prints
Added TPM_TSS_NOECC to support OpenSSL builds without ECC.
Fixed ECMQV missing marshaling function
-----------------------
Changes in 1119
-----------------------
TSS Utilities
loadexternal supports DER ECC key, userWithAuth
sign, commit, zgen2phase, ecephemeral support counter
sign, loadexternal support signing scheme, storage key
salt key supports exponent 0x010001
importpem sets ECC scheme to ECDSA
nvread now defaults to reading entire index
New Utilities
tpm2pem - converts TPM2B_PUBLIC to PEM
tpmpublic2eccpoint - converts an ECC TPM2B_PUBLIC to TPM2B_ECC_POINT
Nuvoton TPM vendor proprietary commands
createekcert - provisions a SW TPM with RSA and ECC EK certificates
contributed makefile.mac for Mac
TSS Library - no changes
-----------------------
Changes in 1045
-----------------------
TSS utilities
Object templates can remove attributes from the default.
Continued to factor more useful sample code into cryptoutils.c and
ekutils.c
pcrread, readpublic, and nvreadpublic can take a session (useful for a
salted audit session)
Added Intel and NationZ EK root certificates. Documented the procedure
to retrieve Intel EK certificates.
Fixed some missing openssl 1.1 code
TSS Library
Added C++ wrappers to headers where they were missing
-----------------------
Changes in 996
-----------------------
TSS Library
Added support for session salt with an ECC key. Much thanks to Bill
Martin for contributing this complex code!
TSS_TPM2B_CREATION_DATA_Marshal() bug fixed.
TSS Utilities
Create, CreatePrimary, CreateLoaded, and ReadPublic can output the
public key in PEM format. VerifySignature can verify using the PEM
public key.
The crypto utility functions now have a fairly complete set of
translations between TPM, OpenSSL, and PEM format keys.
Added Commit and EC_Ephemeral, again thanks to Bill Martin for
supplying basic regression tests.
-----------------------
Changes in 974
-----------------------
TSS library
Added lightly tested initial support for a TSS that does not require a
filesystem and/or openssl. See the doc for limitations and
drawbacks. Please report bugs.
Removed the temporary Linux resource manager ioctl, which is no longer
needed.
Fixed two bugs based on TPM spec clarifications:
HMAC calculation on a salted policy session
Parameter encryption using a policy session.
Fixed bug when the caller specified an encrypted password session.
Added new TPM rev 142 algorithm identifiers.
TSS utilities
Added certifycreation.
create and createprimary can output a creation ticket.
Added many more regression tests.
Removed erroneous BITFIELD_LE from Visual Studio projects.
certify does not sanity check extraData for ECDAA scheme.
-----------------------
Changes in 930
-----------------------
No bug fixes. Many utility and sample code enhancements based on user
requests.
rsadecrypt can add padding and OID, to support signing with arbitrary
OID
added ST Micro root certificates to certificate store
pcrread has -ns option to pipe to PolicyPCR policy, supports multiple
bank reads
elliptic curve - storage key template
TSS has support for preliminary Linux resource manager
Added sample code (cryptoutils.c) for converting RSA and ECC PEM
public and key pair files to TPM format.
loadexternalpem and import handle ECC PEM keys
getcapability printing supports TPM rev 138 properties
imaextend supports SHA-256 bank
Removed erroneous IBM Confidential marking from Nuvoton support
files. Sorry about that.
-----------------------
Changes in 886
-----------------------
No bug fixes.
The major change (in the makefile) is that session state is now
encrypted by default. See the documentation on how to use this, or get
the old behavior back, using a build option or environment variable.
An IMA (Linux Integrity Measurement Architecture) library is included,
along with an imaextend utility.
An importpem utility demonstrates how to import (wrap) a plaintext
key.
tssproperties.h was moved up from tss2/, since it is not a public
header.
-----------------------
Changes in 851
-----------------------
No TSS bug fixes.
Support for OpenSSL 1.1 on Linux. It is not tested on Windows. The
crypto has been split into library independent and library dependent
files, to make adding other crypto libraries easier.
Support for Nuvoton TPM configuration.
-----------------------
Changes in 825
-----------------------
No TSS bug fixes.
Support for new TPM rev 138 commands. Regression test requires SW TPM
revision 138.
Added ifdefs for a reduced function TSS for an environment with no
filesystem or crypto
Name now tracked during TPM2_NV_Definespace(). No need for
TPM2_NV_ReadPublic().
Fixed utility bug when reading or writing NV space in chunks
Removed TPM2_PolicySigned() callback for signature in favor of simpler
approach. See utility.
Decoupled TPM and TSS by replicating common files
-----------------------
Changes in 755
-----------------------
No changes or bug fixes.
Open sourced the web based TPM demo.
Factored key templates into common functions for better utility
The TSS now supports big endian platforms.
-----------------------
Changes in 713
-----------------------
Headers refinements
Increased some structure maximum sizes to handle future TPM
maximums. This breaks binary compatibility, requiring a recompile
against the new headers.
Changed headers so makefile -DTPM_TSS is no longer required.
Headers are now in a tss2/ subdirectory, which is compatible with a
future install in /usr/include/tss2/.
Utilities enhancements
getcapability prints TPM_CAP_PCRS, algorithms and attributes as text.
pcrextend can take multiple hash algorithms.
readpublic can store the public data.
policypcrmaker now correctly handles selection all 24 PCRs.
loadexternal and verifysignature accept ECC keys.
startup permits only self test.
-----------------------
Changes in 653
-----------------------
Changed the rest of the library function namespaces from TSE and TST_
to TSS_. This was a remnant of a proposal to the TCG, but was not a
good long term design. Changed the file names for consistency.
Internally changed to a more secure approach to salted sessions, no
API change Added more sample utilities and options:
Quote takes multiple PCRs
-----------------------
Changes in 593
-----------------------
There were no significant changes to the TSS library other than the
utility function namespacing. The sample code and command line tools
continue to expand:
MakeCredential, ActivateCredential samples
event log parsing samples and utilities
EK creation and EK template handling samples and utilities
EK certificate validation samples and utilities
loadexternal private key sample and utilities, documented optional
private key flag
getrandom sample can get numbers with no 0x00 bytes, for auth values
TSS will not permit defining an NV index with policy delete and no
policy, since it cannot be undefined
create uses CFB (mandatory) rather that CBC (optional)
nvread and nvwrite utilities can handle NV size greater than buffer
size
quote can specify PCR bank
attestation utilities can specify RSA or ECC signing
-----------------------
Changes in 470
-----------------------
Added a context (create and delete). This complicates the API a bit
but permits more graceful closing of connections. See the manual.
Completed the 'createek' sample to demonstrate how to use the EK
template and EK nonce to generate a primary key. Validated with the
Nuvoton HW TPM.
Completed the Windows version of the regression test, which can run
against either the gcc or Visual Studio build.
Added a few missing utility VS projects. (The code was there all
along.)
-----------------------
Changes in 455
-----------------------
Utilities use CFB rather than CBC for better HW TPM
interoperability. Developers, of course, can use whatever mode they
like.
TPML_Digest_Unmarshal should permit max size of 8.
Added C++ wrappers around headers and (reluctantly) changed xor to
xorr for header file C++ compatibility.
Added a createek utility that creates the primary EK from a TCG
standard template in NV. This is not completely tested yet.
-----------------------
Changes in 439
-----------------------
Added pcrallocate utility.
Updated code, Visual Studio project, and documentation support for a
Windows 10 hardware device.
Added a makefile.mak for mingw builds.
Open now only occurs on the first transmit (socket and device driver),
so the TSS can operate with a Linux resource manager (not tested) and
a Windows 10 TBS (tested).
Notes:
The Windows 10 interface was tested on a loaner platform. Without the
ability to regression test, I rely on users to report bugs.
There is currently no way to close a connection other than exiting. To
add that, I would likely add a "TSS context" that the user creates and
deletes. Is this useful or an unnecessary complication?
-----------------------
Changes in 387
-----------------------
Fixed bug in ./clear command line argument parser that prevented -v
from working properly.
-----------------------
Changes in 383
-----------------------
There were no significant changes or bug fixes to the TSS
library. Some utilities and samples were enhanced.
A shutdown utility is included, and some utilities have additional
command line options.
There is sample code for converting between openssl and TPM key
tokens.
The Visual Studio projects no longer require static linking to openssl
when the PEM functions are used.
The beginning of a Windows BAT file regression test is included. The
Linux version is more comprehensive.
A raw socket interface (just the TPM Part 3 packet) option is added to
the existing Microsoft simulator (wrapped packet) format.
-----------------------
Changes in rev 356
-----------------------
There were no significant changes or bug fixes to the TSS
library. Some utilities and samples were enhanced.
Included an example in the regression test for sealing to PCRs.
Attestation utilities can accept qualifyingData.
Create can optionally create a rev116 symmetric key. Up to rev116,
there was one attribute for both encrypt and decrypt. After 116, there
are two attributes.
Minor changes to support -O3 compiler optimization
-----------------------
Changes in rev 346
-----------------------
There were no significant changes or bug fixes to the TSS library, but
this should make the install and build easier.
Regression test prints error message from failing command
Regression test prints warnings for some errors due to a TPM that does
not implement errata.
TSS closes the socket the way the TPM simulator expects. The TSS
worked correctly, but this eliminates the simulator console error
messages.
Linux TSS makefile adds rpath so there is no need to set
LD_LIBRARY_PATH
Changed TSS link order to satisfy Ubuntu build
Removed Visual Studio solution dependency on mingw install
-----------------------
Changes in rev 333
-----------------------
Utilities have separate name algorithm and entity algorithm.
ECC unmarshal updated for TPM spec errata
create utility can create ECC signing key
Added applink.c to tarball for Windows gcc compile
Removed requirement to install ec_lcl.h, define TPM_TSS macro