Skip to main content
This revision made September 15, 2011 12:38, by ronaldtoegl

Technology Compatibility Kit Reference Guide for JSR-321

Specification Lead: Ronald Toegl, IAIK, Graz University of Technology

Copyright © 2011 IAIK, Graz University of Technology.

This TEXT document is citing material from the JSR 299 TCK documentation and therefore licensed under the the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


This guide describes how to download, install, configure, and run the Technology Compatibility Kit (TCK) used to verify the compatibility of an implementation of the JSR-321: Trusted Computing API for Java specification.

The JSR321 TCK is built atop the JUnit Test framework to define test cases and JT Harness as GUI test management tool. It is targeted for Java SE.

The JSR321 TCK is provide under the GNU Public License v2 with Classpath exception.

Who Should Use This Document.

This guide is for implementors of JSR321 technology to assist in running the test suite that verifies the compatibility of their implementation.

Before You Read This Book

Before reading this guide, you should familiarize yourself with the Trusted Computing Group's (TCG) specifications regarding the Trusted Platform Module (TPM), version 1.2 and the TCG Software Stack, version 1.2.

Getting Acquainted with the TCK

The JSR321 TCK must be used to ensure that your implementation conforms to the JSR321 specification. This part introduces the TCK, gives some background about its purpose, states the requirements for passing the TCK and outlines the appeals process.

In this part you will learn where to obtain the JSR321 TCK and supporting software. You are then presented with recommendations of how to organize and configure the software so that you are ready to execute the TCK.

Finally, it discusses the reporting provided by the TCK.

TCK Primer

A TCK, or Technology Compatibility Kit, is one of the three required pieces for any JSR (the other two being the specification document and the reference implementation). The TCK is a set of tools and tests to verify that an implementation of the technology conforms to the specification. The tests are the primary component, but the tools serve an equally critical role of providing a framework and/or set of SPIs for executing the tests.

A TCK is entirely implementation agnostic. Ideally, it should validate assertions by consulting the specficiation's public API.

Compatibility Testing

The goal of any specification is to eliminate portability problems so long as the program which uses the implementation also conforms to the rules laid out in the specification.

Executing the TCK is a form of compatibility testing. It's important to understand that compatibility testing is distinctly different from product testing. The TCK is not concerned with robustness, performance or ease of use, and therefore cannot vouch for how well an implementation meets these criteria. What a TCK can do is to ensure the exactness of an implementation as it relates to the specification.

Compatibility testing of any feature relies on both a complete specification and a complete reference implementation. The reference implementation demonstrates how each test can be passed and provides additional context to the implementor during development for the corresponding assertion.

Why Compatibility Is Important

Java platform compatibility is important to different groups involved with Java technologies for different reasons:

  • Compatibility testing is the means by which the JCP ensures that the Java platform does not become fragmented as it's ported to different operating systems and hardware.
  • Compatibility testing benefits developers working in the Java programming language, enabling them to write applications once and deploy them across heterogeneous computing environments without porting.
  • Compatibility testing enables application users to obtain applications from disparate sources and deploy them with confidence.
  • Conformance testing benefits Java platform implementors by ensuring the same extent of reliability for all Java platform ports.

The JSR321 specification goes to great lengths to ensure that programs written for Java SE are compatible and that the TCK is rigorous about enforcing the rules the specification lays down.

About the JSR321 TCK

The JSR321 TCK is designed as a portable, configurable and automated test suite for verifying the compatibility of an implementation of the JSR321 specification. The test suite is provided as suite of JUnit test cases and helper functionalities that allows integration in the JT Harness test framework.

The TCK provides a suite of tests that cover the JSR321 API specification. It consists of the following folders and files:

      ---> classes/  
      |    |
      |     ---> javax.trustedcomputing.tpm/**
      |          |
      |          ---> (various test cases)          
      ---> java/
      |    |
      |     ---> javax.trustedcomputing.tpm/**
      |          |
      |          ---> (the java files for the test cases)
      ---> lib/
      |    |---> (dependencies of the test tools and their licences)
      ---> jsr321-tck-utils.jar (helper classes for the test suite)
           testsuite.jtt (TestSuite configuration for JT Harness)
  (an example configuration file)
  (a template start script for Linux)
   (a template start script for Windows)
  (a pre-configured start script for IAIK's RI) (not normative)
           iaik_run.cmd (a pre-configured start script for IAIK's RI) (not normative)
           README.txt (this file)

Difference compared to previous revision
| ---> jsr321-tck-utils.jar (helper classes for the test suite) testsuite.jtt (TestSuite configuration for JT Harness) (an testsuit example.jtt (TestSuite configuration for JT Harne configuration filess) (a template start script for Linux) (a template start script for Windows) (a pre-configured start script ce) (a template start script for Linux) (a template start script for Windows) (a pre-configured start script fonsidering IAIK's reference implementationor IAIK's RI) (not normative) iaik_run.cmd (a pre-configured start script cfonsidering IAIK's reference implementationor IAIK's RI) (not normative) README.txt (this file)
Please Confirm