NIST Special Publication 800-85A PIV Card Application and 

Middleware Interface Test 

Guidelines (SP800-73 compliance)

April 2006

I N F O R M A T I O N S E C U R I T Y

Computer Security Division 

Information Technology Laboratory

National Institute of Standards and Technology

Gaithersburg, MD, 20899-8930 

handramouli

lu

Ramaswamy C

Levent Eyubog

Ketan Mehta 

U.S. De U.S. Department of Commerce

Carlos M. Gutierrez, Secretary

National Institute of Standards and 

.

National Institute of Standards and 

William A. Jeffrey, Director
 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Reports on Computer Systems Technology

st

administrative, technical, and physical standards and 

guidelines for the cost-effective security and privacy of non-national security-related information 

in federal information systems. This special publication 800-series reports on ITL’s research, 

guidelines, and outreach efforts in information system security, and its collaborative activities 

with industry, government, and academic organizations. 

The Information Technology Laboratory (ITL) at the National Institute of Standards and 

Technology (NIST) promotes the U.S. economy and public welfare by providing technical 

leadership for the nation’s measurement and standards infrastructure. ITL develops tests, te

methods, reference data, proof of concept implementations, and technical analyses to advance 

the development and productive use of information technology. ITL’s responsibilities include 

the development of management,

 i 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Acknowledgements 

The authors (Ramaswamy Chandramouli of NIST, Levent Eyuboglu and Ketan Mehta of Booz 

Fe

do

the

and

Allen Hamilton) wish to thank their colleagues who reviewed drafts of this document and 

contributed to its development. Special thanks to the General Services Administration and 

deral Identity Credentialing Committee for their contribution to the development of this 

cument. The authors also gratefully acknowledge and appreciate the many contributions from 

public and private sectors whose thoughtful and constructive comments improved the quality 

accuracy of this publication.

 ii 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Table of Contents

1. INTRODUCTION .................................................................................................................... 1 

1.1 AUTHORITY .......................................................................................................................1 

1.2 PURPOSE ............................................................................................................................2 

2.1 TEST PLAN ........................................................................................................................6 

2.2 TEST SET-UP ......................................................................................................................6 

2.3 TEST SYSTEM CONFIGURATION ...........................................................6

3.2 PIV CARD APPLICATION TESTS.......................................................................................11 

3.2.1 PIV Card Application Card Command Interface Tests............................................ 11

3.2.2 PIV Data Objects Accessibility and Storage Tests................................................... 12

4. DERIVED TEST REQUIREMENTS..................................................................................... 14 

5. TEST ASSERTIONS.............................................................................................................. 15 

5.1 MAPPING FROM TEST CATEGORIES TO TEST ASSERTIONS ...............................................15 

5.2 PIV CLIENT API TEST ASSERTIONS ................................................................................15 

5.3 PIV CARD COMMAND INTERFACE TEST ASSERTIONS .....................................................16 

5.4 PIV DATA OBJECTS ACCESSIBILITY AND STORAGE TEST ASSERTIONS ...........................17 

6. TEST AND COMPLIANCE DOCUMENTATION .............................................................. 19 

7. ACCEPTANCE CRITERIA................................................................................................... 20 

7.1 ACCEPTANCE CRITERIA FOR THE PIV MIDDLEWARE TEST..............................................20 

7.2 ACCEPTANCE CRITERIA FOR THE PIV CARD APPLICATION TESTS...................................20 

8. TEST AND COMPLIANCE PROCESS................................................................................ 21 

8.1 FAILURE REVIEW.............................................................................................................22 

APPENDIX A— DERIVED TEST REQUIREMENTS............................................................ A-1 

APPENDIX B— PIV CLIENT API TEST ASSERTIONS ....................................................... B-1 

APPENDIX C— CARD COMMAND INTERFACE TEST ASSERTIONS............................ C-1 

APPENDIX D— TEST REPORTS............................................................................................ D-1 

APPENDIX E— DTRS TO TEST ASSERTION MAPPING ....................................................E-1 

1.3 SCOPE ................................................................................................................................2 

1.4 TARGET AUDIENCE............................................................................................................3 

1.5 DOCUMENT OVERVIEW......................................................................................................3 

2. SYSTEM OVERVIEW ............................................................................................................ 5

..............................

2.3.1 PIV Middleware Test Configuration........................................................................... 7

2.3.2 PIV Card Application Test Configuration .................................................................. 8

3. TEST SUITE ELEMENTS..................................................................................................... 10 

3.1 PIV MIDDLEWARE TESTS ................................................................................................10 

 iii 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

APPENDIX F— PIV MIDDLEWARE IMPLEMENTATION CONSIDERATIONS 

(INFORMATIVE) .......................................................................................................................F-1 

.... G-1 

...................................................................................... 7 

Figu e .. 9 

Tab 5

Table 5 API and Number of Test Cases...................................... 16 

Table 5-3. L 17 

Tab A -10

APPENDIX G— ACRONYMS .............................................................................................

List of Figures 

Figure 1: PIV Conformance Test Architecture............................................................................... 5 

Figure 2: Test System Configuration.............................................................................................. 7 

Figure 3: Middleware Test Configuration

r 4: PIV Card Application Test Configuration.....................................................................

List of Tables 

le -1. Cross-referencing Guide.............................................................................................. 15 

-2. List of Commands in Client

ist of Commands in Card Application Command and Number of Test Cases .........

le -1 PIV Command Mapping.......................................................................................... A

 iv 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

1. Introduction 

The Personal Identity Verification (PIV) of Federal Employees and Contractors, Federal 

essing Standard 201 (FIPS 201) was developed to establish standards for 

1

(NIST SP

800-73), specifies interface requirements for retrieving and using the identity credentials 

e PIV Card. It also defines a PIV data model, which details the structure and 

format of the information stored on the PIV Card. 

+ NIST SP 800-78 specifies the cryptographic algorithms and key sizes for performing 

Thi e

detailed the following PIV software components: 

r all agency operations and assets, but such 

stan r not apply to national security systems. This recommendation is 

con t the Office of Management and Budget (OMB) Circular A130, Section 8b(3), “Securing Agency Information Systems,” as analyzed in A-130, Appendix 

-130, Appendix III. 

Thi e

govern luntary basis and is not subject to copyright. Nothing in this 

docume g

on fede

Information Proc

identity credentials and contains two parts. Part 1 (PIV-I) describes the minimum requirements 

for a federal personal identification system that meets the control and security objectives of 

Homeland Security Presidential Directive (HSPD) 12. Part 2 (PIV-II) gives the technical 

specifications of components and processes required for the interoperability of PIV Cards with 

the access control and PIV card management systems throughout the Federal Government. FIPS

201 is accompanied by three documents: 

+ National Institute of Standards and Technology Special Publication 800-73

from th

+ NIST SP 800-76 contains technical specifications for biometric data mandated in FIPS 

201. 

cryptographic operations on PIV data objects defined as part of the PIV data model. 

s test guidance document specifies the test plan, processes, derived test requirements, and th

test assertions/conformance tests for testing

+ PIV middleware (implements PIV Client API) 

+ PIV card application. 

1.1 Authority

This document has been developed by the National Institute of Standards and Technology 

(NIST) in furtherance of its statutory responsibilities under the Federal Information Security

Management Act (FISMA) of 2002, Public Law 107-347. 

NIST is responsible for developing standards and guidelines, including minimum requirements, 

for providing adequate information security fo

da ds and guidelines shall

sis ent with the requirements of

IV: Analysis of Key Sections. Supplemental information is provided A

s r commendation has been prepared for use by federal agencies. It may be used by nonmental organizations on a vo

nt should be taken to contradict standards and guidelines made mandatory and bindin

ral agencies by the Secretary of Commerce under statutory authority. Nor should this 

1

 The term PIV Card in the context of this document refers to a smart card loaded with a PIV card application. 

 Page 1 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

recommendation be interpreted as altering or superseding the existing authorities of the Secretary 

of Commerce, Director of OMB, or any other federal official. 

1.2 Purpose 

The objective of this document is to provide test requirements and test assertions that could be 

ance/conformance of two PIV components—PIV middleware and PIV 

card application with the specifications in NIST SP 800-73. Because NIST SP 800-73 

for meeting interoperability goals of FIPS 201, the conformance 

sts in this document provide the assurance that the set of PIV middleware and PIV card 

applica and

procure

1.3 S

This o

of s c

+ lient-Application Programming Interface (Chapter 6 of SP 800-73). 

+ End-Point PIV Card Application Card Command Interface (Chapter 7 of SP800-73). 

(Chapter 4 of SP 800-73) and End-Point Data Types and their 

800-73).

he fun

sup rt plication

Card C by PIV card application with appropriate security 

con i

asso ia

concepts outlined in End-Point Concepts and Co

on P ard Application have

to b te

clas s

middle ded in this document consists of 

the l

+ 

The o

in

3 specifications.

requirements under DTRs as well as tests with appropriate execution conditions for each 

ponse status codes

specified in SP 800-73. 

used to validate the compli

specifications were developed

te

tions that have passed these tests are interoperable. This in turn facilitates marketing

ment of FIPS 201-conformant products that meet the goals of HSPD-12. 

cope

d cument provides guidelines for running conformance tests for the following three classes

pe ifications in NIST SP 800-73: 

End-Point C

+ End-Point Data Objects

Representations (Chapter 5 of SP

T ctions specified in the End-Point Client-Application Programming Interface are to be 

po ed by PIV middleware. The commands specified in the End-Point PIV Card Ap

ommand Interface are to be supported

dit ons for executing each command and for accessing/storing each of the data objects 

c ted with the application. The overall design of the commands has to be based on the 

nstructs. The presence of mandatory data objects 

the IV card has to be verified. The data objects associated with PIV C

e sted for their accessibility and storage using the specified identifiers. Thus, the three 

se of specifications listed above span the following two main PIV components: PIV 

ware and PIV card application. Hence the test suite provi

fol owing two broad categories of tests:

PIV middleware tests 

+ PIV card application tests. 

ab ve tests are developed through the following two-step process: 

+ Derived test requirements (DTR). These are constructed from the ‘Shall’ statements

SP 800-7

+ Test assertions. These provide the tests that need to be performed to test each of the 

of the commands in the interface to realize the associated return/res

 Page 2 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Thi o

such as c

reader driv

mo e

conform 201.

1.4 Target Audience 

This document is intended to: 

+ Enable developers of PIV middleware and the PIV card application to develop their 

software modules to be testable for interface requirements specified in SP 800-73. 

+ Enable developers of PIV middleware and the PIV card application to develop self-tests 

as part of the development effort. 

+ Enable testing laboratories authorized to perform conformance tests on PIV middleware 

and the PIV card application to develop tests that cover the test suite provided in this 

document. 

1.5 Document Overview 

The document is organized as follows: 

+ Section 2 provides a conceptual software overview of a typical PIV system and 

introduces the PIV test components. 

+ Section 3 lists the various elements of the test suite under the two broad categories of 

tests (PIV middleware tests and PIV card application tests) provided in this document. 

+ Section 4 provides an overview of the DTR construction process. 

+ Section 5 gives a brief description of the test assertion for each of the three specification 

classes covered by this document (refer to Section 1.3). 

+ Section 6 explains the documentation required from both the component owners and test 

labs for conducting the testing process. 

+ Section 7 details the acceptance criteria for each type of test. 

+ Section 8 explains the test compliance process and failure review. 

+ Appendix A includes derived test requirements (DTRs) based on specifications in SP 

800-73. 

+ Appendix B includes client Application Programming Interface (API) test assertions. 

+ Appendix C includes PIV card command interface test assertions. 

s d cument does not provide conformance tests for any other software used in the PIV system

the back-end access control software, card issuance software, card reader/biometri

ers, and specialized service provider software such as Cryptographic Service Provider 

dul s and Biometric Service Provider Modules. This document does not address or provide 

ance tests for SP800-76 or FIPS

 Page 3 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

+ Appendix D provides the format for reporting of test results by referencing the relevant 

sections from Appendices B and C that describe the corresponding test scenarios. 

+ Appendix F discusses implementation considerations for PIV Middleware. 

+ Appendix G describes the textual representations used in the document. 

+ Appendix E provides the requirements treacability matrix from DTRs to the test scenarios

in Appendix B and Appendix C. 

 Page 4 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

2. System Overview

The conceptual architecture involving the two PIV software components for which conformance 

tests are given in this document is shown in Figure 1. The conformance test in this document 

ie s highlighted with dashed lines in the Figure 1. 

+ at is the interface between an agency’s PIV 

ard application. It allows the agency applications to remain 

s the

1. It implements the commands in the PIV Client Application Programming 

P 800-73).

a

7 of SP 800-73) and thus communicates with the PIV card application. 

+ The PIV card application resides on the card, implements the commands in the PIV Card 

Command Interface (section 7 of SP 800-73) and provides access to objects of the PIV 

Data Model. The PIV Data model defines the logical use of the on-card application space 

appl s to the area

Figure 1: PIV Conformance Test Architecture 

PIV middleware is a software application th

implementation and the PIV c

independent of the underlying operating system platform. The PIV middleware ha

following two functions. 

Interface (section 6 of S

2. It generates the appropriate commands (also called Application Protocol Dat

Units or APDUs) in PIV Card Command Interface (card edge interface – section 

PIV Client Application Programming Interface

PIV Card Command Calls

Card Reader Driver

Card Reader

PIV Card Application

PIV Data Model

PIV Card Command 

Interface

PIV

MIDDLEWARE

Host

PC

Smart C

Read

ard

er

PIV

Test Toolkit Application

PIV Client Application Programming Interface

PIV Card

CARD

Command Calls

Card Reader Driver

Card Reader

PIV Card Application

PIV Data Model

PIV Card Command 

Interface

PIV

MIDDLEWARE

Host

PC

Smart C

Read

ard

er

PIV

Test Toolkit Application

CARD

 Page 5 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

including the SP800-73 required data objects, and data elements, along with the size and 

structure of each object. 

2.1 Test Plan 

The test plan identifies the tasks/artifacts required for testing the PIV middleware and PIV card 

application. These artifacts include the following: PIV middleware and smart card populated 

with PIV card application; the test toolkit (or test scripts), which implements the test assertions; 

and the various infrastructure devices needed to interface with the card, such as the card 

acceptance device (called the card reader). The components involved in the test plan and the 

elements of the test configuration for the two broad categories of tests presented in this document 

are discussed in the next two subsections. 

2.2 Test Set-up 

The test system consists of the follo

A test too puter (PC) 

eader

or 

 A dual interface reader

+ A mechanism to input personal identification number (PIN) (e.g. a PIN pad or a 

ontact interface that is 

O/IEC 

Th

co

2.3 Test System Configuration 

The tes th a middleware test and a card 

ap components to be tested, as explained in Section 3. 

 

wing components:2

+ lkit application software that resides on a personal com

+ Smart card readers 

 An ISO 7816 and PC/SC-compliant contact-based smart card reader and

 An ISO 14443 and PC/SC-compliant contactless smart card r

keyboard

A set

) that can be transmitted to the SC Reader. 

+ of test PIV Cards, loaded with PIV card application, with a c

compliant with ISO/IEC 7816 and a contactless interface that is compliant with IS

14443 or a test PIV card emulator 

+ PIV Middleware application

ese compon

nducted in

ents will be used in different configurations based on the type of test being 

the test bed.

t system shown in Figure 2 will be configured in bo

plication test to accommodate the different

2

 Compliance of the readers and input devices with an external standard such as ISO/IEC 7816 is not addressed in

this document. 

 Page 6 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Figure 2: Test System Configuration 

Test 

PIV Card

Dual Interface 

Card Reader

2.3.1 PIV Middleware Test Configuration 

nd

terface). The middleware test configuration is depicted in Figure 3. 

The middleware test configuration is used to test a vendor’s middleware software application 

that implements the PIV client API and generates the appropriate commands in PIV card 

command interface (refer Table A-1 for mapping between client API and card comma

in

Figure 3: Middleware Test Configuration 

PIV Client Application Programming Interface 

PIV Card Command Calls 

Card Reader Driver

Card Reader 

PIV Card Application 

PIV Data Model 

PIV Card Command 

Interface 

PIV MIDDLEWARE 

– Implementation 

Under Test

Host 

PC 

Smart Card 

PIV CARD 

(SP 800-73 

Conformant) 

Test Toolkit Application 

PIV Card Emulator 

(SP 800-73 Conformant) 

OR

Reader 

 Page 7 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

The following list shows the test system components included in this configuration:

t of this test (also called as 

One

+ Contact and contactless smart card readers or a dual interface reader together with 

+ 

+ conformant PIV Card loaded with “SP 800-73 conformant PIV 

card application” (for definition refer section 7.2) 

n

t

installed on the Test Computer and interacts with the FIPS 201 conformant test cards via 

2.3.2 pplication Test Configuration

The card application test configuration is used to test any PIV card application through 

commands of the PIV card command interface defined in SP 800-73. The following list shows 

the t d in this configuration:

ware 

a contactless smart card readers or a dual interface reader 

rd loaded with PIV card application that supports contact and contactless 

nd is the subject of this test. (also called Implementation Under Test or IUT) 

For e Test, the test system shown in Figure 2 will be configured such 

+ A test toolkit application software 

+ Vendor provided PIV middleware which is the subjec

Implementation Under Test or IUT) 

of the following combinations

A PIN input mechanism together with 

A dual interface FIPS 201

 OR 

+ A PIV card emulator that emulates the behavior of PIV card application. 

+ A printer for reporting and documenting the test results 

The test toolkit application software resides on the Test Computer, and facilitates the executio

and management of both test suites explained in Section 3. For the PIV Middleware Test, the 

test system (Figure 2) will be configured so that the vendor provided PIV middleware under tes

is also

the card reader(s). 

PIV Card A

tes system components include

+ A test toolkit application soft

+ Contact and

+ A PIN input mechanism 

+ A PIV Ca

interface a

th PIV Card Application

that the test toolkit application software directly interacts with the PIV Card under test via the 

card reader(s). The PIV Card Application Test configuration is depicted in Figure 4. 

 Page 8 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

 Page 9 

Test Toolkit Application 

Card Reader Driver

Figure 4: PIV Card Application Test Configuration 

Card Reader 

PIV Card Application 

PIV Data Model 

PIV Card Command 

Interface 

Host 

PC 

Smart Card 

Reader 

PIV

Imple tion

Under Test

CARD

menta
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

3. Test Suite Elements 

Based on the conceptual software architecture shown in Figure 1, the PIV software components 

that are involved in and are subject to testing are as follows: 

+ PIV middleware that implements the commands in the PIV Client API and interfaces 

ents the PIV application card command interface, 

t of PIV data objects, and facilitates realization of PIV 

3

hese tests will validate that the PIV middleware conforms to the specification in section 6 of SP 

implementation of all commands in PIV client 

AP e o communicate

with the PIV

application lidate the functional requirements or the testing of the 

FIPS 201-m are covered under the PIV data model 

tests. 

The follow tested for conformance: 

+ piv

+ pivDisconnect 

+ piv

+ piv

+ piv

+ piv

These functions will be tested for their response to both the valid and the error conditions as 

defi d

PIV r

with PIV card application (resident on the card) by generating commands (APDUs) in

PIV card command interface.

+ PIV card application that implem

accesses and modifies the conten

authentication use cases. 

.1 PIV Middleware Tests 

T

800-73. Conformance criteria includes correct

I, g neration of appropriate commands in the PIV card command interface t

 card application and return the prescribed response codes to the calling agency 

. This test, however, does not va

andated card application parameters, which

ing client API functions are

Connect

+ pivSelectCardApplication 

LogIntoCardApplication

GetData

LogoutOfCardApplication

Crypt

+ pivPutData 

+ pivGenerateKeyPair. 

ne by this document. To conduct these tests, a smart card with an “SP 800-73- conformant 

ca d application” (refer section 7.2 for definition) must be accessible.

 Page 10 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

3.2 P

PIV card application tests cover the following: 

+ The PIV card application card command interface as per Chapter 7 of SP 800-73 (based 

on concepts in Chapter 3 of SP 800-73) including the security conditions for executing 

each command in the interface as well as the security conditions for accessing and storing 

each of the associated data objects. 

+ Presence of all mandatory data objects as well as accessibility and storage of all 

implemented data objects using the identifiers specified in Chapters 4 and 5 of SP 800-

73. 

The tests are performed through test scripts communicating directly with a PIV Card through the 

API of the driver that comes with the card reader. 

3.2.1 PIV Card Application Card Command Interface Tests 

These tests will validate that the card under test can successfully execute the commands in the 

PIV card command interface. Successful execution constitutes the card responding with 

appropriate data and response status codes to the commands sent by the test system. It also 

involves setting of certain state variables within the PIV Card. For example, the criteria for 

successful execution of the SELECT command involves the following: 

+ The Response Status Code returned is ”90 00”. 

+ The application property template is returned with the right format and content. 

+ The “PIV card application” is the value of “currently selected application” (state 

variable) on the card. 

The card command interface test suite includes conformance tests for the following PIV card 

application commands: 

+ Data access commands 

 SELECT 

 GET DATA 

+ Card authentication commands 

 VERIFY 

 CHANGE REFERENCE DATA 

 RESET RETRY COUNTER 

 GENERAL AUTHENTICATE 

+ Credential initialization and administration commands 

 PUT DATA 

IV Card Application Tests

 Page 11 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

 GENERATE ASYMMETRIC KEY PAIR 

aphic Authentication, Currently Selected 

+ 

3.2.2 

The s

+ 

+ 

On-card printed information 

ects will be validated for the following conditions. 

d

The card edge commands will be validated against the following conditions: 

+ Card interface type (contact vs. contactless) 

+ Precondition for use (PIN verified, Cryptogr

Application value) 

+ Expected Response status codes 

Appropriate State Variables set in the card. 

PIV Data Objects Accessibility and Storage Tests 

te ting covers the following data objects 

The five mandatory data objects as defined in Chapter 4 of SP 800-73 

 Card capabilities container 

 Cardholder unique identifier (CHUID) 

 X.509 certificate for PIV authentication 

 Cardholder fingerprint 

 Security object 

The five optional data objects, also defined in Chapter 4 of SP 800-73 



 Cardholder facial image 

 X.509 certificate for PIV digital signature 

 X.509 certificate for PIV key management 

 X.509 certificate for. Card Authentication 

The data obj

+ Presence of all mandatory data objects and those optional objects in the vendor 

documentation. 

+ Accessibility and storage of data objects using the appropriate BER-TLV tags (specifie

identifiers -Chapter 4 of SP 800-73). 

+ Appropriate Container size allocations for each of the data objects 

+ Data Objects access rule (PIN vs. no PIN) 

 Page 12 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

+ Security Condition for Data Objects Storage (Cryptographic Authentication) 

+ Appropriate Card Interface type for accessing each of the data objects (contact vs. 

contactless) 

 Page 13 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

4. Derived Test Requirements 

DTRs show the type of tests required based on the specifications in SP 800-73. These 

specifications cover expected command behavior (in the case of interface specification), data 

object representation (in the case of PIV data model) and data contents (in the case of PIV 

authentication use cases). 

Each DTR consists of the following: 

+ Actual condition statements taken/derived from the SP 800-73 specification – these 

include conditions for successful command execution for each command as well as

exception behaviors explicitly called out through ‘shall’ statements in SP 800-73. Those 

and D) and are not part of the DTR conditio ents are 

ntified by codes starting with ‘AS’ ce that denotes the 

n in this document where they occur. 

r Information – these lude information that the vendors are mandated 

quired Vendor Information is identified by 

h ‘VE’ followed by a nning sequence that denotes the section in this 

ument where they occur. Required Test Procedures – these are actions that the tester 

to perform in order to satisfy the re irements stated in actual condition statements. 

ude verifying the information mandated in the “Required Vendor Information” 

ing software-based tests. It must be mentioned 

however that some of the required test procedures will not call out explicitly for 

verificatio on”. In these

ed by the vendor and 

d by codes starting with 

in this document where they 

Val t

The D

such as res are provided for these

DT , he tester checks

the vendor documentation for claimed compliance with such requirement or the presence of an 

external test/compliance certificate obtained from the related standards testing body, when 

ic

Some DTRs cannot be validated through the test tools provided in this document. For example, 

s.

ard

application that is resident in the Integrated Circuit Card (ICC)” is validated through the entire 

exception behaviors that are implicit in SP 800-73 through listing of error codes 

associated with each command are tested only through Test Assertions (Appendices B, C 

n statements. The condition statem

ide followed by a running sequen

sectio

+ Required Vendo inc

to provide in their documentation. The Re

codes starting wit ru

doc

has qu

These incl

for the condition as well as perform

n of information in the associated “Required Vendor Informati

instances it is implicitly assumed that such information is provid

verified by the tester. The Required Test Procedures are identifie

TE followed by a running sequence that denotes the section

occur. 

ida ions of some DTRs are not covered by the test assertions provided in this document. 

se TRs require compliance of the component with an external specification or standard 

ISO/IEC 7816 or ISO/IEC 14443. No required test procedu

Rs and a note is added to indicate that “this assertion is externally tested.” T

appl able. 

the test tool cannot access the asymmetric private keys generated and stored on the card. 

Therefore, a note is added to indicate that “this assertion is not separately tested” for these DTR

The same note is added for DTRs that make general statements on the nature of the PIV C

and are validated as a result of the validation of many other DTRs. For example, the statement 

“each command that appears on the card command interface shall be implemented by a card 

card command interface test and does not require an individual test assertion. 

 Page 14 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

5. Test Assertions 

Test assertions are statements of behavior, action, or condition that can be measured or tested.

They provide the procedures to guide the tester in executing and managing the test. They 

include purpose of the test, starting conditions and prerequisites, success criteria, and post-test 

ent: 

card command interface test asser

ssibility and stor .2) 

the above classes of t .2 through 5.4.

ries to

All the DT f tests

stated in Section 3, i.e., PIV middleware tests and PIV card application tests. Similarly, each test 

is many-to-many mapping from the test suite elements (individual tests) 

ions. To narrow the search space for cross references, Table 5-1 presents a crosst

hich they were derived) and test assertion sections with respect to test classes in the two 

bro c

conditions, when applicable. A list of test assertions can be seen in Appendices B and C. 

The following three sets of test assertions are included in this docum

+ PIV client API test assertions (Section 3.1 for overview) 

+ PIV tions (per Section 3.2.1) 

+ PIV data objects acce age test assertions (per Section 3.2

An overview of each of est assertions is given in Sections 5

5.1 Mapping from Test Catego Test Assertions

Rs in Appendix A conceptually come under one of the two broad categories o

assertion makes specific references to the related sections in SP 800-73 or the related DTRs. 

However, overall there

under each of these two broad categories of tests to the DTRs (i.e., one test can map to many

DTRs and one DTR can map to many tests). A similar type of relationship exists between DTRs 

and test assert

referencing guide showing the relevant DTR sections (with the section in SP 800-73 documen

from w

ad ategories of tests.

Category/Classes of Test DTR Section(s) Test Assertion Section(s) 

(1) P M

3.1) 

IV iddleware Tests (Section A.4 End-Point Client API (Ch.6 of SP Appendix B—PIV Client API Test 

800-73) Assertions 

(2a)

PIV Card Application Card 

Command Interface Tests (Section 

3.2.1) 

Constructs (Ch 3 of SP 800-73) 

(2) A.5 End-Point PIV Card 

Application Card Command Interface 

ard Command 

Interface Test Assertions 

PIV Card Application Tests— (1) A.1 End-Point Concepts and Appendix C—PIV C

(Ch 7 of SP 800-73) 

(2b) PIV Card Application Tests— (1) A.2 End-Point Data Objects (Ch 4 Appendix C—

PIV Data Object s Accessibility and 

Storage Tests (Section 3.2.2) 

of SP 800-73) 

(2) A.3—End-Point Data Types and 

Accessibility and Storage Test 

Assertions 

Their Representation (Ch 5 of SP 

PIV Data Objects 

800-73) 

Table 5-1. Cross-referencing Guide 

5.2 P

This section provides conformance tests in the form of test assertions for the functions specified 

pport.

IV Client API Test Assertions

in Chapter 6 of SP 800-73 (called client API) that the PIV middleware is expected to su

 Page 15 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

The s

placeho reconditions required to exercise the test, 

the parameter values used in test invocation, and the expected results as well the state of the PIV 

system (value of state variables), if any, that will be affected by the test run (post-condition). 

The conformance tests are run against the PIV middleware that in turn interacts with the PIV 

card application resident on the PIV Card. Hence, there are two pieces of software (PIV 

middleware and PIV Card application) that determine the outcome of each test run. Because the 

focus of the tests is the behavior of the PIV middleware, the test configuration assumes the 

presence of a validated PIV card application. 

The list of functions and the number of test cases in Appendix B are summarized in Table 5-2. 

te t assertions are described through a test assertions template. The template provides 

lders for describing the purpose of the test, the p

Client API Command Number of Test Cases (Appendix B) 

pivConnect 9

pivDisconnect 4 

picSelectCardApplication 4 

pivLogIntoCardApplication 4 

pivLogOutOfCardApplication 3 

pivGetData3 16 

pivPutData 13 

pivGenerateKeyPair 5 

pivCrypt 7 

Table 5-2. List of Commands in Client API and Number of Test Cases

The PIV client API test cases are based on the following assumptions: 

+ There is a PIV Card with a validated PIV card application. 

+ A valid connection description is provided for the card application. 

+ A valid physical connection exists between an instance of the PIV card reader and the 

host where the PIV middleware (client application) resides. 

+ No other application is currently connected to the PIV card application. 

5.3 PIV Card Command Interface Test Assertions 

This section provides conformance tests in the form of test assertions for the command set that is 

specified in Chapter 7 of SP 800-73 (Card Application Card Command Interface) that the PIV 

Card Application is required to support. The test assertions are described through a test 

assertions template. The template provides placeholders for describing the purpose of the test, 

the preconditions required to exercise the test, the parameter values used in test invocation, and 

 

3

 The number of test cases is based on the assumption that mandatory and optional PIV data objects are

implemented. This applies to pivGetData and pivPutData. 

 Page 16 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

the expected results as well as the state of the PIV system (value of state variables), if any, that 

will be affected by the test run (post- condition). 

that comes with the card reader. 

The list

cases in

The conformance tests are run to validate the PIV card application. Interaction with the PIV 

Card Application takes place through the API of the driver

of commands in the Card Application Card Command interface and the number of test 

Appendix C are summarized in Table 5-3. 

Card Application Command Number of Test Cases (Appendix C) 

SELECT 5 (Contact) + 3 (Contactless) = 8 (Total) 

GET DATA4 14 (Contact) + 11 (Contactless) = 25 (Total) 

VERIFY 5 (Contact) + 1 (Contactless) = 6 (Total) 

CHANGE REFERENCE DATA (*) 6 (Contact) + 1 (Contactless) = 7 (Total) 

RESET RETRY COUNTER 6 (Contact) + 1 (Contactless) = 7 (Total) 

GENERAL AUTHENTICATE 13 (Contact) + 10 (Contactless) = 23 (Total) 

PUT DATA 20 (Contact) + 1 (Contactless) = 21 (Total) 

GENERATE ASYMMETRIC KEY PAIR (**) 4 (Contact) + 1 (Contactless) = 5 (Total) 

Table 5-3. List of Commands in Card Application Command and Number of Test Cases 

(*) does not include tests with optional symm

PIV r

(**) do

Applica

The fol been made with regard to PIV Card command interface test 

e contact reader or placed near a contactless reader. 

er.

+ 

5.4 P

The fol ade with respect to PIV data object representation test 

asse

etric and asymmetric algorithms supported by the 

ca d application.

es not include tests with optional asymmetric algorithms supported by the PIV Card 

tion.

lowing assumptions have

cases: 

+ A valid PIV Card is inserted into th

+ A valid PC/SC connection exists between the test system and an instance of the read

No application is currently connected to the PIV card application. 

+ No other contactless card is within the proximity of the contactless reader. 

IV Data Objects Accessibility and Storage Test Assertions 

lowing assumptions have been m

rtions: 

+ A PIV card application with a valid Application Identifier (AID) is resident on the card. 

+ The PIV card application is expected to have implemented all the five mandatory PIV 

data objects of the PIV data model on the card. 

e number of test cases is based on the assumption that mandatory and optional PIV data objects are

emented. This applies to GET DA

4 Th

impl TA and PUT DATA commands. 

 Page 17 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

+ The presence of any one or more of the five optional PIV data objects on the PIV Card 

can be known from the vendor documentation. 

 Page 18 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

6. Test and Compliance Documentation 

There are two sets of compliance documentation: vendor required and test facility generated. 

The vendor-required documents consist of the following: 

+ Installation, and Execution instructions (for PIV Middleware): 

technical instructions and other documentation to aid the testin

 The vendor provides 

g personnel in installing 

ware

implementation could be in any higher-level programming language. Since all the 

itting the product for testing may have to provide wrapper programs in some

slate the test

mentation’s 

IV Card Application and PIV Middleware): 

ion must include the detailed technical 

tation to be tested. This document includes, at 

information specified in DTRs in Appendix A of this 

+ Security-related information such as the PIV card 

IV Card

each test run on any component and is used to summarize 

l information) for each of the 

m test logs) associated with 

each test case. 

d

n

d collectively constitutes a test case. 

There may be many test runs for this test case. The function invocations returning the 

expected return codes for a test case in all test runs indicates that the command/function has 

been implemented correctly.

and using the PIV middleware implementation under test. The PIV Middle

implementations have to be tested from a common test program, the PIV Middleware

vendor subm

cases to the test facility. The purpose of the wrapper program is to tran

execution calls made using the test program to PIV Middleware’s imple

native program calls. 

+ Technical documentation (for both P

The vendor-supplied technical documentat

description and the design of the implemen

a minimum, all the required vendor

document. 

Security-related Information: 

application PIN, the PIN unblocking PIN, Number of unsuccessful attempts the P

Application will allow using the wrong card application and PIN unblocking PINs, the 

optional cryptographic algorithms supported by the PIV Card Application etc should be 

provided by the vendor. 

The test facility-generated documents are required for performing and reporting the test process. 

The following are some of the examples: 

+ Checklists. Checklists provide the tester with a list of actions and requirements to 

complete before the test starts. Information required in the preconditions section of the 

assertions is included in the checklists 

+ Test logs. A test log is kept for

the results of all the tests run. 

+ Test reports. These provide the background (environmenta

test cases as well as summary of outcomes from test runs (fro

A test case is a sequence of command/function invocations that pertain to a given execution

condition for the ‘command/function under test’. For example, if the GET DATA comman

is the command/function under test, then the execution condition ‘Invocation of this functio

after PIN verification’ will consist of the following sequence of command/function 

invocations – SELECT, VERIFY, GET DATA, an

 Page 19 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

7. Acceptance Criteria

Acceptance criteria are based on the compliance of the item under test with the requirements 

defined in FIPS 201 and the accompanying special publication documents. The criteria are 

further specified in the following sections, based on the type of test being conducted. 

7.1 Acceptance Criteria for the PIV Middleware Test 

The PIV middleware test acceptance criteria will be based on the middleware application under

st passing all the PIV client API test assertions. The middleware should return appropriate 

return codes in response to executing the client API functions as defined in Section 6 of SP 800-

73. The middleware should also be able to send the correct card commands to and interpret the 

responses received from the “SP 800-73 conformant PIV card application” (refer to section 7.2 

for definition). The test assertions detail the pass/fail criteria defined for each test case that is 

designed to test a certain condition being tested. 

7.2 Acceptance Criteria for the PIV Card Application Tests 

Acceptance criteria for the PIV card application tests are based on the PIV card application 

passing the following two classes of tests: PIV card application card command interface tests and 

PIV data objects accessibility and storage tests. The PIV Card application that has passed these 

classes of tests is called “SP 800-73 conformant PIV Card application.” 

For PIV card application card command tests, the PIV card application should send the 

appropriate response status codes and application data in response to commands. It should also 

set or reset certain card state variables and thus fulfill the test post conditions. 

For the PIV data objects accessibility and storage tests, the PIV card application should show the 

presence of all mandatory PIV data objects and published optional PIV data objects. It should 

also demonstrate the ability to access to store all the above data objects using the correct BERTLV tag under the appropriate security conditions and interfaces (contract or contactless) and 

that the containers for storing them have the needed size requirements. 

The acceptance criteria for the testing of PIV Card functionalities, for which FIPS 201 makes 

reference to external documents (such as digital signature formats), is based on visual 

verification of vendor-provided documents and test/compliance certificates. 

te

 Page 20 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

8. Test and Compliance Process 

The PIV software component that passes all applicable tests, as explained in this document, will 

be considered conformant. This document provides the technical details for the testing of the 

ntext, compliance means— 

ired vendor documentation. 

The cer fi

respons i

+ 

+ 

+ Review the test results and report failures 

Inspect tation

ication, the required 

ocumentation, and the PIV software components to be tested, the test laboratory configures the 

V

nducting the tests, the test laboratory evaluates the test results and 

ommunicates the Test Results Summary (TSR) and Test Run Details (TRD) to the vendor. 

e the 

ster name and vendor product identifier etc) as well as the summary 

ary report will 

above types of summary 

+ Card Command Interface Test Summary 

t Summary 

f each test run associated each of the three 

test run for various 

o make the necessary 

gic changes to the implementation of the various commands/interfaces and data object 

presentations in order to become fully conformant. 

two PIV software components. In this co

+ Passing the related test assertions explained in this document 

+ Passing the inspection/verification of the requ

ti ed and/or accredited test laboratory that will conduct the testing has the following 

ib lities—

Prepare and provide the test application forms and the documentation 

Receive and configure the PIV software component to be tested 

+ Conduct the test with a testing toolkit 

+ s the vendor documen

+ Communicate the results. 

Upon vendor’s submission of the request for PIV component certif

d

test system, records all preconditions, and runs the applicable suite of tests for the submitted PI

component. After co

c

The Test Results Summary provides the overall environmental information (date and tim

tests were conducted, the te

conclusion for tests associated with that particular class. The format of the summ

vary depending upon the test classes. The sample format for each of the

reports is given in Appendix F. The TSR associated with each of the three classes are: 

+ PIV Client API Test Summary 

+ PIV Data Objects Accessibility and Storage Tes

Test Run Details (TRD) are used to log the details o

classes in the test suite. They provide the details of the outcome of each

execution conditions. This detail report will enable the product vendor t

lo

re

 Page 21 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

8.1 Failure Review

The test will be repeated once for components that do not pass the tests. After the retest, the 

purpose of the test, the 

rogression of steps, and the responses received from the tested components. The discrepancy 

t

he failure, before the component is returned to the vendor to be corrected. 

tester prepares for each failure a discrepancy report that summarizes the

p

report will be internally reviewed and discussed by the test lab before an official response is sen

to the vendor. Vendors who object to the results presented in the discrepancy report must 

explain their reason for the objection. If the reason necessitates another retest, the test laboratory 

may consider repeating the test. Otherwise, the test lab will seek the guidance of the NIST 

personnel on t

 Page 22 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Appendix A—Derived Test Requirements

A.1 End-Point Concepts and Constructs (Chapter 3 of SP 800-73) 

.1.1 Platform Requirements 

latform on which it is implemented or installed: 

PIN

• Application selection using a truncated AID 

ct

• Support for the default selection of an application upon warm or cold reset. 

ote: This assertion is not separately tested. 

.1.2 Card Applications 

S01.02: Each command that appears on the card command interface shall be 

assertion is not separately tested – collection of DTRs for all commands implicitly 

sts this assertion.

S01.03: Each card application shall have a globally unique name called its AID 

assertion is tested as part of the AS05.05 through AS05.10. 

ommands and data objects of a card application shall be 

ained by selecting the card application using its application identifier.

S01.05: The Proprietary Identifier eXtension (PIX) of the AID shall contain an 

he card application.

A.1.2.1 Personal Identity Verification Card Application 

A

AS01.01: The PIV Card Application shall place the following requirements on the ICC

p

• Global security status that includes the security status of a global cardholder

• Ability to reset the security status of an individual application 

• Indication to applications as to which physical communication interface – conta

versus contactless- is in use 

N

A

A

implemented by a card application that is resident in the ICC. 

Note: This

te

A

[ISO/IEC 7816, Part 4]. 

Note: This

AS01.04: Access to the card c

g

Note: This assertion is tested as part of AS05.11. 

A

encoding of the version of t

Note: This assertion is tested as part of the AS05.05 through AS05.10.

 A-1 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

AS01.06: The AID of the Personal Identity Verification card application (PIV Card 

ote: This assertion is tested as part of the AS05.05 through AS05.10. 

S01.07: For the first version of the PIV Card Application, the AID shall consist of the 

en the version portion of the NIST PIX ’01 00’ for the first version of the PIV Card 

his ass gh AS05.10.

AS01.08: 

words, there

rest. 

Required Ven

VE01.08.01: selected card

application

Required Tes

re is a default selected card application which is 

e one specified by the vendor in VE01.08.01. 

.1.3 Security Architecture 

.1.3.1 Access Control Rule 

S01.09: The access control rule shall consist of an access mode and a security condition. 

bed by the access mode can be performed on the data object 

and only if the security condition evaluates to TRUE for the current values of the security 

ote: This assertion is not separately tested. 

S01.11: If there is no access control rule with an access mode describing a particular

action, then that action shall never be performed on the data object. 

Application) shall be: ‘A0 00 00 03 08 00 00 10 00 01 00’

N

A

NIST Registered application provider IDentifier (RID) ’A0 00 00 03 08’ followed by the 

application portion of the NIST PIX indicating the PIV Card Application ’00 00 10 00’ and 

th

Application.

Note: T ertion is tested as part of the AS05.05 throu

A.1.2.2 Default Selected Card Application 

 The card platform shall support a default selected card application. In other 

shall be a currently selected application immediately after a cold or warm 

dor Information

The vendor shall specify in its documentation the default

.

t Procedures 

TE01.08.01: The tester shall validate that the

th

A

A

A

Note: This assertion is not separately tested. 

AS01.10: The action descri

if

status. 

N

A

 A-2 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Note: This assertion is not separately tested. 

d with each authenticatable entity shall be a set of one or more 

oolean variables each called a security status indicator of the authenticatable entity. 

indirectly through the functional testing. 

e

as

d FALSE otherwise.

S01.14: The successful execution of an authentication protocol shall set the security 

ials that were verified by the protocol to TRUE.

Note: The security status indicators will be tested indirectly through the functional testing. 

A security status indicator shall be said rity status indicator if 

hanged ion changes from one application to 

nother.

AS01.16: tor if

it is set to FA to

another. 

Required n

VE01.16.01: s

indicators wil lected application changes from one 

pplication to another.

Required Test Procedu

E01.16.01: The tester shall visually validate that the vendor documentation contains the 

f an Individual

A.1.3.2 Security Status 

AS01.12: Associate

B

Note: The security status indicators will be tested

AS01.13: The security status indicator of an authenticatable entity shall be TRUE if th

credentials associated with the security status indicator of the authenticatable entity h

been authenticated an

Note: The security status indicators will be tested indirectly through the functional testing. 

A

status indicator associated with the credent

AS01.15: to be a global secu

it not c when the currently selected applicat

a

Note: This assertion is not separately tested. 

A security status indicator is said to be an application security status indica

LSE when the currently selected application changes from one application

Ve dor Information

The vendor shall specify in its documentation that the application security statu

l be set to FALSE when the currently se

a

res 

T

requirement stated in VE01.16.01.

A.1.3.3 Authentication o

 A-3 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

AS01.17: Personal identification numbers presented to the card command interface shall 

e 8 bytes long.

S01.18: If the actual PIN length is less than 8 bytes, it shall be padded to 8 bytes with 

l PIN. The bytes comprising the PIN shall not include ‘FF’.

.1.4 PIV Card Application Status Variables 

S01.19: When the PIV Card Application is the currently selected application, the 

st always be defined. 

Can be used by all applications on the card platform. Maintained by: card 

• Status Variable: Currently selected application – must always be defined. 

port the selection of a card application using a possibly 

right-truncated application identifier and there shall always be a currently 

s

e PIV Card Application. Maintained 

by: PIV Card Application. 

ote: This assertion is not separately tested. 

latform Configuration

ual-interface and dual-chip implementations shall be feasible. 

single-chip/dual-interface configuration, the PIV Card Application shall be 

rovided the information regarding which interface is in use. 

ystem should inform the PIV Card Application the 

ommunication interface in use.

b

Note: This assertion is tested as part of AS05.13.

A

‘FF’ and appended to the actua

Note: This assertion is tested as part of AS05.14.

A

A

following status variables be associated with it.

• Status Variable: Global Security Status Indicators – mu

platform. 

The platform shall sup

elected application. Maintained by: card platform. 

• Status Variable: Application security status Indicators – must always be 

defined. These indicators are local to th

N

A 1.5 Card P

AS01.20: Both single-chip/d

Note: This assertion is not separately tested. 

AS01.21: In the

p

Required Vendor Information 

VE01.21.01: The card operating s

c

Required Test Procedures 

 A-4 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

TE01.21.01: The tester shall validate that the card platform informs the PIV Card Application of 

e interface being used.

d. This assertion is indirectly tested by verifying 

weather card application returns ‘6A 81’ for those commands cannot be exercised through 

less int

tely tested. This assertion is indirectly tested by verifying 

eather card application returns ‘6A 81’ for those commands cannot be exercised through 

S01.22: In the dual-chip configuration, a separate PIV Card Application shall be loaded 

S02.01: A PIV Card Application shall contain six mandatory data objects and five 

• y 

Holder Unique Identifier 3. X.509 Certificate for PIV 

Authentication 4. Card Holder Fingerprint I 5. Security Object 

ta objects for interoperable use are the following: 1. Card 

Holder Facial Image 2. Printed Information 3. X.509 Certificate for PIV 

ure 4. X.509 Certificate for PIV Key Management 5. X.509 

Certificate for Card Authentication

AS02.02: For the purpose of constructing PIV Card Application data object names in the 

pplicat ity Container (CCC) of the PIV Card Application, 

e NIST RID (‘A0 00 00 03 08’) shall be used and the card application type shall be set to 

equired Test Procedures 

th

Note: This assertion is not separately teste

contact erface.

TE01.21.02: The tester shall validate that the PIV Card Application checks that a contact 

interface is being used for contact-only APDUs. 

Note: This assertion is not separa

w

contactless interface. 

A

on each chip. 

Note: This assertion is not separately tested. 

A.2 End-Point Data Objects (Chapter 4 of SP 800-73)

A.2.1 PIV Card Application Data Objects 

A

optional data object for interoperable use. 

The five mandatory data objects are the following: 1. Card Capabilit

Container 2. Card

• The five optional da

Digital Signat

Note: This assertion is not separately tested. 

A.2.2 OIDs and Tags of PIV Card Application Data Objects 

CardA ionURL in Card Capabil

th

‘00’. 

R

 A-5 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Note: This assertion is tested as part of AS02.03. 

ect identifiers (OIDs) used by 

IV Client Application to refer to them, and associated BER-TLV tags used by PIV Card 

onform to the entries in Table 6 of SP 800-73. 

2.03.01: The vendor shall state in its documentation the list of all the data objects present 

n the card along with the OIDs and BER-TLV tags associated with them. 

Ds and BER-TLV tags of all the data objects 

present on the card conforms to the table A-1, and accurately represent the actual data objects 

d by th plemented on the card. 

dentifier 

S03.01: The algorithm identifiers for the cryptographic algorithms implemented on 

3

rmation

tifiers associated with all the algorithms supported 

y the card.

idate the presence of all the mandatory and optional algorithm

entifiers (if implemented) on the vendor documentation and the card, and that they comply 

S03.02: The default cryptographic algorithm for the PIV Card Application with 

E03.02.01: The vendor shall state in its documentation that the 3 Key Triple Data Encryption 

IV

tion and its algorithm identifier is ’00.’ 

AS02.03: For all data objects present on the card, the obj

P

Command Interface shall c

Required Vendor Information 

VE0

o

Required Test Procedures 

TE02.03.01: The tester shall validate that the OI

observe e tester as being im

A.3 End-Point Data Types and Their Representations (Chapter 5 of SP 800-73) 

A.3.1 Algorithm I

A

the card shall conform to entries in Table 7 of SP 800-73 along with default algorithm –

key Triple DES –ECB with algorithm identifier ‘00’.

Required Vendor Info

VE03.01.01: The vendor shall state the iden

b

Required Test Procedures 

TE03.01.01: The tester shall val

id

with Table A-2. 

A

algorithm identifier '00' is 3 Key Triple DES – ECB. 

Required Vendor Information 

V

Standard Electronic Code Book (DES-ECB) is the default cryptographic algorithm for the P

Card Applica

 A-6 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Required Test Procedures 

TE03.02.01: The tester shall validate that the default cryptographic algorithm is the 3 Key 

ES-EC tifier ’00.’

S03.03: Upon selection, the PIV Card Application shall return the application property 

equired Vendor Information

nce with Tables 8 and 9 of SP 800-73 . 

e information provided in VE03.03.01, is actually 

plemented by the card. 

d on the PIV client-application programming 

terface shall have the structure described in Table 10 of SP 800-73. 

of all the authenticators along with their tags and 

possible values, when applicable. 

Required Test Procedures 

e” as shown in Table 10 of SP 800-73..

ct tags and values in the 

authenticator data object as specified in Table 10 of SP 800-73. 

.3.4 Connection Description 

S03.05: The connection description BER-TLV used on the PIV client-application 

Triple D B with the iden

A.3.2 Application Property Template 

A

template described in tables 8 and 9 of SP 800-73. 

R

VE03.03.01: The vendor shall provide in its documentation the PIV card application property

template along with their TLVs. 

Required Test Procedures 

TE03.03.01: The tester shall visually validate that the information provided in response to 

VE03.03.01 is in conforma

TE03.03.02: The tester shall validate that th

im

A.3.3 Authenticator 

AS03.04: The authenticator BER-TLV use

in

Required Vendor Information 

VE03.04.01: The vendor shall provide a list

TE03.04.01: The tester shall visually validate that the vendor documentation states the correct 

tags for the “reference data” and “Key Referenc

TE03.04.02: The tester shall validate that the card returns the corre

A

A

programming interface shall have the structure described in table 11 of SP 800-73. 

 A-7 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Required Vendor Information 

VE03.05.01: The vendor shall provide in its documentation the format and content of the 

Connection Description Templates implemented by the card.

Required Test Procedures 

TE03.05.01: The tester shall validate the presence of the information provided in VE03.05.01 

escr the c ble 11 of SP 800-

ies and x’ series

nection descri te as s

Note: This assertion is tested as part of AS03.05. 

ference

AS03.07: The key reference, when represented as a by le b7

and b6 shall be set to 0. 

Note: This assertion is not sep ested.

The key references used on all PIV interfaces shall be from the list found in 

e document titled “Namespace Management 

tity Verific an osted on

the NIST Web Page. 

his assertion is not sep

AS03.09: The card holder global PIN’s value shall not be changed nor shall its retry 

counter be reset while the PIV C tly selected application. 

mation

equired Test Procedures 

pplication and attempt to change global PIN 

and validate that the global PIN value did not change and that its retry counter was not reset. 

TE03.09.02: The tester shall visually validate the presence of the information required in 

VE03.09.01 

and that the Connection D iption Template sent to ard conforms to Ta

73. 

AS03.06: At most one selection fr

shall appear in the con

om the ‘8x’ ser

ption templa

one selection from the ‘9

pecified in AS03.05.

A.3.5 Key Re s

te, occupies b8 and b5-b1 whi

arately t

AS03.08: 

Table 12 of SP 800-73 along with those in th

for Personal Iden ation (PIV) Applications d Data Objects” that is p

Note: T arately tested.

ard Application is the curren

Required Vendor Infor

VE03.09.01: The vendor shall specify in its documentation that the card conforms to the 

assertion stated in AS03.09. 

R

TE03.09.01: The tester shall select the PIV Card A

 A-8 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Note: This assertion is not separately tested. 

amming interface or a card command at the card edge. 

his ass ince it is part of the process of testing status 

V Client API and PIV card command interfaces. 

S03.11: Recognized values of all SW1-SW2 pairs used as return values on both the PIV 

t

rovided in Table 13 of SP 800-73.

ied on the PIV client-application programming 

terface using its OID. 

parately tested. 

onents of the OID. 

ot separately tested. 

terface using its BER-TLV tag.

rtion is not separately tested. 

n Programming Interface (Chapter 6 of SP 800-

73) 

 800-73. 

A.4.1 Entry Points for Communication 

equired Test Procedures 

o test the entry points or commands that should be supported by client application, the only 

information that the vendor has to provide is the PIV Card Application version that the client 

A.3.6 Status Words 

AS03.10: A status word shall be a 2-byte value returned by an entry point on the clientapplication progr

Note: T ertion is not separately tested – s

words (return codes) for every command in PI

A

client-application programming and PIV card command interfaces shall be from the lis

p

Note: This assertion is not separately tested.

AS03.12: A data object shall be identif

in

Note: This assertion is not se

AS03.13: An object identifier on the PIV client-application programming interface shall 

be a dot delimited string of the integer comp

Note: This assertion is n

AS03.14: A data object shall be identified on the PIV Card Application card command

in

Note: This asse

A.4 End-Point Client-Applicatio

AS04.01: Entry points on the PIV client-application programming interface shall include 

all functions listed in Table 14 of SP

Note: This assertion is tested as part of AS04.02 through AS04.10.

Required Vendor Information & R

T

 A-9 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

application supports. All parameter values for exercising the commands have to be obtained 

from the PIV Card Application vendor documentation, using the mapping of client application 

ntry point commands to the PIV Card Application card commands. This mapping is given in 

ures.

e

the Table A-1 below. Hence this section contains only tester requirements in terms of Required 

Test Proced

Client Application Entry Points PIV Card Application Card 

Command5 Mapping Description

pivConnect No Equivalent command For establishing a connection

session with card reader. 

pivDisconnect No Equivalent command For disconnecting a connection

session with the card reader 

pivSelectCardApplication SELECT Passes the AID value. Sets the 

value for ‘Currently Selected 

Application’ on the PIV card 

pivLogIntoCardApplication VERIFY Provides the key reference for PIV 

Card Application PIN as well as the 

the card 

PIN string and passes. Sets the PIV 

Card Application Security Status on 

pivLogOutOfCardApplication RESET (not specified in SP Resets the PIV Card Application 

800-73) Security Status on the card

pivGetData GET DATA Maps the Object Identifier (OID) to 

BER-TLV tag for the selected object 

pivPut PUT DATA Maps the OID to BER-TLV tag for 

the selected object 

Data

pivGenerateKey GENERATE ASSYMMETRIC

KEY PAIR 

Passes the Key Reference and 

Cryptographic Mechanism identifier 

Pair 

values 

pivCrypt GENERAL AUTHENTICATE Passes the Key Reference, 

Cryptographic Algorithm reference 

and the string to be acted upon. 

Table A-1 PIV Command Mapping

amming

terface and hence the client application itself to the PIV Card Application on a specific 

A.4.1.1 pivConnect 

AS04.02: The pivConnect’s purpose is to connect the client-application progr

in

ICC. 

TE04.02.01: The tester shall validate that the client application implements the pivConnect as 

per SP800-73. 

A.4.1.2 pivDisconnect 

5

 It is assumed that some of these functions will use GET RESPONSE and chaining to accomplish the read or write

to the card. 

 A-10 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

AS04.03: The piv Disconnect’s purpose is to disconnect the PIV application programming

terface from the PIV Card Application and the ICC containing the PIV Card 

1: The tester shall validate that the client application implements the pivDisconnect 

s per SP800-73.

lication sets the currently selected card application. 

nt application implements the 

ivSelectCardApplication as per SP800-73. 

S04.05: The pivLogIntoCardApplication establishes application security status within 

P800-73. 

6: The data object.

that the client application implements the pivGetData as 

er SP800-73.

pivLogoutOfCardApplication resets the application security status of the 

tly selected application after successful return from this 

nt.

ivLogoutOfCardApplication as per SP800-73.

.4.3 Entry Points for Cryptographic Operations 

in

Application. 

TE04.03.0

a

A.4.2 Entry Points for Data Access 

A.4.2.1 pivSelectCardApplication 

AS04.04: The pivSelectCardApp

TE04.04.01: The tester shall validate that the clie

p

A.4.2.2 pivLogIntoCardApplication 

A

the PIV Card Application. 

TE04.05.01: The tester shall validate that the client application implements the 

pivLogIntoCardApplication as per S

A.4.2.3 pivGetData

AS04.0 pivGetData returns the entire data content of the named

TE04.06.01: The tester shall validate

p

A.4.2.4 pivLogoutOfCardApplication 

AS04.07: The

PIV Card Application. The curren

entry point is platform-depende

TE04.07.01: The tester shall validate that the client application implements the 

p

A

A.4.3.1 pivCrypt 

 A-11 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

AS04.08: pivCrypt perform a cryptographic operation such as encryption or signing on a 

equence of bytes.

shall validate that the client application implements the pivCrypt as per 

P800-73.

.4.4 Entry Points for Credential Initialization and Administration 

E04.09.01: The tester shall validate that the client application implements the pivPutData as 

S04.10: The pivGenerateKeyPair generates an asymmetric key pair in the currently 

800-73.

s,

E05.01.01: The tester shall validate that the information presented in response to VE05.01.01 

e 15 of SP 800-73. 

quired in

s

TE04.08.01: The tester

S

A

A.4.4.1 pivPutData

AS04.09: The pivPutData replaces the entire data content of the named data object with 

the provided data. 

T

per SP800-73. 

A.4.4.2 pivGenerateKeyPair 

A

selected application.

TE04.10.01: The tester shall validate that the client application implements the 

pivGenerateKeyPair as per SP

A.5 End-Point PIV Card Application Card Command Interface (Chapter 7 of SP 

800-73) 

AS05.01: All PIV Card Application card commands listed in Table 15 of SP 800-73 

(interpreted in conjunction with associated Errata published in NIST Web page) shall be 

supported by a PIV Card Application. 

Required Vendor Information 

VE05.01.01: The vendor shall provide the list of all PIV Card Application card command

along with the interface(s) (contact or contactless) they support, the security condition(s) they are

subject to and their support for command chaining as implemented by the card. 

Required Test Procedures 

T

by the vendor complies with Tabl

TE05.01.02: The tester shall validate that the card implements all the commands as re

Table 15 of SP 800-73 

 A-12 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

TE05.01.03: The tester shall validate that the commands are implemented only through the 

the

as

816-4 [1].

art of AS05.01.

on not

and on the contactless interface marked “No” in 

he Contactless Interface column in the table in AS05.01. 

ote: This assertion is tested as part of AS05.01.

Note: This assertion is not separately tested. 

.5.1 PIV Card Application Card Commands for Data Access 

entifier ‘A0 00 00 03 08 00 00 10 00 vv vv’ in the data field of the SELECT command 

equired Vendor Information

E05.05.01: The vendor shall specify in its documentation the PIV Card Application Identifier. 

ll validate that the PIV Card Application is selected by providing its 

pplication identifier as specified in VE05.05.01.

AS05.06: There shall be at most one PIV Card Application on any ICC. 

interfaces allowed as shown in Table 15 of SP 800-73 

TE05.01.04: The tester shall validate that the commands are implemented only after

security condition associated wit hem are satisfied, as shown in the table, via the specified 

interface. 

TE05.01.05: The tester shall validate that only the commands as indicated in the table are

allowed for chaining via the interface supported after the security condition is satisfied. 

AS05.02: Card commands indicated with a 'Yes' in the Command Chaining column shall

support command chaining for transmitting a data string too long for a single command

defined in ISO/IEC 7

Note: This assertion is tested as p

AS05.03: The PIV Card Application shall return the status word of ‘6A81’ (Functi

supported) when it receives a card comm

t

N

AS05.04: Cryptographic protocols using asymmetric keys that require PIN shall not be 

used on the contactless interface. 

A

A.5.1.1 SELECT Card Command 

AS05.05: The PIV Card Application shall be selected by providing its application 

id

where 'vv vv' is the version of the PIV Card Application to be made the currently selected

application. 

R

V

Required Test Procedures 

TE05.05.01: The tester sha

a

 A-13 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Required Vendor Information 

VE05.06.01: The vendor shall state in its documentation that there is only one PIV Card 

pplication on the ICC.

6.01: e information

S05.07: The PIV Card Application can also be made the currently selected application 

er, 'vv

equired Test Procedures 

E05.07.01: The tester shall visually validate that the information in VE05.07.01 is present in 

E05.07.02: If the card implements the short version application selection, the tester shall 

ght-truncated SELECT command. 

T

ommand shall be returned in the application property template. 

S05.09: If the currently selected application is the PIV Card Application when the 

and is given and the AID in the data field of the SELECT 

PPLICATION is either the AID of the PIV Card Application or a right-truncated version 

t tion shall continue to be the currently selected 

pplication and the setting of all security status indicators in the PIV Card Application 

formation in its documentation validating the 

ompliance with the statement in AS05.09

A

Required Test Procedures 

TE05.0 The tester shall visually validate the vendor documentation for th

provided in VE05.06.01. 

A

by providing a right-truncated version; that is, without the two-byte version numb

vv'; in the data field of the SELECT command 'A0 00 00 03 08 00 00 10 00’ 

Required Vendor Information 

VE05.07.01: The vendor shall specify in its documentation whether the card implements the 

application selection by the right-truncated version. 

R

T

the vendor documentation.. 

T

validate that the PIV application is selectable by the ri

AS05.08: The complete AID, including the two-byte version, of the PIV Card Application

that became the currently selected application upon successful execution of the SELEC

c

Note: This assertion is tested as part of AS03.03.

A

SELECT APPLICATION comm

A

thereof, then he PIV Card Applica

a

shall be unchanged. 

Required Vendor Information 

VE05.09.01: The vendor shall provide in

c

Required Test Procedures 

 A-14 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

TE05.09.01: The tester shall validate that when the currently selected application is the PIV 

ard Application, if the SELECT APPLICATION command is sent with an AID that is either 

or its right-truncated version, then the PIV Card 

pplication shall continue to be the currently selected application and the setting of all security 

ard Application shall be unchanged

ID in the data field of the SELECT 

PPLICATION is neither the AID of the PIV Card Application nor a right-truncated 

Application

hall be unchanged

equired Vendor Information

ndor shall provide information in its documentation validating the 

ompliance with the statement in AS05.10 

equired Test Procedures 

s sent with an AID that is neither 

e AID of the PIV Card Application nor its right-truncated version, the PIV Card Application 

.5.1.2 GET DATA Card Command 

S05.11: The GET DATA card command retrieves the data content of the single data 

ote: This assertion is tested as part of AS05.01 

S05.11A: The GET DATA card command retrieves the data content of the data object 

equired Vendor Information

he access rule for each of the data 

bjects or make a reference to the table in Appendix A of SP 800-73. 

C

the AID of the PIV Card Application

A

status indicators in the PIV C

AS05.10: If the currently selected application is the PIV Card Application when the 

SELECT APPLICATION command is given and the A

A

version thereof, then the PIV Card Application shall continue to be the currently selected 

application and the setting of all security status indicators in the PIV Card

s

R

VE05.10.01: The ve

c

R

TE05.10.01: The tester shall validate that when the currently selected application is the PIV 

Card Application, if the SELECT APPLICATION command i

th

continues to be the currently selected application.

A

A

object whose tag is given in the data field. 

N

A

only after the access rule associated with the data object (Appendix A of SP 800-73) 

evaluates to TRUE.

R

VE05.11A.01: The vendor shall specify in its documentation t

o

Required Test Procedures 

 A-15 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

TE05.11A.01: The Tester shall validate that all data objects that require the PIV card applicatio

PIN shall only be ac

n

cessible after a successful validation of that PIN (through VERIFY 

ommand).

E05.11A.02: The Tester shall validate that all data objects whose access rule is ”Always Read ” 

ds for Authentication

ard Application; i.e. local key 

the PIV Card Application VERIFY command. 

rrent value of the retry counter associated with the key reference is zero, 

value of PIN input with the PIN associated with key reference 

IV Card Application shall return the status word '69 83'. 

ry counters

idate that the PIV Card Application returns ’69 83’ in response 

he retry counter associated with the key reference is zero. 

ll

d the retry counter associated with the key reference shall be set to the 

 with the key reference. 

,

fails, then the security status of the key reference shall be 

t to FALSE and the retry counter associated with the key reference shall be decremented 

by one. 

c

T

shall only be accessible with or without PIV Card Application PIN validation. 

A.5.2 PIV Card Application Card Comman

A.5.2.1 VERIFY Card Command 

AS05.12: Only key references specific to the PIV C

references, shall be verified by

Note: This assertion is not separately tested. 

AS05.13: If the cu

then the comparison of the

shall not be made and the P

Required Vendor Information 

VE05.13.01: The vendor shall specify in its documentation the reset value of the ret

associated with all the key references Implemented on the card. 

Required Test Procedures 

TE05.13.01: The tester shall val

to the VERIFY command, when t

AS05.14: If the card command succeeds, then the security status of the key reference sha

be set to TRUE an

reset retry value associated

Required Vendor Information 

VE05.14.01: Same as VE05.13.01. 

Required Test Procedures 

TE05.14.01: The tester shall validate that the retry counter associated with the key reference 

shall be set to the reset retry value specified by the vendor in VE05.14.01 (not decremented)

when the VERIFY command succeeds. 

AS05.15: If the card command

se

 A-16 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Required Vendor Information

3.01.

ted with the key reference is decremented by one. 

equired Vendor Information

E05.15.01A: The vendor shall state in its documentation that the card supports the assertion 

equired Test Procedures 

E05.15.01A: The tester shall validate that the vendor documentation contains the information 

S05.15B: If the key reference is set to a value other than what is supported by the card, 

the PIV Card Application shall return the status word '6A 88'. 

equired Vendor Information

et

.5.2.2 CHANGE REFERENCE DATA Card Command 

S05.16: If the current value of the retry counter associated with the key reference is 

equired Vendor Information

VE05.15.01: Same as VE05.1

Required Test Procedures 

TE05.15.01: The tester shall validate that when the VERIFY command fails, the retry counter 

associa

AS05.15A: If the PIN value in the reference data field of the command field is not padded

to 8 bytes, the PIV Card Application shall return the status word '6A 80'. 

R

V

made in AS05.15A. 

R

T

required in VE05.15.01A the card returns status word ‘6A 80’, when the PIN information in the

reference data field of the command is not padded to 8 bytes, 

A

R

VE05.15.01B: The vendor shall state in its documentation that the card supports the assertion 

made in AS05.15B. 

Required Test Procedures 

TE05.15.01B: The tester shall validate that the vendor documentation contains the information 

required in VE05.15.01B and the card returns status word ‘6A 88’, when the key reference is s

to a value other than what is supported by the card. 

A

A

zero, then the reference data associated with the key reference shall not be changed and the

PIV Card Application shall return the status word '69 83’ 

R

 A-17 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

VE05.16.01: The vendor shall state in its documentation that the card supports the assertion 

ade in AS05.016. 

E05.16.01: The tester shall validate that when the current value of the retry counter associated 

S05.17: If the card command succeeds, then the security status of the key reference shall 

unter associated with the key reference shall be set to the 

eset retry value associated with the key reference 

and succeeds. 

.18.

and fails. 

m

Required Test Procedures

T

with the key reference is zero, the reference data associated with the key reference does not 

change and the PIV Card Application returns ’69 83’ 

A

be set to TRUE and the retry co

r

Required Vendor Information

VE05.17.01: The vendor shall state in its documentation that the card supports the assertion 

made in AS05.17. 

Required Test Procedures 

TE05.17.01: The tester shall validate that the vendor documentation states the required 

information in VE05.17.01 and the retry counter associated with the key reference shall be set to 

the reset retry value associated with the key reference when the comm

AS05.18: If the card command fails, then the security status of the key reference shall be 

set to FALSE and the retry counter associated with the key reference shall be decremented 

by one

Required Vendor Information

VE05.18.01: The vendor shall state in its documentation that the card supports the assertion 

made in AS05

Required Test Procedures 

TE05.18.01: The tester shall validate that the vendor documentation contains the information 

required in VE05.18.01 and the retry counter associated with the key reference shall be 

decremented by one if the card comm

AS05.19: If the either the current reference data or the new reference data in the 

command field of the command does not satisfy the criteria in Section 3.5.3 of SP 800-73, 

the PIV Card Application shall not change the reference data associated with the key 

reference and shall return the status word '6A 80'. 

Required Vendor Information

 A-18 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

VE05.19.01: The vendor shall state in its documentation that the card supports the assertion 

made in AS05.19.

Required Test Procedures 

TE05.19.01: The tester shall validate that the vendor documentation contains the information 

required in VE05.19.01 and the old PIN is not changed and the card returns status word ‘6A

when either of the PIN information in the reference data field of the command is not padded to

80’,

8

ytes,

ange the reference data associated with the key 

eference and shall return the status word '6A 88'. 

equired Vendor Information

endor shall state in its documentation that the card supports the assertion 

ade in AS05.19A. 

equired Test Procedures 

eturns status word ‘6A

8’, when the key reference is set to a value other than what is supported by the card. 

.5.2.3 RESET RETRY COUNTER Card Command 

ote: This assertion is not tested separately. 

S05.21: If the current value of the reset counter associated with the key reference is zero, 

ard

rn the status word '69 83'. 

ion

E05.21.02: The vendor shall specify in its documentation that the RESET RETRY COUNTER 

b

AS05.19A: If the key reference is set to a value other than what is supported by the card,

the PIV Card Application shall not ch

r

R

VE05.19.01A: The v

m

R

TE05.19.01A: The tester shall validate that the vendor documentation contains the information 

required in VE05.19.01A and the old PIN is not changed and the card r

8

A

AS05.20: Only retry counters associated with key references specific to the PIV Card 

Application; i.e. local key references, shall be reset by the PIV Card Application RESET

RETRY COUNTER command. 

N

A

then retry counter associated with the key reference shall not be reset and the PIV C

Application shall retu

Required Vendor Informat

VE05.21.01: Same as VE05.13.01 

V

card command will not reset the retry counter and the card will return ’69 83’, when the reset

counter associated with the key reference is zero. 

 A-19 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Required Test Procedures 

TE05.21.01: The tester shall validate that the information requested in VE05.21.02 and 

E05.21.01 are present in the vendor documentation. (NOTE: Testing this condition will leaves 

e card unusable for further tests since since the reset counter is zero). 

ith the key 

eference shall be set to the reset retry value associated with the key reference. Neither the 

eset counter shall be changed. 

E05.22.01: Same as VE05.13.01 

E05.22.02: The vendor shall specify in its documentation that the card supports the assertion 

equired Test Procedures 

E05.22.01: The tester shall validate that when the card command succeeds, PIN retry counter 

y

S05.23: If the card command fails, then the security status of the key reference shall be 

nted

e

n

nce

of SP 800-73, the PIV Card Application shall not reset the retry counter associated 

ith the key reference and shall return the status word '6A 80'. 

equired Vendor Information

V

th

AS05.22: If the card command succeeds, then the retry counter associated w

r

security status of the key reference or the r

Required Vendor Information 

V

V

made in AS05.22 

R

T

is set to PIN reset retry value specified in VE05.22.01, and neither the security status of the ke

reference or the reset counter is changed. 

A

set to FALSE and the reset counter associated with the key reference shall be decreme

by one. 

Required Vendor Information 

VE05.23.01: The vendor shall state in its documentation that card supports the assertion mad

in AS05.023 

Required Test Procedures 

TE05.23.01: The tester shall validate that the information requested in VE05.23.01 is present i

the vendor documentation and, the security status of the key reference is set to FALSE and the 

reset counter is decremented by one

AS05.24: If the either the reset retry counter reference data (PUK) or the new refere

data (PIN) in the command field of the command does not satisfy the criteria in Section 

3.5.3

w

R

 A-20 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

VE05.24.01: The vendor shall state in its documentation that the card supports the assertion 

he information 

quired in VE05.24.01 and that when either the PUK or the PIN of the command does not 

V

e and

hall return the status word '6A 88'. 

equired Vendor Information

vendor shall state in its documentation that the card supports the assertion 

ade in AS05.24A 

equired Test Procedures 

rmation 

ce value is other than what is supported 

by the card, the retry counter is not reset and the card returns ‘6A 88.’ 

A.5.2.4 GENERAL AUTHENTICATE Card Command 

S05.25: The GENERAL AUTHENTICATE command shall be used to authenticate the 

ICATE), and to perform a 

utual authentication between the card and an entity external to the card (MUTUAL 

E05.25.01: The vendor shall specify in its documentation the types of authentications 

TE05.25.01: The tester shall validate that the GENERAL AUTHENTICATE command is 

made in AS05.24 

Required Test Procedures 

TE05.24.01: The tester shall validate that the vendor documentation includes t

re

satisfy the criteria in Section 3.5.3, the retry counter is not reset and the card returns ‘6A 80.’ 

AS05.24A: If the key reference value is other than what is supported by the card, the PI

Card Application shall not reset the retry counter associated with the key referenc

s

R

VE05.24.01A: The

m

R

TE05.24.01A: The tester shall validate that the vendor documentation includes the info

required in VE05.24.01A and that when the key referen

A

card or a card application to the client-application (INTERNAL AUTHENTICATE), to 

authenticate an entity to the card (EXTERNAL AUTHENT

m

AUTHENTICATE). 

Required Vendor Information 

V

supported by the card. 

Required Test Procedures 

implemented to authenticate the Card to the client application. 

TE05.25.02: The tester shall validate that the GENERAL AUTHENTICATE command is

implementd to authenticate the client application to the card. 

 A-21 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

TE05.25.03: The tester shall validate that the GENERAL AUTHENTICATE command is 

cate the Card to the client application and the client application

the card. 

S05.26: The GENERAL AUTHENTICATE command shall be implementd to realize the 

PIV client-application programming interface. 

eference (P2) is sent to 

he card, the PIV Card Application shall return the status word '6A 86'. 

endor Information

tation that the card supports the assertion 

ade in AS05.27. 

ate that the vendor documentation contains the information 

quired in VE05.27.01 and the card returns status word ‘6A 86’, when an invalid value of 

ue is sent in the data field, the PIV Card Application shall 

eturn the status word '6A 80'. 

E05.27.01A: The vendor shall state in its documentation that the card supports the assertion 

ade in AS05.27A. 

equired Test Procedures 

TE05.27.01A: The tester shall validate that the vendor documentation contains the information 

required in VE05.27.01A and the card returns status word ‘6A 80’, when an invalid value in data 

field of the command is sent to the card. 

AS05.27B: If the command is used to authenticate the Card to the client application 

without prior PIN verification, the PIV Card Application shall return the status word '69 

82'. 

Required Vendor Information 

VE05.27.01B: The vendor shall state in its documentation that the card supports the assertion 

made in AS05.27B. 

implemented to mutually authenti

to

A

signing functionality on the

Note: This assertion is not separately tested. 

AS05.27: If an invalid value of algorithm reference (P1) and/or key r

t

Required V

VE05.27.01: The vendor shall state in its documen

m

Required Test Procedures 

TE05.27.01: The tester shall valid

re

algorithm reference (P1) or key reference (P2) is sent to the card. 

AS05.27A: If an invalid val

r

Required Vendor Information 

V

m

R

 A-22 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Required Test Procedures 

ll validate that the vendor documentation contains the information 

VE05.27.01 mand is used 

icate the card

rd c d is

IV C

ICATE ch as in 

prior to t hain.

Required Vendor Information 

VE05.27.01C: The vendor shall specify in its documentation that the card supports the assertion 

made in AS05.27. 

Required Test Procedures 

TE05.27.01C: The tester shall validate that the PIV Card Application reverts back to the state it 

AUTHENTICATE is received before the 

n of a GENE

PIV Card Application Card Commands 

n

A.5.3.1 PUT DATA 

AS05.28: The PUT DAT and completely replaces the data content of a single 

data object in the PIV

Required Vendor Info

: The ven ormat, encoding and the 

parameters of the PUT

Required Test Proced

TE05.28.01: The tester sh l e PUT DATA command as 

TE

AS05.29: The GENERATE ASYMMETRIC KEY PAIR card command initiates the 

generation and storing in the card of the reference data of an asymmetric key pair, i.e., a 

TE05.27.01B: The tester sha

required in

t

B and the card returns status word ’69 82, whenever the com

to authen to the client application without prior PIN verification.

AS05.27C: If a ca

received by the P

ommand other than the GENERAL AUTHENTICATE comman

ard Application before the termination of a GENERAL 

AUTHENT ain, the PI

immediately

V Card Application shall rollback to the state it w

he reception of the first command in the interrupted c

was in if a command other than GENERAL

terminatio RAL AUTHENTICATE chain. 

A.5.3 for Credential Initialization and 

Administratio

Card Command 

A card comm

Card Application with new content. 

rmation

VE05.28.01 dor shall specify in its documentation the f

DATA command supported by the card. 

ures

al validate that the card complies with th

defined in SP800-73.

A.5.3.2 GENERA ASYMMETRIC KEY PAIR Card Command 

public key and a private key, and the command returns the public key. 

 A-23 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Required Vendor Info

The ven ntation the cryptographic module 

Table plemented on the card. 

oced

TE05.29.01: The test h

identifiers specified as part urned is

formatted based on data

he public ed as the response to the

command.

Note: This assertion is

AS05.31: If there is refere e ey reference, it is

e

nfo

VE05.31.01: The vendor shall provide the contents of the public key data on the card. 

he generated

rmation

VE05.29.01: 

identifiers (from

dor shall specify in its docume

20 of SP 800-73) that have been im

Required Test Pr ures 

er s all validate that the card implements the algorithms associated with 

of VE05.29.01 requirement and that the public key ret

object tags specified in Table 21 of SP 800-73. 

AS05.30: T key of the generated key pair is return

tested as part of AS05.29.

nc data currently associated with the k

replaced in full by th generated data. 

Required Vendor I rmation

Required Test Procedures 

TE05.31.01: The tester shall validate that the initial contents of the public key data is replaced 

in full by t data, following a GENERATE ASYMMETRIC KEY PAIR command. 

 A-24 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Appendix B—PIV Client API Test Assertions 

Test Assertion Template 

Purpose A quick description of the test and why it is being run 

Target The pivFunction being tested 

Reference(s) References to the SP800-73 or other relevant publications 

Precondition(s) Anything that must be done or known prior to executing the 

scenario 

Test Steps Sequence of steps for making a function call

Expected Result(s) What the expected execution path yields in terms of progress and 

values 

Post Condition(s) A description of both client and card application state once the test

scenario completes 

B.1 Connection Test A

B.1.1 Valid P

B.1.1.1 Initiate Exclusi

ssertions

ath Test Assertions

ve Connection

Purpose Confirms that an exclusive connection can be obtained by a calling 

application to the PIV Card Application on a specific ICC 

Target pivConnect 

Reference(s) 1. SP800-73, Section 6.1.1 

2. AS03.05, AS04.01, AS04.02 

Precondition(s) 1. cription is provided for the card 

application 

2. There exists a valid physical connection between an instance of 

of the calling application

A valid connection des

the PIV Card and the host

3. No application is currently connected to the PIV Card 

Application 

Test Steps 1. Set sharedConnection := false

tion := <<valid connection>>

erence

onnect w/

2. Set connectionDescrip

3. Create cardHandle ref

4. Call pivC

• (IN) sharedConnection 

• (INOUT) connectionDescription 

• (OUT) cardHandle 

Expected Result(s) Call returns with status_word of PIV_OK and initialized cardHandle

Post Condition(s) Client Application is Connected to PIV Card 

B.1.1.2 Initiate Shared Connection

 B-1 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Purpose Co r established by two distinct

calling applications to the PIV Card with a specific ICC 

nfi ms that a shared connection can be

Target pivConnect 

Reference(s) 1. SP800-73, Section 6.1.1 

2. AS04.02 

Precondition(s) 1. A valid connection description is provided for the card 

application 

2. There exists valid physical connection between an instance of the 

hared

PIV Card and the host of the calling application 

3. Another client application is currently connected via a s

connection to the PIV Card Application. 

Test Steps 1. Set sharedConnection := true 

2. Set connectionDescription := <<valid connection>>

3. Create cardHandle reference

4. Call pivConnect w/

• (IN) sharedConnection

• (INOUT) connectionDescription 

• (OUT) cardHandle 

Expected Result(s) Call returns with status_word := PIV_OK and initialized 

cardHandle

Post Condition(s) Both client applications are connected through the same connection

to PIV Card Application. 

B.1.2 Test As

B.1.2.1 Malformed Con e

sertions for Error Conditions 

n ction Description 

Purpose Confirms that the correct status word is returned when a malformed 

connection description is used 

Target pivConnect 

Reference(s) 1. SP800-73, Section 6.1.1 

2. AS04.02 

Precondition(s) 1. An invalid connection description is provided for the card

2. There exists valid physical connection between an instance of the 

of the calling application

application 

PIV Card and the host

Test Steps 1. Set sharedConnection := true | false 

2. Set connectionDescription := <<invalid connection>>

3. Create cardHandle reference

w/

ion

ription

4. Call pivConnect

• (IN) sharedConnect

• (INOUT) connectionDesc

• (OUT) cardHandle 

Expected Result(s) Call returns with status_word := 

PIV_CONNECTION_DESCRIPTION_MALFORMED

Post Condition(s) 1. The cardHandle variable is not initialized 

2. The Client Application is not connected to the PIV Card 

 B-2 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Application 

 

B.1.2.2 Attempting to Share/Lock an Exclusive Connection

Purpose Ensure that when a connection is initially established unshared that 

no additional connections can be established 

Target pivConnect

Reference(s) 1. SP800-73, Section 6.1.1 

2. AS04.02 

Precondition(s) 1. A valid connection description is provided for the card 

application 

2. There exists valid physical connection between an instance of th

PIV Card and the host of the calling application 

e

y owns an exclusive connection

false) 

3. An application currentl

(sharedConnection :=

Test Steps 1. Set sharedConnection := true | false

3.

dHandle

2. Set connectionDescription := <<valid connection>> 

Create cardHandle reference

4. Call pivConnect w/ 

• (IN) sharedConnection 

• (INOUT) connectionDescription 

• (OUT) car

Expected Result(s) Call returns with status_word := PIV_CONNECTION_LOCKED

Post Condition(s) 1. 

2. The cardHandle variable is not initiali

The Client Application previously connected remains connected 

e

zed

3. The newly requesting Client Application is not connected to th

PIV Card Application

B.1.2.3 Attempting to Lock a Shared Connection

Purpose Ens

urrently has open shared connections

ure that a Client Application cannot lock a PIV application 

connection that c

Target pivConnect 

Reference(s) 1. SP800-73, Section 6.1.1 

2. AS04.02 

Precondition(s) 1. A valid connection description is provided for the card application

2. There exists valid physical connection between an instance of the 

st of the calling application

owns a shared connection 

e) 

PIV Card and the ho

3. An application currently

(sharedConnection := tru

Test Steps 1. Set sharedConnection := false 

2. Set connectionDescription := <<valid connection>> 

3. Create cardHandle reference

4. Call pivConnect w/ 

• (IN)sharedConnection

 B-3 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• (INOUT) connectionDescription 

• (OUT) cardHandle 

Expected Result(s) Call returns with status_word := PIV_CONNECTION_FAILURE

Post Condition(s) 1. The Client Application previously connected remains connected

2. The cardHandle variable is not initialized 

3. The newly requesting Client Application is not connected to the 

PIV Card Application 

B.1.2.4 Attempting to Open an Unsupported Connection

Purpose Confirms that the correct status word is returned when an

unsupported connection mode is attempted.

Target pivConnect 

Reference(s) 1. SP800-73, Section 6.1.1

2. AS04.02 

Precondition(s) 1. An invalid connection mode (e.g. Integrated Services Digital 

instance of the

pplication

Network (ISDN)) is attempted 

2. There exists valid physical connection between an

PIV Card and the host of the calling a

Test Steps 1. Set sharedConnection := true | false 

2. Set connectionDescription := <<valid ISDN connection

string>> 

3. Create cardHandle reference 

onnectionDescription

• (OUT) cardHandle 

4. Call pivConnect w/ 

• (IN) sharedConnection 

• (INOUT) c

Expected Result(s) Call returns with status_word := PIV_CONNECTION_FAILURE

Post Condition(s) 1. The cardHandle variable is not initialized 

2. The Client Application is not connected to the PIV Card

B.2 Disconnection Test Assertions 

B.2.1 Valid T

B.2.1.1 Disconnect an Exclusive Connection 

est Assertions

Purpose Ensure that a Client Application can close a currently open exclusive

PIV application connection

Target pivDisconnect 

Reference(s) 1. SP800-73, Section 6.1.2 

2. AS03.05, AS04.01, AS04.03

Precondition(s) 1. There exists a valid physical and logical connection

calling

between an

application

nnection accessible through

instance of the PIV Card and the host of the

2. A client application currently has a co

cardHandle

 B-4 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test Steps 1. Call pivDisconnect w/ arguments 

• (IN) cardHandle 

Expected Result(s) Call returns with status_word := PIV_OK

Post Condition(s) 1. The client application is no longer connected to the PIV card 

Application is no longer aware of the Client 

Application 

application 

2. PIV Card

B.2.1.2 Disconnect a Shared Connection

Purpose Ensure that a Client Application can close a currently open and 

shared PIV Card Application connection without impacting other

Client Application’s connections to that same PIV card application 

Target pivDisconnect 

Reference(s) 1. SP800-73, Section 6.1.2

2. AS04.03 

Precondition(s) 1. ical and physical connection between an

alling application

distinct 

 PIV card 

There exists a valid log

instance of the PIV Card and the host of the c

2. At least two distinct client applications (having two

CardHandle references) are connected to the

application 

Test Steps 1. Call pivDisconnect w/ arguments 

• (IN) cardHandle 

Expected Result(s) Call returns with status_word := PIV_OK

Post Condition(s) 1. The Client Application is no longer connected to the PIV

application 

card

ns

 aware of that particular Client 

ware of all other Client Applications. 

2. All other Client Applications maintain their previously valid 

connectio

3. PIV Card Application is no longer

Application but remains a

B.2.2 Test Assertions for Error Cases 

B.2.2.1 Attempt Disconnect with Invalid Card Handle 

Purpose Ensure that the Client Application can detect an invalid cardHandle

argument. 

Target pivDisconnect 

Reference(s) 1. SP800-73, Section 6.1.2 

2. AS04.03 

Precondition(s) 1. There exists a valid physical and logical connection between an

of the calling application

2. rrently has a connection accessible through 

instance of the PIV Card and the host

A client application cu

cardHandle

 B-5 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test Steps 1. Set cardHandle := <<invalid cardHandle>> 

2. Call pivDisconnect w/ 

• (IN) cardHandle 

Expected Result(s) Call returns with status_word := PIV_INVALID_CARD_HANDLE

Post Condition(s) The client application remains connected to the PIV card application

B.2.2.2 Disconnecting a previously disconnected Client Application

Purpose Verify that if a Client Application tries to close a previously closed 

PIV Card Application connection (i.e., with the same cardHandle) , 

the application returns an Invalid Card Handle message.

Target pivDisconnect 

Reference(s) 1. SP800-73, Section 6.1.2

2. AS04.03 

Precondition(s) 1. There exists a client application with a valid and open 

cardHandle:CardHandle to a PIV Card Application

2. The subject connection was previously closed

3. The card is physically connected to the card reader 

Test Steps 1. Call pivDisconnect w/ arguments 

• (IN) cardHandle 

Expected Result(s) Call returns with status_word := PIV_INVALID_CARD_HANDLE

Post Condition(s) 1. The Client Application is no longer connected to the PIV card 

application 

2. PIV Card Application is no longer aware of that particular Client

Application 

 

B.3 pivSelectCardApplication

B.3.1 Valid Test Assertions 

B.3.1.1 Select a Card Application with a full AID 

Purpose Ensure that a Client Application can locate and select a valid Card 

Application, store its properties, and return a reference to the 

applicationProperties.

Target pivSelectCardApplication 

Reference(s) 1. SP800-73, Section 6.2.1 

2. AS03.05, AS04.01, AS04.04 

Precondition(s) 1. The Client Application curr

through cardHandle.

ently owns a connection accessible 

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set applicationID := <<valid applicationID>> 

3. Create applicationProperties reference 

4. Call pivSelectCardApplication w/ 

• (IN) cardHandle 

 B-6 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• (IN) applicationID 

• (OUT) applicationProperties

Expected Result(s) Call returns with status_word of PIV_OK and initialized

applicationProperties reference 

Post Condition(s) The “CurrentlySelectedApplication” in PIV Card is the PIV Card

Application 

 

B.3.1.2 Use a right truncated AID to Select a Card Application 

Purpose Ensure that a Client Application is able to locate and select a valid 

Card Application that is identified by a right truncated AID, store its 

properties, and return a reference to the applicationProperties. 

Target pivSelectCardApplication 

Reference(s) 1. SP800-73, Section 6.2.1 

2. AS04.04 

Precondition(s) 1. The Client Application currently owns a connection accessible 

through cardHandle.

Test Steps 1. Set cardHandle := <<valid cardHandle>>

cationID := <<valid right truncated

3.

4.

2. Set appli

applicationID>> 

Create applicationProperties reference

Call pivSelectCardApplication w/ 

• (IN) cardHandle 

• (IN) applicationID 

• (OUT) applicationProperties 

Expected Result(s) 1. Call returns with status_word of PIV_OK and initialized

applicationProperties reference

Post Condition(s) The “CurrentlySelectedApplication” in PIV Card is the PIV Card

Application 

B.3.2 Test As

.3.2.1 Detect and handle an invalid cardHandle reference. 

sertions for Error Conditions 

B

Purpose Ensure that a Client Application can detect and gracefully exit when

passed an invalid cardHandle. 

Target pivSelectCardApplication 

Reference(s) 1. SP800-73, Section 6.2.1 

2. AS04.04 

Precondition(s) 1. An invalid

2. The applic

cardHandle is passed to the client application.

ationAID is assumed to be valid. 

Test Steps 1. Set cardHandle := <<invalid cardHandle>> 

2. Set applicationID := <<valid applicationID>> 

3. Create applicationProperties reference 

4. Call pivSelectCardApplication w/ 

• (IN) cardHandle 

• (IN) applicationID 

 B-7 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• (OUT) applicationProperties

Expected Result(s) Call returns with status_word of PIV_INVALID_CARD_HANDLE and does 

not initialize applicationProperties reference

Post Condition(s) The Client Application returns to the state it had prior to calling 

pivSelectCardApplication. 

B.3.2.2 Detect and handle an invalid applicationAID.

Purpose Ensure that a Client Application can detect and gracefully exit when

passed an invalid applicationAID. 

Target pivSelectCardApplication

Reference(s) 1. SP800-73, Section 6.2.1 

2. AS04.04 

Precondition(s) 1. A correctly formatted but invalid applicationAID is passed to the 

client application. 

2. The cardHandle is assumed to be valid. 

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set applicationID := <<invalid applicationID>>

3. Create applicationProperties reference 

4. Call pivSelectCardApplication w/ 

• (IN) cardHandle 

• (IN) applicationID 

• (OUT) applicationProperties

Expected Result(s) Call returns with status_word of

plicati

PIV_CARD_APPLICATION_NOT_FOUND

and does not initialize ap onProperties reference 

Post Condition(s) The Client Application returns to the state it had prior to calling

pivSelectCardApplication. 

B.4 pivLogIntoCardApplication 

B.4.1 Valid Test Assertions 

B.4.1.1 Log on to the Card Application 

Purpose Validate that the Client Application can establish application 

security status with the selected PIV Card Application.

Target pivLogIntoCardApplication

Reference(s) 1. SP800-73, Section 6.2.2 

2. AS03.05, AS04.01, AS04.05 

Precondition(s) 1. The card has established a connection to the client. 

2. The cardHandle was properly initialized by pivConnect. 

3. The client application has successfully executed the 

pivSelectCardApplication command. 

Test Steps 1. Set cardHandle := <<a valid cardHandle>>

 B-8 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

2. Set authenticators := <<valid authenticators byte 

uence>>

pivLogIntoCardApplication w/ 

seq

3. Call 

• (IN) authenticators 

• (IN) cardHandle 

Expected Result(s) Call returns with status_word of PIV_OK

Post Condition(s) Security context is established and the Client Application can now

pplication. The client is thus logged into Card 

perform read / write operations on the data objects controlled by 

PIV Card A

Application. 

B.4.2 Test As

B.4.2.1 Attempt Lo n

sertions for Error Conditions 

go without an invalid cardHandle. 

Purpose Ensure a Client Application can detect and process an invalid card

handle.

Target pivLogIntoCardApplication

Reference(s) 1. SP800-73, Section 6.2.2 

2. AS04.05 

Precondition(s) 1. The card has established a connection to the

2. The cardHandle was p

 client. 

roperly initialized by pivConnect. 

3. The client application has successfully executed the

pivSelectCardApplication command. 

Test Steps 1. Set cardHandle := <<an invalid cardHandle>> 

2. Set authenticators := <<valid authenticators byte

plication w/ 

sequence>> 

3. Call pivLogIntoCardAp

• (IN) authenticators 

• (IN) cardHandle 

Expected Result(s) Call returns with status_word := PIV_INVALID_CARD_HANDLE

Post Condition(s) The Client Application is not logged into the Card Application

B.4.2.2 Attempt Logon with a malformed authenticator. 

Purpose Ensure a Client Application can detect and process a malformed

authenticator byte sequence.

Target pivLogIntoCardApplication

Reference(s) 1. SP800-73, Section 6.2.2 

2. AS04.05 

Precondition(s) 1. The card has established a connection to the

2. The cardHandle was properly initialized by

 client. 

ommand.

pivConnect. 

3. The client application has successfully executed the 

pivSelectCardApplication c

Test Steps 1. Set cardHandle := <<a valid cardHandle>>

2. Set authenticators := <<a malformed authenticators byte 

 B-9 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

sequence>> 

3. Call pivLogIntoCardApplication w/ 

• (IN) authenticators 

• (IN) cardHandle 

Expected Result(s) Call returns with status_word := PIV_AUTHENTICATOR_MALFORMED

Post Condition(s) The Client Application is not logged into the Card Application.

B.4.2.3 Attempt Logon with invalid authenticator 

Purpose Ensure a Client Application can detect and process an authenticator 

which has the correct format but does not result in a valid security 

permission/context.

Target pivLogIntoCardApplication

Reference(s) 1. SP800-73, Section 6.2.2 

2. AS04.05 

Precondition(s) 1. The card has established a connection to the client. 

. The cardHandle was properly initialized by pivConnect. 

3. The client application has successfully executed the 

pivSelectCardApplication command. 

2

Test Steps 1. Set cardHandle := <<a valid cardHandle>>

e

IntoCardApplication w/ 

s

2. Set authenticators := <<a well formed authenticators byt

sequence containing an invalid PIN and/or KEY_REFERENCE

value>> 

3. Call pivLog

• (IN) authenticator

• (IN) cardHandle 

Expected Result(s) Call returns with status_word := PIV_AUTHENTICATION_FAILURE

Post Condition(s) The Client Application has is not logged into the Card Application. 

pivLogou

B.5.1 Valid T

B.5.1.1 Log out of

B.5 tOfCardApplication

est Assertions

the Card Application 

Purpose Reset security context of the card application. 

Target pivLogoutOfCardApplication 

Reference(s) 1. SP800-73, Section 6.2.4

2. AS03.05, AS04.01, AS04.07 

Precondition(s) 1. The client has established a connection to the card.

e client is logged into the card application.

3. The client has established an “application security status”. 

2. Th

Test Steps 1. Set cardHandle := <<a valid cardHandle>>

2. Call pivLogoutOfCardApplication w/ (IN)cardHandle 

Expected Result(s) Call returns with status_word := PIV_OK and the Client Application 

is logged off of the Card Application 

 B-10 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Post Condition(s) 1. The Client Application is logged off of the Card Application. Al

data excep

l

t “free read” data cannot be read or processed. 

andle remains valid.

open.

2. The cardH

3. The connection remains

B.5.1.2 Attempt Log out without logging in 

Purpose Verify that logging out without logging does not return any error

condition. 

Target pivLogoutOfCardApplication 

Reference(s) 1. SP800-73, Section 6.2.4 

2. AS04.07 

Precondition(s) 1. The client has established a connection to the card.

2. e successfully executed the

v plication method. 

Th client has

pi SelectCardAp

3. The client is not logged into the PIV Card Application 

Test Steps 1. Set cardHandle := <<a valid cardHandle>>

2. Call pivLogoutOfCardApplication w/(IN)cardHandle 

Expected Result(s) Call returns with status_word := PIV_OK 

Post Condition(s) The precondition states remain unchanged. 

B.5.2 Test As

Attempt Lo alid Cardhandle

sertions for Error Conditions 

B.5.2.1 g out with Inv

Purpose Ensure the method can detect and handle an invalid cardHandle.

Target pivLogoutOfCardApplication

Reference(s) 1. SP800-73, Section 6.2.4 

2. AS04.07

Precondition(s) 1. The client has established a connection to the card. 

2. The client is logged into the card application.

3. The client has established an “application security status”. 

Test Steps 1. Set cardHandle := <<an invalid cardHandle>> 

2. Call pivLogoutOfCardApplication w/(IN)cardHandle 

Expected Result(s) Call returns with status_word :=PIV_INVALID_CARD_HANDLE

Post Condition(s) The precondition states remain unchanged. 

a

T

.6.1.1 Get a reference to data object that does not require Login 

B.6 pivGetD ta

B.6.1 Valid est Assertions

B

Purpose Ensure the Client Application can read data objects from the card 

that does not require a Login. 

Target pivGetData

 B-11 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Reference(s) 1. SP800-73, Section 6.2.3

2. AS03.05, AS04.01, AS04.06

Precondition(s) 1. The Client Application currently owns a connection to the Card 

2. tion.

Application accessible through cardHandle. 

The client is not logged into the Card Applica

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set OID := <<valid OID>> (Repeat this for all implemented

t for each implemented data object)

objects on the card except for Fingerprint, Printed 

Information and Facial Image) 

3. Create data reference

4. Call pivGetData w/ (tes

• (IN) cardHandle 

• (IN) OID 

• (OUT) data

Expected Result(s) Call returns with status_word of PIV_OK in all cases and an 

initialized reference to data 

Post Condition(s) N/A 

B.6.1.2 Get a reference to data object that requires Login 

Purpose Ensure the Client Application can read data objects fro

that requires a Login.. 

m the card 

Target pivGetData 

Reference(s) 1. SP800-73, Section 6.2.3 

2. AS03.05, AS04.01, AS04.06 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

Application accessible through cardHandle. 

2. The client is logged into the Card Application. 

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set OID := <<valid OID>> (Repeat this for all implemented

nt, Printed

4. or each implemented data object)

objects in the following set - Fingerpri

Information and Facial Image) 

3. Create data reference 

Call pivGetData w/ (test f

• (IN) cardHandle 

• (IN) OID 

• (OUT) data 

Expected Result(s) Call returns with status_word of PIV_OK in all cases and an 

initialized reference to data

Post Condition(s) N/A 

B.6.2 Test As

B.6.2.1 Handle an i

sertions for Error Conditions 

nvalid cardHandle

 B-12 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Purpose Ensure the Client Application can recognize and handle an invalid

cardHandle. 

Target pivGetData

Reference(s) 1. SP800-73, Section 6.2.3 

2. AS04.06 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

Application accessible through cardHandle.

2. The Client Application is not logged into the Card Application. 

Test Steps 1. Set cardHandle := <<invalid cardHandle>>

2. Set OID := <<valid OID>> 

3. Create data reference

4. Call pivGetData w/ 

• (IN) cardHandle 

• (IN) OID 

• (OUT) data 

Expected Result(s) Call returns with status_word := PIV_INVALID_CARD_HANDLE and 

does not initialize data reference 

Post Condition(s) The client application returns to the state it had before the call. 

B.6.2.2 Handle an invalid Object Identifier

Purpose Ensure the Client Application can recognize and handle an invalid 

OID. 

Target pivGetData

Reference(s) 1. SP800-73, Section 6.2.3 

2. AS04.06 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

Application accessible through cardHandle. 

2. The Client Application is logged into the Card Application. 

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

> (Improper syntax or not found in 

etData w/ 

dHandle

data 

2. Set OID := <<invalid OID>

Table 6 of SP 800-73)

3. Create data reference

4. Call pivG

• (IN) car

• (IN) OID 

• (OUT) 

Expected Result(s) Call returns with status_word := PIV_INVALID_OID and does not 

initialize data reference

Post Condition(s) The client application returns to the state it had before the call.

B.6.2.3 The Client Application can handle missing data object 

Purpose Ensure the Client Applica

OID. 

tion can recognize and handle a missing

 B-13 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Target pivGetData

Reference(s) 1. SP800-73, Section 6.2.3

2. AS04.06 

Precondition(s) 1. The Client Application currently owns a connection to the C

Application accessible

ard

through cardHandle. 

2. The client is logged into the Card Application.

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. (Found in Table 6 of SP 800-73 but 

lication.)

l w/ 

dHandle

Set OID := <<valid OID>> 

not implemented on the PIV Card app

3. Create data reference 

4. Cal pivGetData

• (IN) car

• (IN) OID 

• (OUT) data 

Expected Result(s) Call returns with status_word := and 

PIV all optional objects

PIV_DATA_OBJECT_NOT_FOUND 

does not initialize data reference (NOTE: This test will return 

_INVALID_OID if the card has implemented

in the PIV Data Model) 

Post Condition(s) The client application returns to the state it had before the call. 

B.6.2.4 Security Conditions are enforced for Secured Objects 

Purpose Ensure that Security Con

from Secured Applications 

ditions are enforced for Retrieving Data

Target pivGetData

Reference(s) 1. SP800-73, Section 6.2.3

2. AS04.06 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

Application accessible through cardHandle. 

2. The client has successfully selected the PIV Card Application

3. The client is not logged into the Card Application. 

Test Steps 1. Set cardHandle := <<valid cardHandle>>

2. Set OID := <<valid OID for each of the following objects 

if they are implemented; Fingerprint, Facial Image, 

PIN>>

ata w/ (for all implemented objects that 

ID

Printed Information >> 

3. Create data reference 

4. Set authenticators := <<invalid authenticators byte 

sequence for

5. Call pivGetD

require PIN) 

• (IN) cardHandle 

• (IN) O

• (OUT) data 

Expected Result(s) Call returns with status_word :=

ta 

e

PIV_SECURITY_CONDITION_NOT_SATISFIED and does not initialize da

ref rence

 B-14 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Post Condition(s) The client application returns to the state it had before the call. 

B.7 pivPutDa

B.7.1 Valid T

B.7.1.1 Write data to an object on the Client Application 

ta

est Assertions

Purpose Ensure the Client Application can

object on the Card Application. 

write the entire data content to an 

Target pivPutData 

Reference(s) 1. SP800-73, Section 6.4.1 

2. AS03.05, AS04.01, AS04.09 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

on accessible through cardHandle. 

2. The PIV Card Application has authenticated the PIV Card 

n Administrator.

Applicati

Applicatio

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set OID := <<valid OID>>

3. Set data := <<a correctly formatted byte sequence> 

4. Call pivPutData w/ (for all implemented objects)

• (IN) cardHandle 

• (IN) OID 

• (IN) data 

Expected Result(s) Call returns with status_word of PIV_OK

 Post Condition(s) Validate that the Card Application has written the entire dataset of 

the selected object on the Client Application by issuing pivGetData

B.7.2 Test Assert

entify and

ions for Error Conditions 

B.7.2.1 Id handle an invalid card handle

Purpose Ensure the Client Application can identify and respond to an invalid 

card handle. 

Target pivPutData 

Reference(s) 1. SP800

2. S0

-73, Section 6.4.1

A 4.09

Precondition(s) 1. rrently owns a connection to the Card 

Handle.

2. e tion has authenticated the PIV Card 

The Client Application cu

Application accessible through card

Th PIV Card Applica

Application Administrator. 

Test Steps 1. Set cardHandle := <<invalid cardHandle>>

• (IN) cardHandle 

2. Set OID := <<valid OID>> 

3. Set data := <<a correctly formatted byte sequence> 

4. Call pivPutData w/ 

 B-15 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• (IN) OID 

• (IN) Data 

Expected Result(s) Call returns with status_word of PIV_INVALID_CARD_HANDLE

Post Condition(s) 1. The Card Application returns to the state it had prior to the

emain unchanged. 

pivPutData method call. 

2. The precondition states r

B.7.2.2 Identify and handle an invalid Object Identifier (OID)

Purpose Ensure the Client Application can identify and handle an invalid 

OID.

Target pivPutData 

Reference(s) 1. SP800-73, Section 6.4.1 

2. AS04.09 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

Application accessible through cardHandle. 

2. The PIV Card has authenticated the PIV Card Application

Administrator. 

Test Steps 1. Set cardHandle := <<valid cardHandle>>

2. Set OID := <<invalid OID>> (Improper syntax or not found in 

3. Set data := <<a correctly formatted byte sequence> 

Table 6 of SP 800-73)

4. Call pivPutData w/ 

• (IN) cardHandle 

• (IN) OID 

• (IN) Data 

Expected Result(s) Call returns with status_word of PIV_INVALID_OID. Note that the 

PIV middleware will detect the invalid OID and return error without 

interrogating the card. 

 Post Condition(s) 1. The Card Application returns to the state it had prior to the 

pivPutData method call. 

2. The precondition states remain unchanged. 

B.7.2.3 Security Conditions are enforced for Secured Objects 

Purpose Ensure that Security Conditions are enforced for Writing Data to 

Secured Objects 

Target pivPutData

Reference(s) 1. SP800-73, Section 6.4.1

2. AS04.09 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

Application accessible through cardHandle. 

2. The Client Application has successfully selected the PIV Card 

Application. 

 B-16 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

3. The PIV Card Application has not authenticated the PIV Card

Application Administrator. 

Test Steps 1. Set cardHandle := <<valid cardHandle>>

2. Set OID := <<valid OID>> 

3. e

4. l emented objects)

Cr ate data reference

Ca l pivPutData w/ (for all impl

• (IN) cardHandle 

• (IN) OID 

• (IN) data 

Expected Result(s) Call returns with status_word := 

PIV_SECURITY_CONDITION_NOT_SATISFIED

reference 

 and does not initialize data 

Post Condition(s) The client application returns to the state it had before the call. 

B.8 pivGener

Valid T

erate a

ateKeyPair 

B.8.1 est Assertions

B.8.1.1 Gen n asymmetric key pair 

Purpose Ensure the Card Application can generate an asymmetric key pair. 

Target pivGenerateKeyPair 

Reference(s) 1. SP800-73, Section 6.4.2 

2. AS03.05, AS04.01, AS04.10

Precondition(s) 1. The Client Application currently owns a connection to the C

Application accessible through cardHandle. 

ard

ted the PIV Card

rd

2. The Client Application has successfully selec

Application. 

3. The PIV Card Application has authenticated the PIV Ca

Application Administrator. 

Test Steps 1. Set cardHandle := <<valid ca

2. t n exi

rdHandle>>

<<a sting key reference suitable

r ied cryptographicMechanism >> (say

3. Set cryptographicMechanism := <<a recognized Cryptographic 

06)

Se keyReference :=

fo use with the specif

9A) 

Mechanism Identifier>> (say

4. Create publicKey reference

5. Call pivGenerateKeyPair w/ 

• (IN) cardHandle 

• (IN) keyReference 

• (IN) cryptographicMechanism 

• (OUT) publicKey 

Expected Result(s) Call returns with status_word of PIV_OK and a reference to 

publicKey 

Post Condition(s) The Client Application creates a reference to a public key / priva

key pair which is accessible to the Card Application. 

te 

 B-17 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

B.8.2 Test As s 

 and handle an invalid card handle 

sertions for Error Condition

B.8.2.1 Identify

Purpose Ensure the Card Application can catch invalid card handles. 

Target pivGenerateKeyPair

Reference(s) 1. SP800-73, Section 6.4.2 

2. AS04.10

Precondition(s) 1. The Client Application currently owns a connection to the Card

Application accessible through cardHandle. 

2. The Client Application has successfully selected the PIV Card

Application. 

3. The PIV Card Application has authenticated the PIV Card 

Application Administrator. 

Test Steps 1. Set cardHandle := <<invalid cardHandle>>

sting key reference suitable

r cified cryptographicMechanism >>

3. Set cryptographicMechanism := <<a recognized Cryptographic 

4. e

2. Set keyReference := <<an exi

fo use with the spe

Mechanism Identifier>> 

Cr ate publicKey reference

5. Call pivGenerateKeyPair w/

• (IN) cardHandle 

• (IN) keyReference 

• (IN) cryptographicMechanism 

• (OUT) publicKey 

Expected Result(s) Call returns with status_word of PIV_INVALID_CARD_HANDLE

 Post Condition(s) 1. The Card Application returns to the state it had prior to the 

ivGenerateKeyPair method call.

ition states are unaffected.

p

2. The precond

B.8.2.2 Identify and handle an invalid keyReference or key-Algorithm Combination 

Purpose Ensure that the Card Application can identify an invalid

keyReference. 

Target pivGenerateKeyPair 

Reference(s) 1. SP800-73, Section 6.4.2 

2. AS04.10

Precondition(s) 1. The Client Application currently owns a connection to the Card

ted the PIV Card

Application accessible through cardHandle. 

2. The Client Application has successfully selec

Application. 

3. The PIV Card Application has authenticated the PIV Card 

Application Administrator. 

Test Steps 1. Set cardHandle := <<valid cardHandle>>

= <<a key reference not found in the 

3. Set cryptographicMechanism := <<a recognized Cryptographic 

2. Set keyReference :

specification>> 

 B-18 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Mechanism Identifier>> 

4. Create publicKey reference 

5. l

(OUT) publicKey 

Ca l pivGenerateKeyPair w/

• (IN) cardHandle 

• (IN) keyReference 

• (IN) cryptographicMechanism 

• 

Expected Result(s) Call returns with status_word of 

PIV_INVALID_KEY_OR_KEYALG_COMBINATION

Post Condition(s) 1. The Card Application returns to the state it had prior to the 

pivGenerateKeyPair method call.

2. The precondition states are unaffected.

B.8.2.3 Identify and handle an invalid cryptographicMechanism 

Purpose Ensure that the Card Application can identify unsupported

cryptographicMechanisms. 

Target pivGenerateKeyPair 

Reference(s) 1. SP800-73, Section 6.4.2 

2. AS04.10

Precondition(s) 1. The Client Application currently own

ble through cardH

s a connection to the Card

andle.

2. 

3. thenticated the PIV Card

Application accessi

The Client Application has successfully selected the PIV Card 

Application. 

The PIV Card Application has au

Application Administrator. 

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set keyReference := <<a valid key reference>> 

3. Set cryptographicMechanism := <<an unrecognized

l pivGenerateKeyPair w/ 

• (IN) 

publicKey 

Cryptographic Mechanism Identifier>> 

4. Create publicKey reference

5. Cal

cardHandle 

• (IN) keyReference 

• (IN) cryptographicMechanism 

• (OUT)

Expected Result(s) Call returns with status_word of

PIV_UNSUPPORTED_CRYPTOGRAPHIC_MECHANISM

 Post Condition(s) 1. The Card Application returns to the state it had prior to the 

pivGenerateKeyPair method call. 

2. The precondition states are unaffected. 

B.8.2.4 Security Conditions are Enforced 

Purpose Ens

con

ure that the card application enforces the necessary security 

ditions when called from Client Application.. 

 B-19 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Target pivGenerateKeyPair 

Reference(s) 1. SP800-73, Section 6.

2. S0

4.2

A 4.10

Precondition(s) 1. rrently owns a connection to the Card 

ardHandle. 

2. successfully selected the PIV Card

The Client Application cu

Application accessible through c

The Client Application has

Application. 

3. The PIV Card Application has not authenticated the PIV Card 

Application Administrator.

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

Mechanism Identifier>>

keyReference := <<a ref

2. Set cryptographicMechanism := <<a recognized Cryptographic 

erence to a valid key that is

ociated with the selected cryptographicMechanism >> 

 w/ 

• (IN) cardHandle 

publicKey 

3. Set

ass

4. Create publicKey reference 

5. Call pivGenerateKeyPair

• (IN) keyReference 

• (IN) cryptographicMechanism 

• (OUT)

Expected Result(s) Ca l returns with status_wo

PIV_SECURITY_CONDITIONS_

l rd of

NOT_SATISFIED

 Post Condition(s) 1. The Card Application returns to the state it had prior to the 

2. T

pivGenerateKeyPair method call. 

he precondition states are unaffected.

B.9 pivCrypt

B.9.1 Valid T

B.9.1.1 Authentica

est Assertions

te the Card Application to Client Application

Purpose Exercise the Card Application to perform Internal Authenticate.

Target pivCrypt

Reference(s) 1. 

2. 

SP800-73, Section 6.3.1 

AS03.05, AS04.01, AS04.08 

Precondition(s) 1. rently owns a connection to the Card 

cardHandle. 

The Client Application cur

Application accessible through

2. The client is logged into the Card Application. 

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set keyReference := <<9A>>

namic Authentication

Template format(Table 17 of SP 800-73)to encode a 

challenge to be sent to the card>> 

keyReference 

3. Set algorithmIdentifier := <<06>> 

4. Set algorithmInput := <<Use the Dy

5. Create algorithmOutput reference 

6. Call pivCrypt w/ 

• (IN) cardHandle 

• (IN)

 B-20 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• (IN) algorithmIdentifier 

• (IN) algorithmInput

• (OUT) algorithmOutput 

Expected Result(s) Call returns with status_word of PIV_OK with the algorithmOutut 

carrying the encrypted challenge from the card.

 Post Condition(s) N/A 

B.9.1.2 Authenticate the Client Application to Card Application

Purpose Exercise the Card Application to perform External Authenticate. 

Target pivCrypt 

Reference(s) 1. SP800-73, Section 6.3.1 

2. AS03.05, AS04.01, AS04.08

Precondition(s) 1. The Client Application currently owns a connection to the Card

Application accessible through cardHandle. 

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. t

3. Set algorithmIdentifier := <<00>> 

4. Set algorithmInput := <<Use the Dynamic Authentication 

tput reference

• (IN) keyReference 

• (IN) algorithmIdentifier 

t

Se keyReference := <<9B>>

Template format(Table 17 of SP 800-73)to first request a

challenge and then to encode an encrypted challenge in the

next call>> 

5. Create algorithmOu

6. Call pivCrypt w/ 

• (IN) cardHandle 

• (IN) algorithmInpu

• (OUT) algorithmOutput 

Expected Result(s) 1. The first Call returns with status_word of PIV_OK with the 

algorithmOutut carrying the challenge from the card.

2. The second call returns the status word of PIV_OK.

Post Condition(s) N/A 

B.9.1.3 Mutual Authentication of Client Application and Card Application 

Purpose Exercise the Card Application to perform Mutual Authenticate. 

Target pivCrypt 

Reference(s) 1. SP800-73, Section 6.3.1 

2. AS03.05, AS04.01, AS04.08 

Precondition(s) 1. The Client Application currently owns a connection to the C

Application accessible through cardHandle.. 

ard

Test Steps 1. Set cardHandle := <<valid cardHandle>> 

2. Set keyReference := <<9B>>

3. Set algorithmIdentifier := <<00>>

4. Set algorithmInput := <<Use the Dynamic Authentication 

-73) to first request a

wed by a second call that

ion of the encrypted nonce from the

card appended with the client’s application generated

Template format(Table 17 of SP 800

witness from the card, then follo

contains the decrypt

 B-21 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

nonce.>> 

5. Create algorithmOutput reference 

6. Call pivCrypt w/ 

• (IN) cardHandle 

• (IN) keyReference 

• (IN) algorithmIdentifier 

• (IN) algorithmInput 

• (OUT) algorithmOutput

Expected Result(s) 1. The first Call returns with status_word of PIV_OK with the 

algorithmOutput carrying the encrypted nonce from the card 

2. The second call returns the status word of PIV_OK with 

algorithmOutput carrying the encrypted text of the client 

application generated nonce. 

 Post Condition(s) N/A 

B.9.2 Test As s 

y and

sertions for Error Condition

B.9.2.1 Identif handle invalid card handles

Purpose Ensure the Client Application can detect invalid card handles. 

Target pivCrypt 

Reference(s) 1. SP800-73, Section 6.3.1 

2. AS04.08 

Precondition(s) 1. The Client Application currently owns a connection to the Card

Application accessible through cardHandle. 

2. The client is logged into the Card Application.

Test Steps 1. Set cardHandle :=

2. t

<<an invalid cardHandle>>

<<a recognized key reference>>

3. Set algorithmIdentifier := <<a recognized Algorithm 

4. Set algorithmInput := <<byte sequence compatible with the 

o ier AND keyReference>> 

5. Create algorithmOutput reference 

Se keyReference :=

Identifier>> 

ch sen algorithm identif

6. Call pivCrypt w/ 

• (IN) cardHandle 

• (IN) keyReference 

• (IN) algorithmIdentifier

• (IN) algorithmInput 

• (OUT) algorithmOutput 

Expected Result(s) Call returns with status_word of PIV_INVALID_CARD_HANDLE

Post Condition(s) 1. The Card Application returns to the state it had prior to the 

pivCrypt method call. 

2. The precondition states are unaffected. 

B.9.2.2 Identify and handle invalid key reference or algorithm 

Purpose Ensure the Client Application can detect invalid key reference or 

algorithm. 

 B-22 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Target pivCrypt 

Reference(s) 1. SP800-73, Section 6.3.1 

2. AS04.08 

Precondition(s) 1. The Client Application currently owns a connection to the Card 

Application accessible through cardHandle. 

2. The client is logged into the Card Application. 

Test Steps 1. Set cardHandle := <<a valid cardHandle>>

) both

<<byte sequence compatible with the

n encoded according to the format in

-

cardHandle 

• (IN) keyReference 

• (IN) algorithmIdentifier 

put

algorithmOutput 

2. Either the keyReference (or) algorithmIdentifier (or

set to an invalid value.

3. Set algorithmInput :=

type of authenticatio

the Dynamic Authentication Template – Table 17 of SP 800

73>>

4. Create algorithmOutput reference

5. Call pivCrypt w/ 

• (IN)

• (IN) algorithmIn

• (OUT) 

Expected Result(s) Call returns with status_word of PIV_INVALID_KEYREF_OR_ALGORITHM

 Post Condition(s) 1. The Card Application returns to the state it had prior to the 

pivCrypt method call.

2. The precondition states are unaffected. 

B.9.2.3 Identify and handle invalid input data

Purpose Ensure that the Client Application can identify and handle input 

alg

data (algorithmInput) that is not compatible with the requested 

orithm/key combination. 

Target pivCrypt 

Reference(s) 1. SP800-73, Section 6.3.1 

2. AS04.08

Precondition(s) 1. The Client Application currently owns a connection to

Application a

the Card

ccessible through cardHandle. 

2. The client is logged into the Card Application.

Test Steps 1

2.

. t

the

3. Set algorithmIdentifier := <<a recognized Algorithm 

g

6.

Se cardHandle := <<a valid cardHandle>>

Set keyReference := <<a key reference compatible with

algorithmIdentifier input value>> 

Identifier>> 

4. Set algorithmInput := << byte sequence not compatible 

with the type of authentication and not encoded accordin

to the format in the Dynamic Authentication Template – 

Table 17 of SP 800-73>> 

5. Create algorithmOutput reference

Call pivCrypt w/ 

• (IN) cardHandle 

 B-23 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• (IN) keyReference 

• (IN) algorithmIdentifier 

• (IN) algorithmInput 

• (OUT) algorithmOutput 

Expected Result(s) Call returns with status_word of PIV_INPUT_BYTES_MALFORMED

 Post Condition(s) 1. The Card Application returns to the state it had prior to the 

pivCrypt method call. 

2. The precondition states are unaffected.

B.9.2.4 Security Conditions are Enforced 

Purpose Verify that Internal Authenticate using a private key cannot be 

performed without logging (PIN VERIFY) into the Card Application. 

Target pivCrypt 

Reference(s) 1. SP800-73, Section 6.3.1 

2. AS04.08

Precondition(s) 1. The on to the Card

hrough cardHandle. 

Client Application currently owns a connecti

Application accessible t

2. The client is not logged into the Card Application. 

Test Steps 1. Set cardHandle := <<valid cardHand

2. 

le>>

3. t

5.

algorithmOutput 

Set keyReference := <<9A>> 

Se algorithmIdentifier := <<06>>

4. set algorithmInput : = <<Use the Dynamic Authentication 

Template format(Table 17 of SP 800-73)to encode a 

challenge to be sent to the card>> 

Create algorithmOutput reference

6. Call pivCrypt w/ 

• (IN) cardHandle 

• (IN) keyReference 

• (IN) algorithmIdentifier 

• (IN) algorithmInput 

• (OUT)

Expected Result(s) Call returns with status_word of 

PIV_SECURITY_CONDITIONS_NOT_SATISFIED

 Post Condition(s) 1. The Card Application returns to the state it had prior to the 

pivCrypt method call. 

2. The precondition states are unaffected.

 B-24 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Appendix C—Card Command Interface Test Assertions 

Test Assertion Template

Purpose A quick description of the test and why it is being run 

Reference(s) 1. References to the SP800-73 or other relevant publications 

2. References to DTRs 

Precondition(s) Anything that must be done or known prior to executing the

scenario 

Test Scenario Sequence of APDU calls

Expected Result(s) What the expected execution path yields in terms of progress and

values 

Post Condition(s) A description of the card application state once the test scenario

completes 

C.1 Card Commands for Data Access

SELEC

C.1.1.1 Contact Int

C.1.1 T Card Command

erface

Purpose Validates that the PIV Card executes the SELECT card command 

through the contact interface for the following conditions:

rt AID 

1. Long AID 

2. Right-truncated sho

Reference(s) 1. SP800-73, Section 7.1.1, Section 5.2 

2. AS01.04, AS01.05, AS01.06, AS01.07, AS03.03, AS05.01, AS05.02,

AS05.03, AS05.05, AS05.06, AS05.07, AS05.08, AS05.09

Precondition(s) 1. A valid PIV Card is inserted into the contact reader 

2. There exists a valid PC/SC connection between the test system

d to the PIV Card

and an instance of the contact reader 

3. No application is currently connecte

Application 

Test Scenario 1. Send SELECT card command with,

2. Send SELECT card command without the version number, 

0 10 00

• AID == A0 00 00 03 08 00 00 10 00 01 00 

• AID == A0 00 00 03 08 00 0

Expected Result(s) 1. The command returns the Application Property Template (APT)

with the status words “90 00” at the end. Check that the

T)

wit

application property template conforms to Table 8 of SP800-73 

application property template conforms to Table 8 of SP800-73 

2. The command returns the Application Property Template (AP

h the status words “90 00” at the end. Check that the

 C-1 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Post Condition(s) PIV Card Application is now the Currently Selected Application.

C.1.1.2 Error Condition 

Purpose Validates that the PIV Card Application is not deselected, while the

cur n

SELEC e

rd.

re tly selected application is the PIV Card Application, if the 

T command is sent with an AID that is not supported by th

ca

Reference(s) 1. SP800-73, Section 7.1.1 

2. AS05.10

Precondition(s) 1. A v

There exists a valid PC/SC connection between the test system 

ader

3. 

Ap

alid PIV Card is inserted into the contact reader

2.

and an instance of the contact re

No application is currently connected to the PIV Card 

plication 

Test Scenario 1. Sen with,

0 10 00 01 00

2. Rep

• 0 00 00 00 (invalid AID)

n

d SELECT card command

• AID == A0 00 00 03 08 00 0

eat step 1 with,

AID == A0 00 00 03 08 0

3. Se d GET DATA card command with,

• Data field of the command containing the tag of the 

Card Capability Container data object (ALWAYS READ) 

(This test case is executed with both Long AID and Short AID) 

Expected Result(s) 1. The command returns the Application Property Template (APT) 

with the status words “90 00” at the end 

2. The command returns ‘6A 82’, application not found 

3. The command returns the Card Capability Container (CCC) 

object with the status words “90 00” at the end

Post Condition(s) The I ntly Selected

Ap ic

P V Card Application continues to be the Curre

pl ation 

C.1.1.3 Contactless Interface

Purpose Va the

contactless interface 

lidates conformance of the SELECT card command through

Reference(s) 1. SP800-73, Table 15 

2. AS05.01

Precondition(s) 1. A valid PIV Card is placed within the reading range of the 

2. e

and

No other contactless card is within the proximity of the reader 

contactless reader 

Th re exists a valid PC/SC connection between the test system

an instance of the contactless reader

3.

Test Scenario 1. Send SELECT card command with, 

• AID == A0 00 00 03 08 00 00 10 00 01 00 

 C-2 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

2. Send SELECT card command without the version number, 

• AID == A0 00 00 03 08 00 00 10 00 

AID =

3. Repeat step 1 with, 

= A0 00 00 03 08 00 00 00 00 (invalid AID)

Expected Result(s) 1. The command returns the Application Property Template (APT)

with the status words “90 00” at the end. The application 

property template conforms to Table 8 of SP800-73 

2. The command returns the Application Property Template (APT) 

with the status words “90 00” at the end. The application 

property template conforms to Table 8 of SP800-73 

3. The command returns ‘6A 82’, application not found 

Post Condition(s) PIV Card Application is the Currently Selected Application

C.1.2 GET DA A

C.1.2.1 Contact Interfa

T

ce

card command

Purpose Va

con plicable to

dat

lidates that the PIV Card accepts the GET DATA command

through the contact interface and with the access rule of each 

tainer as specified in Table 1 of SP800-73. This test is ap

the mandatory data objects required by SP800-73, and the optional 

a objects when supported by the card.

Reference(s) 1. SP800-73, Section 7.1.2 

2. AS05.01, AS05.11 

Precondition(s) 1. A valid PIV Card is inserted into the contact reader 

2. There exists a valid PC/SC connection between the test system 

and an instance of the contact reader 

3. No application is currently connected to the PIV Card 

Application 

4. The optional containers supported by the card recorded 

Test Scenario 1. Send SELECT card command with, 

• AID == A0 00 00 03 08 00 00 10 00 01 00

and with,

the command containing the tag of the

4. Send GET DATA command with, 

2. Send GET DATA command with, 

• Data field of the command containing the tag of the 

Card Capability Container data object 

3. Send GET DATA comm

• Data field of

CHUID data object 

• Data field of the command containing the tag of the 

X.509 Certificate for PIV Authentication object

5. Send GET DATA command with, 

 C-3 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• Data field of the command containing the tag of the 

Card Holder Fingerprint data object 

6. Send GET DATA command with, 

• Data field of the command containing the tag of the

of the

8. Send GET DATA command with, 

he

if

9. Send GET DATA command with, 

Data field of the command containing the tag of the 

X.509 Certificate for Key Management data object if 

10. Send GET DATA command with, 

of the command containing the tag of the

X.509 Certificate for Card Authentication data object 

if supported by the card 

field of the command containing the tag of the

12.

length of the field to 8 bytes.

ng the tag of the

object

14.

taining the tag of the

15. 

• 

Printed Information data object if supported by the

card 

7. Send GET DATA command with, 

• Data field of the command containing the tag

Card Holder Facial Image data object if supported by 

the card 

• Data field of the command containing the tag of t

X.509 Certificate for Digital Signature data object

supported by the card 

•

supported by the card 

• Data field

11. Send GET DATA command with, 

• Data

Security Object 

Send VERIFY card command with, 

• P2, key reference value is set to ‘80’ 

• Data field of the command will contain the PIN value

obtained from the vendor, and padded with ‘FF’ to 

complete the total

(This command could instead being executed with P2 = ‘00’

if the card supports the Global PIN and if the PIV Card 

Application Access Control Rule allow for access by 

verification of Global PIN). 

13. Send GET DATA command with, 

• Data field of the command containi

Card Holder Fingerprint data

Send GET DATA command with, 

• Data field of the command con

Printed Information data object if supported by the 

card 

Send GET DATA command with, 

Data field of the command containing the tag of the

 C-4 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Card Holder Facial Image data object if supported by 

16. 

• 

the card 

Send GET DATA command with, 

Data field of the command containing a tag that does 

not identify any of the data objects resident on the 

card 

Expected Result(s) 1. The command returns the Application Property Template with 

ainer data object

3. The

sta

4. e he X.509 Certificate for the PIV 

d.

6. 

Dig

7. In s

d

ords “90 00” at the end

s the status words “90 00”

mand returns the requested data

12. s

the status words “90 00” at the end

2. The command returns the Card Capability Cont

along with the status words “90 00” at the end. . 

command returns the CHUID data object along with the 

tus words “90 00” at the end

Th command returns t

Authentication along with the status words “90 00” at the en

5. For Steps 5 through 7, the command returns “69 82”, security 

status not satisfied due to lack of PIN entry.

In step 8, the command returns the X.509 Certificate for the 

ital Signature with the status words “90 00” at the end

tep 9, the command returns the X.509 Certificate for the Key

Management with the status words “90 00” at the end 

8. In step 10, the command returns the X.509 Certificate for the Car

Authentication Key with the status w

9. In step 11, the command returns the Security Object with the 

status words “90 00” at the end. 

10. In step 12, the command return

11. For steps 13 through 15 the com

object along with the status words “90 00” at the end 

In tep 16, the command returns ‘6A 82’, data object not found 

Post Condition(s) NA

 

C.1.2.2 Contactless Interface 

Purpose Validates the conformance of the GET DATA command through the

contactless interface. This test is applicable to the mandatory data 

objects required by SP800-73, and the optional data objects when

supported by the card.

Reference(s) 1. SP800-73, Table 15 

2. AS05.01

Precondition(s) 1. A valid PIV Card is placed within the reading range of the 

contactless reader 

2. There exists a valid PC/SC connection between the test system

and an instance of the contactless re

3. No other contactless card is within t

ader

he proximity of the reader

 C-5 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test Scenario 1. Repeat the steps 1-11 and step 16 from the Test C.1.2.1 

Expected Result(s) 1. e

the

security

atus is not satisfied due to the contactless interface.

s the CHUID data object along 

end

4. For Steps 4 through 9, the command returns “69 82”, security 

us is not satisfied due to the contactless interface.

rd

ords “90 00” at the

us words “69 82”,

ce

command returns “6A 82”, Data Object

Th command returns the Application Property Template with

status words “90 00” at the end

2. In step 2, the command returns the status words “69 82”,

st

3. In step 3, the command return

with the status words “90 00” at the

stat

5. In step 10, the command returns the X.509 Certificate for the Ca

Authentication Key Object with the status w

end. 

6. In step 11, the command returns the stat

security status is not satisfied due to the contactless interfa

7. For Referred step 16, the

not found 

Post Condition(s) NA 

C.2 Comman

C.2.1 VERIFY

C.2.1.1 Contact Interfa

ds For Authentication

 Card Command 

ce

Purpose Validates the following conditions associated with the VER

mand:

IFY

com

and

matted per

SP800-73 

rect PIN

1. Successful execution of the comm

2. Execution of the command with a PIN not for

3. Multiple execution of the command with an incor

(formatted correctly) until the retry counter reaches zero

Reference(s) 1. SP8

2. AS01.17, AS01.18, AS05.01, AS05.12, AS05.13, AS05.14, AS05.15 

00-73, Section 7.2.1

Precondition(s) 1. The

2. 

re exists a valid physical connection between an instance of

the PIV Card and the host of the calling application 

PIV Application PIN reset retry counter value (maximum 

number of PIN tries allowed) is recorded

Test Scenario 1. Send SELECT card command with, 

2. Sen

• 

• AID == A0 00 00 03 08 00 00 10 00 01 00 

d VERIFY card command with,

• P2, key reference value is set to a value other than 

what is supported by the card 

Data field of the command will contain the correct 

cardholder PIN value, and padded with ‘FF’ to complete

the total length of the field to 8 bytes

 C-6 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

3. Send VERIFY card command with, 

• P2, key reference value is set to ‘80’ 

• Data field of the command will contain the correct 

cardholder PIN value, and padded with ‘FF’ to complete 

the total length of the field to 8 bytes. (This step

could be repeated with P2 = ‘00’ if the card supports

4. n

• 

• IN

OT

Global PIN and the expected result will be the same as 

for the step with P2 = ‘80’). 

Se d VERIFY card command with,

P2, key reference value is set to ‘80’ 

Data field of the command will contain an arbitrary P

value other than what is obtained from the vendor, N

issuer specified maximum number of PIN tries are exceeded 

y PIN

ained from the vendor, and

omplete the total length of the

padded with ‘FF’ to complete the total length of the

field to 8 bytes 

5. Send VERIFY card command repeatedly, until after the 

with, 

• P2, key reference value is set to ‘80’ 

• Data field of the command will contain an arbitrar

value other than what is obt

padded with ‘FF’ to c

field to 8 bytes 

Expected Result(s) 1. The command returns the Application Property Template with

at the end

2. 

3. The ounter is set

urns ’6A 80’

X’ until the maximum number of PIN tries are reached

ed

the status words “90 00”

The command returns ‘6A 88’ 

command returns ’90 00’ (Verify that the retry c

to Reset Retry Value). 

4. The command ret

5. The command returns 

• ‘63 C

(X indicates the number of further allowed retries) 

• ’69 83’ when the maximum number of PIN tries are exceed

Post Condition(s) The card is blocked 

C.2.1.2 Contactless Interface

Purpose Validates the conformance of the VERIFY command with SP800-73 

Reference(s) 1. SP800-73, Table 15 

2. AS05.03

Precondition(s) 1. A valid PIV Card is placed within the reading range of the 

contactless reader 

2. There exists a valid PC/SC connection between the test system

and an instance of the contactless reader 

he reader

4. 

3. No other contactless card is within the proximity of t

The PIV Application is the currently selected application 

Test Scenario 1. Send VERIFY card command with,

 C-7 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• 

• 

e

P2, key reference value is set to either ‘80’ 

Data field of the command will contain the correct 

cardholder PIN value, and padded with ‘FF’ to complet

the total length of the field to 8 bytes

Expected Result(s) 1. The command returns ’6A 81’ (Function not supported) 

Post Condition(s) NA 

C.2.2 CHANGE REFERENCE DATA card command 

C.2.2.1 Contact Interface 

Purpose Validates that the PIV Card executes the CHANGE REFERENCE 

n (PIN)

DATA command for the following conditions: 

1. Without the proper security conditio

2. After the security condition is satisfied 

3. With an incorrect PIN until the retry counter reaches zero 

Reference(s) 1. SP800-73, Section 7.2.2, 

2. AS05.01, AS05.16, AS05.17, AS05.18, AS05.19 

Precondition(s) 1. PIV Application PIN reset retry counter value (maximum 

number of PIN tries allowed) is recorded

pplication PIN is recorded 

tem

2. Card holder PIV Card A

3. A valid PIV Card is inserted into the contact reader 

4. There exists a valid PC/SC connection between the test sys

and an instance of the contact reader 

5. No application is currently connected to the PIV Card 

Application 

Test Scenario 

1. Send SELECT card command with, 

• AID == A0 00 00 03 08 00 00 10 00 01 00 

2. Send CHANGE REFERENCE DATA card command with, 

• P2, key reference value is set to ‘80’

l contain the correct PIN

catenated

w PIN

d be padded with ‘FF’ to

(Thi

supports Global PIN and the expected result should be ’69 

8 ’

Send card command with,

value, is set to a value other than

• Data field of the command will contain the correct PIN 

v

a

p

• Data field of the command wil

value(PIN 1)obtained from the vendor, con

without delimitation with an arbitrary ne

value(PIN 2). Both PINs shoul

complete the total length of the field to 8 bytes

s step could be repeated with P2 = ‘00’ if the card

2 – Security Condition not satisfied).

3. CHANGE REFERENCE DATA

• P2, key reference

what is supported by the card

alue(PIN 2)concatenated without delimitation with an

rbitrary new PIN value(PIN 3). Both PINs should be

added with ‘FF’ to complete the total length of the

field to 8 bytes 

 C-8 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

4. S d

• P

• D

• Data field of the command will contain an incorrect PIN 

value (anything other than PIN 2), concatenated without 

delimitation with an arbitrary new PIN value(PIN 3) 

until after the issuer specified maximum number of 

tes.

en CHANGE REFERENCE DATA card command with,

2, key reference value is set to ‘80’

ata field of the command will contain the correct PIN

value (PIN 2) concatenated without delimitation with an

arbitrary new PIN value(PIN 3). At least one of the 

PINs should be less than 8 bytes 

5. Send CHANGE REFERENCE DATA card command with, 

• P2, key reference value is set to ‘80’

tries are exceeded. Both PINs should be padded with 

‘FF’ to complete the total length of the field to 8 

by

Expected Result(s) 1. Command returns the APT with the status words ’90 00’ at the

2. returns the status words ’90 00’. Validate that the 

3. 

0’.

5. 

mber of further allowed retries) 

end 

Command

existing PIN is changed to PIN 2. Also Verify that the retry 

counter is set to Reset Retry Value 

Command returns ‘6A 88’ 

4. Command returns ‘6A 8

The command returns 

• ‘63 CX’ until the maximum number of tries are reached. (X 

indicates the nu

• ‘69 83’ when the maximum number of tries are exceeded 

Post Condition(s) The card is blocked. 

C.2.2.2 Contactless Interface

Purpose Validates that the PIV Card does not accept the CHANGE 

REFERENCE DATA command through the contactless interface 

Reference(s) 1. SP800-73, Table 15

2. AS05.03 

Precondition(s) 1. A valid PIV Card is placed within the reading range of the 

ts a valid PC/SC connection between the test system

3. s card is within the proximity of the reader

contactless reader 

2. There exis

and an instance of the contactless reader 

No other contactles

Test Scenario 

1. Send SELECT card command with, 

• AID == A0 00 00 03 08 00 00 10 00 01 00 

2. Send CHANGE REFERENCE DATA card command with,

80’

lue(PIN 1) obtained from the vendor, concatenated 

• P2, key reference value is set to ‘

• Data field of the command will contain the correct PIN

va

 C-9 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

without delimitation with an arbitrary new PIN 

value(PIN 2). Both PINs should be padded with ‘FF’ t

complete the total length of the field to 8 bytes 

o

Expected Result(s) 1. 

tatus words ’6A 81’

Command returns the APT with the status words ’90 00’ at the 

end 

2. Command returns the s

Post Condition(s) PIN remains unchanged 

RESET RETRY COUNTER command 

erface

C.2.3 

C.2.3.1 Contact Int

Purpose Val t OUNTER

com a

1. 

2. Afte Card

tor) is satisfied

retry

ida es that the PIV Card executes the RESET RETRY C

m nd for the following conditions: 

Without the security condition satisfied 

r the security condition (authenticating with the PIV

Application Administra

3. With the correct PIN not formatted per SP800-73 

4. With an incorrect PIN (formatted correctly) until the

counter reaches zero 

Reference(s) 1. SP800-73, Section 7.2.3 

2. AS05.01, AS05.20, AS05.21, AS05.22, AS05.23, AS05.24 

Precondition(s) 1. ication PIN reset retry counter value (maximum 

number of PIN tries allowed) is recorded 

PIV Appl

2. There exists a valid physical connection between an instance

the PIV Card and the host of the calling application and PIV c

ntly selected appl

of

ard

ication.

3. 

application PIN is as stated by the vendor/issuer 

4. 

application is the curre

The initial value of the retry counter associated with the PIV Card 

The value of the counter reference data (PUK) is as stated by the

vendor/issuer 

Test Scenario 1. Sen

what is supported by the card 

UK

N and

‘FF’ to complete the total length of

3. p

4

d SELECT card command with,

• AID == A0 00 00 03 08 00 00 10 00 01 00 

2. Send RESET RETRY COUNTER with, 

• P2, key reference value, is set to a value other than 

• Data field of the command contains the correct P

concatenated without delimitation with the new PI

each padded with

the field to 8 bytes 

Re eat Step 2 with,

• P2, key reference value is set to ‘80’ 

• Data field of the command contains the PUK value 

concatenated with the new PIN value , and at least one 

of the two values is not padded to complete 8 bytes 

. Repeat step 2 with:

 C-10 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• P2, key reference value is set to ‘80’

command contains the correct PUK

(This step could be repeated with P2 = ‘00’ if the card 

u

6

5

• Data field of the

concatenated without delimitation with the new PIN and

each padded with ‘FF’ to complete the total length of

the field to 8 bytes 

s pports Global PIN and the expected result should be

’ 9 82’ – security condition not satisfied).

. Repeat step 2 with

• P2, key reference value is set to ‘80’

• Data field of the command containing an incorrect PUK

value concatenated with a new PIN value. This 

operation is repeated until the number of resets

allowed is exceeded. 

Expected Result(s) 1. o

d

2 The (key reference not found)

3

4 . Validate that the existing PIN is 

changed to new PIN (say PIN 2). Also Verify that the retry 

cou e

5. The o

• 3

NOTE e ble in some

implem n

associa d

C ords ’90 00’ at the

en

command returns ‘6A 88’

mmand returns the APT with the status w

.

. The command returns ‘ ‘6A 80’ (incorrect parameter in command 

data field) 

. The command returns ’90 00’

nt r is set to Reset Retry Value

c mmand returns

’6 CX’ , (X==number of resets left) 

• ’69 83’ – when the command is invoked after the value of X 

becomes zero. 

: T sting this condition may leave the card unusa

e tations for all operations related to the key reference

te with this reset counter. 

Post Condition(s) 1. No fu

possib

rther resets of reference data associated with key reference

le.

C.2.3.2 Contactless Interface

Purpose Validates that the RESET RETRY COUNTER command cannot be

issued through the contactless interface

Reference(s) 1. SP800-73, Table 15 

2. AS05.03 

Precondition(s) 1. A valid PIV Card is placed within the reading range of the 

con c

ader

ta tless reader

2. There exists a valid PC/SC connection between the test system 

and an instance of the contactless reader

3. No other contactless card is within the proximity of the re

Test Scenario 

1. Repeat steps 1 and 4 of test C.2.3.1 

Expected Result(s) 1. Command returns the APT with the status words ’90 00’ at the 

end 

 C-11 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

2. The command returns ‘6A 81’ (Function not supported) 

Post Condition(s) 1. Reference data associated with key reference is not changed. 

Retry counter value associated with the key reference is not reset. 

The Reset counter value is unchanged. 

C.2.4 GENERAL AU

C.2.3.3 C.2.4.1 Contac

THENTICATE command

t Interface

Purpose Validates the authentication of the following entities using the 

GENERAL AUTHENTICATE command: 

1. PIV Card Application to Test Toolkit Application 

(INTERNAL AUTHENTICATE)

ication (MUTUAL AUTHENTICATE)

2. Two way authentication of PIV Card Application and Test 

Toolkit Appl

Reference(s) 1. SP800-73, Section 7.2.4 

2. AS05.01, AS03.02, AS03.07, AS05.25, AS0526, AS05.27 

Precondition(s) 1. A valid PIV Card is inserted into the contact reader

. There exists a valid PC/SC connection between the test system 

. The PIV Card Application is the currently selected application on 

rted by the card is obtained 

satisfied

2

and an instance of the contact reader 

3

the card 

4. The length of the challenge suppo

5. The PIN security condition is

Test Scenario 1. (Internal Authenticate using an asymmetric key)Send

command

CLA is set to 00 

P1, algorithm reference, is set to ‘06’ identifying the 

RSA algorithm identifier

the command is to include ‘81’ specifying

llowed by a randomly generated challenge

llowing two test invocations are to be performed

key

‘9B

‘81’ specifying

3a. (External Authenticate using a symmetric key) Send 

GENERAL AUTHENTICATE card

• 

• 

1024 bits

• P2, key reference, is set to ‘9A’ indicating the PIV

Authentication Key 

• Data field in

a challenge, fo

NOTE: The fo

only if the PIV Card Application supports the use of the

’.

2. (Internal Authenticate using a symmetric key) Send 

GENERAL AUTHENTICATE card command 

• CLA is set to 00 

• P1, algorithm reference, is set to ‘00’ (3 key Triple 

DES – ECB). 

• P2, key reference, is set to ‘9B’ indicating the PIV 

Card Application Administration Key

• Data field in the command is to include

a challenge, followed by a randomly generated challenge

 C-12 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

GENERAL AUTHENTICATE card command

• CLA is set to 00 

(3 key Triple

2, key reference, is set to ‘9B’ indicating the PIV

eld in the command is to include ‘81’ followed

command

’ (3 key Triple

is set to ‘9B’ indicating the PIV

on Administration Key

’ followed

key reference, is set to ‘9B’

eference is set to ‘00’

• P2, key reference is set to ‘9B’ 

s to include ‘80’

the encrypted nonce sent

5. p

ence is set to ‘03’

nce is set to ‘9B’

(If h

fol w

6. p

invalid value of algorithm reference

(P1 a

8. Repeat Step 1 with an invalid value in Data field 

(im o

dition in the Pre-condition is

• P1, algorithm reference, is set to ‘00’

DES – ECB). 

• P

Card Application Administration Key 

• Data fi

by 00 indicating it is a request for challenge.

3b. (Continue ..External Authenticate using a symmetric 

key) Send GENERAL AUTHENTICATE card

• CLA is set to 00 

• P1, algorithm reference, is set to ‘00

DES – ECB). 

• P2, key reference,

Card Applicati

• Data field in the command is to include ‘82

by encrypted challenge. 

4a.(Mutual Authenticate using a Symmetric key)Send GENERAL 

AUTHENTICATE card command 

• CLA is set to 00 

• P1, algorithm reference, is set to ‘00’ 

• P2,

• Data field in the command is to include ‘80’ 

requesting a witness from the PIV Card application.

4b. (Mutual Authenticate using a Symmetric key)Send GENERAL

AUTHENTICATE card command 

• P1, algorithm r

• Data field in the command i

followed by decryption of

by the card application and ‘81’ followed by another

nonce. 

Re eat Steps 2,3 and 4 with:

• P1, algorithm refer

• P2, key refere

t e card supports algorithm code ‘04’ perform the

lo ing test)

Re eat Steps 2,3 and 4 with:

• P1, algorithm reference is set to ‘04’ 

• P2, key reference is set to ‘9B’ 

7. Repeat Step 1 with an

) nd/or key reference (P2).

pr per challenge length for the chosen algorithm)

9. The PIN Security con

 C-13 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

annulled (by performing VERIFY with a wrong PIN) and repeat 

Step 1.

Expected Result(s) 1. The

n

3a. e ’

3b. h

nonce sent by PIV Card applicatio

4a.

follow

4b. onds

wit e

5. S

6. m

9. T

command returns the encrypted challenge with ’90 00’ at the 

end. Decrypt the encrypted challenge and compare it to the one

se t to the card

2. The command returns the encrypted challenge with ’90 00’ at the 

end. Decrypt the encrypted challenge and compare it to the one 

sent to the card 

Th PIV card application returns a nonce followed by ’90 00

T e Test Toolkit application responds with encryption of the

n and the card returns ’90 00’ 

The PIV card application returns with the encryption of a nonce 

ed by ’90 00’

The PIV card application verifies the witness and then resp

h ncryption of the nonce sent by test toolkit application followed

by ’90 00’ 

ame sequence of responses as in test cases 2, 3 and 4. 

Sa e sequence of responses as in test cases 2,3 and 4. 

7. The command returns ‘6A 86’ 

8. The command returns ‘6A 80’ 

he command returns ’69 82’

Post Condition(s) N/A 

C.2.3.4 C.2.4.2 Contactless Interface

Purpose Validates the mutual authentication between a PIV Card and Test 

Toolkit Application 

Reference(s) 1. 

2. S

SP800-73, Table 15

A 05.03

Precondition(s) 1. 

con

There exists a valid PC/SC connection between the test system 

ontactless reader

3. rd is within the proximity of the reader

A valid PIV Card is placed within the reading range of the 

tactless reader

2.

and an instance of the c

No other contactless ca

Test Scenario NOTE: The following tests are to be performed only if the PIV 

Card Application supports the use of the key ‘9B’. 

1. Perform steps 1 through 6 of C.2.4.1

Expected Result(s) 1. The step 1 referred above should return ’69 82’ 

2. Steps 2 through 6 referred above should return the same codes as 

in C.2.4.1 

 C-14 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Post Condition(s) N/A 

C.3 Card Comman dministration 

C.3.1 PUT DATA Co

n

ds for Credential Initialization and A

mmand

C.3.1.1 C.3.1.1 Co tact Interface

Purpose Va te

behavior under the following conditions: 

lidates that the PUT DATA command exhibits the appropria

1. Without the security condition is satisfied 

2. After the security condition is satisfied 

Reference(s) 1. SP800-73, Section 7.3.1

2. AS05.01, AS05.28 

Precondition(s) 1. nserted into the contact reader

and an instance of the contact reader 

3. The PIV Card Application is the currently selected application on

the card 

pplication Administrator has not been

A valid PIV Card is i

2. There exists a valid PC/SC connection between the test system 

4. The PIV Card A

authenticated 

Test Scenario NOTE: The following tests (1 through 10) are run based on th

assumption that the PI

e

V Card Application either does not

enced by ‘9B’ or external authentication

ication and the test toolkit application

b of C.2.4.1

1. d command with, 

clude the tag of the

s to include the tag of the

eld in the command is to include the data

that will replace the CHUID

nclude the tag of the

ject

tication Certificate

support the key refer

of the PIV Card Appl

has not been performed using steps 3a and 3

(GENERAL AUTHENTICATE) 

Send PUT DATA car

• CLA is set to 00 

• Data field in the command is to in

Card Capability Container object 

• Data field in the command is to include the data that

will replace the CCC

2. Repeat step 1 with 

• CLA is set to 00 

• Data field in the command i

CHUID object 

• Data fi

content

3. Repeat step 1 with 

• CLA is set to 00 

• Data field in the command is to i

PIV Authentication Certificate ob

• Data field in the command is to include data content

that will replace the PIV Authen

4. Repeat step 1 with 

 C-15 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

• CLA is set to 00 

• Data field in the command is to include the tag of the

5. If the card supports the Printed Information, repeat step 

he

at

the

g of the

l

pports the certificate for Key Management,

certificate for Card

e

field in the command is to include the data

rity Object

t will replace the Security Object

Card Holder Fingerprint I object 

• Data field in the command is to include data content

that will replace the Card Holder Fingerprint I

1 with 

• Data field in the command is to include the tag of t

Printed Information object 

• Data field in the command is to include the data 

content that will replace the Printed Information 

6. If the card supports the Card Holder Facial Image, repe

step 1 with

• Data field in the command is to include the tag of

Card Holder Facial Image object

• Data field in the command is to include the data 

content that will replace the Card Holder Facial Image 

7. If the card supports the certificate for Digital 

Signature, repeat step 1 with 

• Data field in the command is to include the ta

certificate for Digital Signature object 

• Data field in the command is to include the data 

content that will replace the certificate for Digita

Signature 

8. If the card su

repeat step 1 with 

• Data field in the command is to include the tag of the 

certificate for Key Management object

• Data field in the command is to include the data 

content that will replace the certificate for Key 

Management 

9. If the card supports the

Authentication, repeat step 1 with 

• Data field in the command is to include the tag of th

certificate for Card Authentication object 

• Data

content that will replace the certificate for Card 

Authentication 

10. Repeat step 1 with 

• CLA is set to 00 

• Data field in the command is to include the tag of the

Secu

• Data field in the command is to include the data 

content tha

NOTE: The following tests are to be performed only if the PIV

Card Application supports the use of the key ‘9B’. 

 C-16 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

11. Perform external authentication of PIV Card Application

application using steps 3a and 3b of

ENTICATE)

y

ata

and the test toolkit

C.2.4.1 (GENERAL AUTH

12. Repeat steps 1-10 with GET DATA command immediatel

following each PUT DATA and verifying whether the same d

that is input is returned. 

Expected Result(s) 1. 10, commands return ’69 82’, (security status

ults under test

In Steps 1 through

not satisfied) and the contents of the data objects remained 

unchanged 

2. The two test invocations referred to in Step 11 should return the

same responses as 3a and 3b of Expected Res

C.2.4.1 

3. In step 12, all commands return ’90 00’, and input and output 

data strings match. 

Post Condition(s) 1. The contents of each object has been overwritten with the new 

values provided in step 12. 

C.3.1.2 

C.3.1.3 C.3.1.2 Contactless Interface 

Purpose Validates that the PUT DATA command cannot be issued through 

the contactless interface 

Reference(s) 1. SP800-73, Table 15 

2. AS05.03 

Precondition(s) 1. Record the existing values of all data objects 

2. A valid PIV Card is placed within the reading range of the 

contactless reader 

3. There exists a valid PC/SC connection between the test system 

and an instance of the contactless reader 

4. No other contactless card is within the proximity of the reader 

Test Scenario 1. Repeat step 2 of 3.1.1 

Expected Result(s) 1. The commands return ’6A 81’ – Function not supported 

Post Condition(s) 1. The data container values remain unchanged 

C.3.2 GENERATE ASYMMETRIC KEY PAIR command 

C.3.1.4 C.3.2.1 Contact Interface 

Purpose Validates that the card executes the GENERATE ASYMMETRIC 

KEY PAIR command for the following conditions: 

1. Without the security condition satisfied 

2. After the security condition (authenticating with the PIV Card 

Application Administrator) is satisfied 

Reference(s) 1. SP800-73, Section 7.3.2 

 C-17 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

2. AS05.01, AS05.29, AS05.30, AS05.31

Precondition(s) 1. A valid PIV Card is inserted into the contact reader 

n

2. There exists a valid PC/SC connection between the test system 

and an instance of the contact reader 

3. The PIV Card Application is the currently selected application o

the card 

4. The length of the challenge supported by the card is obtained 

Test Scenario NOTE: The following test ( # 1) is run based on the 

assumption that the PIV Card Application either does not 

support the key ‘9B’ or external authentication of the PIV 

Card Application and the test toolkit application has not 

been performed using steps 3a and 3b of C.2.4.1 (GENERAL 

AUTHENTICATE) 

1. Send GENERATE ASYMMETRIC KEY PAIR card command with, 

• P2 is set to value ‘9A’ 

• Data field in the command is to include the ‘06’ as the 

Cryptographic Mechanism Identifier 

NOTE: The following tests are to be performed only if the PIV 

Card Application supports the use of the key ‘9B’. 

2. Perform external authentication of PIV Card Application 

and the test toolkit application using steps 3a and 3b of 

C.2.4.1 (GENERAL AUTHENTICATE) 

3. Repeat Step 1 

4. Repeat Step 1 with the “Cryptographic Mechanism 

Identifier” value in the data field is set to a value that is 

not supported by the card. 

5. Repeat Step 1 with P2 set to a key reference value that is 

not supported by the card or does not match up with the 

cryptographic algorithm specified in the data field. 

Expected Result(s) 1. Command returns ’69 82’ 

2. The two test invocations referred to in Step 2 should return the 

same responses as 3a and 3b of Expected Results under test 

C.2.4.1 

3. Command returns the data object consisting of the public key of 

the generated key pair followed by ’90 00’. 

4. Command returns ‘6A 80’ 

5. Command returns ‘6A 86’ 

Post Condition(s) 1. The contents of the public key object are updated with the new 

values 

C.3.1.5 C.3.2.2 Contactless Interface 

Purpose Validates that the GENERATE ASYMMETRIC KEY PAIR command 

cannot be issued through the contactless interface with or without 

 C-18 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

authenticating with the PIV Card Application Administrator 

Reference(s) 1. SP800-73, Table 15 

2. AS05.03 

Precondition(s) 1. Record the existing contents of the public key data object

Card is placed within the reading range of the 

3. There exists a valid PC/SC connection between the test system 

and an instance of the contactless reader 

4. No oth is e pro ty of the reader

2. A valid PIV

contactless reader 

er contactless card within th ximi

Test Scenario 1. Perform steps 2 and 3 of test C.3.2.1

Expected Result(s) 1. Step2 referred above is successful for but for step 3, the 

Command returns ’6A 81’

Post Condition(s) 1. Validate the contents of the public key object by GET DATA 

to make sure the value remained unchange and no

tric key pair is generated 

command

new asymm

d

e

 C-19 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Appendix D—Test Reports

Following repare a summary report to document and 

ica ew report shall be k pt for

para t. Each test report shall be signed and ated by

r, t nel when needed, and

ny utcome of the test. Te plates 

ide f information to be included in the 

rts. A the quantity of information contained may vary among 

execution of each test class, test labs will p

commun te the result of all test cases belonging to that class. A n e

each se te run against the same unit under tes d

the teste

accompa

he lab representative and the authorized NIST person

a cover letter to be sent to the vendor to inform the o m

are prov d below as samples and demonstrate the type o

repo ctual format of the report and

labs. 

 D-1 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

D.1 PIV Client API Test Results Summary

ort

esultsSummary.htm

html rep C:\Program Files\PIV Test 

Runner\.\api_tests\reports\DataObjectsRepresentationR l

PDF report Runner\.\api_tests\reports\DataObjectsRepresentationResultsSummary.pdf

C:\Program Files\PIV Test 

Test Run No Test Time Test Date 

 Name/Description Version Date 

Implementation Under Test (IUT) 

Test Case Test Description Result

B.1 Connection Test Assertions 

B.1.1 Valid Path Test Assertions 

B.1.1.1 Initiate Exclusive Connection 

B.1.1.2 Initiate Shared Connection 

B.1.2 Test Assertions for Error Conditions 

B.1.2.1 Malformed Connection Description 

B.1.2.1.1 Malformed connectionDescription - Shared connection true

B.1.2.1.2 Malformed connectionDescription - Shared connection false

B.1.2.2 Attempting to Share/Lock an Exclusive Connection 

B.1.2.2.1 Sharing an Exclusive Connection 

B.1.2.2.2 Locking an Exclusive Connection 

B.1.2.3 Attempting to Lock a Shared Connection 

B.1.2.4 Attempting to Open an Unsupported Connection 

B.1.2.4.1 Attempting to Open an Unsupported Connection - Shared connection true 

B.1.2.4.2 Attempting to Open an Unsupported Connection - Shared connection false 

B.2 Disconnection Test Assertions 

B.2.1 Valid Test Assertions 

B.2.1.1 Disconnect an Exclusive Connection 

B.2.1.2 Disconnect a Shared Connection 

B.2.2 Test Assertions for Error Cases 

B.2.2.1 Attempt Disconnect with Invalid Card Handle 

B.2.2.2 Disconnecting a previously disconnected Client Application

B.3 pivSelectCardApplication

B.3.1 Valid Test Assertions

 D-2 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test Case Test Description Result

B.3.1.1 Select a Card Application with a full AID 

B.3.1.2 Use a right truncated AID to Select a Card Application 

B.3.2 Test Assertions for Error Conditions 

B.3.2.1 Detect and handle an invalid cardHandle reference. 

B.3.2.2 Detect and handle an invalid applicationAID. 

B.4 pivLogIntoCardApplication 

B.4.1 Valid Test Assertions 

B.4.1.1 Log on to the Card Application 

B.4.2 Test Assertions for Error Conditions 

B.4.2.1 Attempt Logon without an invalid cardHandle. 

B.4.2.2 Attempt Logon with a malformed authenticator. 

B.4.2.3 Attempt Logon with invalid authenticator 

B.5 pivLogoutOfCardApplication 

B.5.1 Valid Test Assertions 

B.5.1.1 Log out of the Card Application 

B.5.1.2 Log out of after failed pivSelectCardApplication 

B.5.2 Test Assertions for Error Conditions 

B.5.2.1 Attempt Log out with Invalid Cardhandle 

B.6 pivGetData 

B.6.1 Valid Test Assertions 

B.6.1.1 Read an object on the card through the client application 

B.6.1.1.1 CCC –without logging in 

B.6.1.1.2 CHUID –without logging in 

B.6.1.1.3 X509 Certificate PIV Authentication –without logging in 

B.6.1.1.4 Security Object –without logging in 

B.6.1.1.5 X509 Certificate Card Authentication –without logging in

B.6.1.1.6 X509 Certificate Digital Signature –without logging in

B.6.1.1.7 X509 Certificate Key Management –without logging in 

B.6.1.2 Satisfying Security Conditions enables read of the objects 

B.6.1.2.1 Card Holder Fingerprint – after logging in 

B.6.1.2.2 Card Holder Facial Image – after logging in 

B.6.1.2.3 Printed Information – after logging in 

B.6.2 Test Assertions for Error Conditions 

B.6.2.1 Handle an invalid cardHandle 

 D-3 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test Case Test Description Result

B.6.2.2 Handle an invalid Object Identifier 

B.6.2.3 The Client Application can handle missing data object 

B.6.2.4 Security Conditions are enforced for Secured Objects 

B.6.2.4.1 Card Holder Fingerprint – without logging in 

B.6.2.4.2 Card Holder Facial Image – without logging in 

B.6.2.4.3 Printed Information – without logging in

B.7 pivPutData 

B.7.1 Valid Test Assertions 

B.7.1.1 Write data to an object on the card through the client application 

B.7.1.1.1 CCC – after logging in 

B.7.1.1.2 CHUID – after logging in 

B.7.1.1.3 X509 Certificate PIV Authentication – after logging in 

B.7.1.1.4 Card Holder Fingerprint – after logging in 

B.7.1.1.5 Security Object – after logging in 

B.7.1.1.6 X509 Certificate Card Authentication – after logging in 

B.7.1.1.7 X509 Certificate Digital Signature – after logging in 

B.7.1.1.8 Card Holder Facial Image – after logging in 

B.7.1.1.9 X509 Certificate Key Management – after logging in 

B.7.1.1.10 Printed Information – after logging in

B.7.2 Test Assertions for Error Conditions 

B.7.2.1 Identify and handle an invalid card handle 

B.7.2.2 Identify and handle an invalid Object Identifier (OID) 

B.7.2.3 Security Conditions are enforced for Secured Objects 

B.7.2.3.1 CCC – without logging in 

B.7.2.3.2 CHUID – without logging in 

B.7.2.3.3 X509 Certificate PIV Authentication – without logging in 

B.7.2.3.4 Fingerprint – without logging in 

B.7.2.3.5 Security Object – without logging in 

B.7.2.3.6 X509 Certificate Card Authentication – without logging in

B.7.2.3.7 X509 Certificate Digital Signature – without logging in 

B.7.2.3.8 Facial Image – without logging in

B.7.2.3.9 X509 Certificate Key Management – without logging in 

B.7.2.3.10 Printed Information – without logging in

B.8 pivGenerateKeyPair 

 D-4 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test Case Test Description Result

B.8.1 Valid Test Assertions 

B.8.1.1 Generate an asymmetric key pair 

B.8.2 Test Assertions for Error Conditions 

B.8.2.1 Identify and handle an invalid card handle 

B.8.2.2 Identify and handle an invalid keyReference 

B.8.2.3 Identify and handle an invalid cryptographicMechanism 

B.8.2.4 Security Conditions Not Satisfied 

B.9 pivCrypt 

B.9.1 Valid Test Assertions 

B.9.1.1 AuthKey(9A) RSA_1024(06) -Internal Authenticate 

B.9.1.2 AdminKey(9B) Default Algorithm(00) - External Authenticate 

B.9.1.3 AdminKey(9B) Default Algorithm(00) - Mutual Authenticate 

B.9.2 Test Assertions for Error Conditions 

B.9.2.1 Identify and handle invalid card handles 

B.9.2.2 Identify and handle invalid key references 

B.9.2.3 Identify and handle invalid input data 

B.9.2.4 Security conditions not satisfied 

D.2 Card Command Interface Test Results Summary 

html

report CommandInterfaceTestResultsSumm y.html

C:\Program Files\PIV Test 

Runner\.\reports\Card ar

PDF

report y.pdf 

C:\Program Files\PIV Test 

Runner\.\reports\CardCommandInterfaceTestResultsSummar

Test 

Run No Test Time Test Date 

 Name/Description Version Date 

Implemen

T) tation Under Test(IU 

Te

Case 

st Test Description Result

C.1 Card Commands for Data Access 

C.1.1 SELECT Card Command 

 D-5 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test 

Case Test Description Result 

C.1.1.1 Contact Interface 

 Long AID -Success 

 Short AID - Success 

 Invalid AID 

C.1.1.2 Contactless Interface 

 Long AID - Success 

 Short AID 

 Invalid AID 

C.1.2 GET DATA card command 

C.1.2.1 Contact Interface 

NO PIN 

 CCC - no pin 

 CHUID - no pin 

 PIV Authentication - no pin 

 Fingerprint 1 - no pin 

 Printed Information - no pin 

 Facial Image - no pin 

 Digital Signature - no pin

 Key Management - no pin 

 Card Authentication - no pin 

 Security - no pin 

WITH PIN 

 Fingerprint - pin 

 Printed Information - pin 

 Facial Image - pin 

 Unknown Object - Data Object Not Found 

C.1.2.2 Contactless Interface 

NO PIN 

 CCC - no pin 

 CHUID - no pin 

 PIV Authentication - no pin 

 Fingerprint - no pin 

 Printed Information - no pin 

 D-6 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test 

Case Test Description Result 

 Facial Image - no pin 

 Digital Signature - no pin 

 Key Management - no pin 

 Card Authentication - no pin 

 Security Object - no pin 

 Unknown Object - Data Object Not Found 

C.2 Commands For Authentication 

C.2.1 VERIFY Card Command 

C.2.1.1 Contact Interface 

 Valid PIN with invalid key reference - Key Reference Not 

Found 

Valid PIN - Success 

 PIN with invalid format - Incorrect Param Data 

C.2.1.2 Contactless Interface 

 Valid PIN - Function Not Supported 

C.2.2 CHANGE REFERENCE DATA card command 

C.2.2.1 Contact Interface 

 Valid PIN - Success 

 Valid PIN with invalid key reference - Key Reference Not 

Found 

 PIN with invalid format - Incorrect Param Data 

C.2.2.2 Contactless Interface 

 Valid PIN - Function Not Supported

C.2.3 RESET RETRY COUNTER command 

C.2.3.1 Contact Interface 

 Invalid Key Reference, valid PIN and valid PUK - Key 

Reference Not Found

 Valid PIN with invalid format - Incorrect Param Data 

 Valid PIN and PUK combination - Success 

C.2.3.2 Contactless Interface 

 Valid PIN and PUK combination - Function Not 

Supported 

C.2.4 GENERAL AUTHENTICATE command 

C.2.4.1 Contact Interface 

 D-7 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test 

Case Test Description Result 

 Authentication Key(9A), RSA_1024(06), Internal 

Authenticate - Success 

 Invalid key reference or algorithm - Incorrect Param P1 P2 

 Invalid data in the data field - Incorrect Param Data 

 Authentication Key(9A), RSA_1024(06), Internal 

Authenticate - Security Status Not Satisfied 

 Admin Key(9B), DES3_ECB(03), internal authenticate - 

Success 

 Admin Key(9B), DES3_ECB(03), external authenticate -

Success 

 Admin Key(9B), DES3_ECB(03), mutual authenticate - 

Success 

 Admin Key(9B), DES3_CBC(04), internal authenticate - 

Success 

 Admin Key(9B), DES3_CBC(04), external authenticate - 

Success 

 Admin Key(9B), DES3_CBC(04), mutual authenticate - 

Success 

 Admin Key(9B), Default Algorithm(00), internal 

authenticate - Success 

 Admin Key(9B), Default Algorithm(00), external 

authenticate - Success 

 Admin Key(9B), Default Algorithm(00), mutual 

authenticate - Success 

C.2.4.2 Contactless Interface 

 Authentication Key(9A), RSA_1024(06), Internal 

Authenticate - Security Status Not Satisfied 

 Admin Key(9B), DES3_ECB(03), internal authenticate -

Success 

 Admin Key(9B), DES3_ECB(03), external authenticate -

Success 

 Admin Key(9B), DES3_ECB(03), mutual authenticate - 

Success 

 Admin Key(9B), DES3_CBC(04), internal authenticate -

Success 

 Admin Key(9B), DES3_CBC(04), external authenticate - 

Success 

 D-8 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test 

Case Test Description Result 

 Admin Key(9B), DES3_CBC(04), mutual authenticate -

Success 

 Admin Key(9B), Default Algorithm(00), internal 

authenticate - Success 

 Admin Key(9B), Default Algorithm(00), external 

authenticate - Success 

 Admin Key(9B), Default Algorithm(00), mutual 

authenticate - Success 

C.3 Card Commands for Credential Initialization and 

Administration 

C.3.1 PUT DATA Command 

C.3.1.1 Contact Interface 

Without authenticating the card application administrator 

 CCC - no authentication - Security Status Not Satisfied 

 CHUID - no authentication - Security Status Not Satisfied 

 PIV Authentication - no authentication - Security Status 

Not Satisfied

Fingerprint - no authentication - Security Status Not 

Satisfied 

 Printed Information - no authentication - Security Status

Not Satisfied

 Facial Image - no authentication - Security Status Not

Satisfied 

 Digital Signature - no authentication - Security Status Not

Satisfied 

 Key Management - no authentication - Security Status Not

Satisfied 

 Card Authentication - no authentication - Security Status

Not Satisfied

 Security Object - no authentication - Security Status Not

Satisfied 

C.3.1.2 Contactless Interface 

Without authenticating the card application administrator 

 CHUID - no authentication - Function Not Supported 

C.3.2 GENERATE ASYMMETRIC KEY PAIR command 

C.3.2.1 Contact Interface 

 D-9 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test

Case Test Description Result 

 Security Status Not Satisfied 

 Auth Key, RSA_1024, Success 

 Incorrect Param Data 

 Incorrect Param P2 

C.3.2.2 Contactless Interface 

 Function Not Supported 

C.4 CHECK tests6 

C.4.1 Additional General Authenticate Tests 

C.4.1.1 Contact Interface 

All additional tests successful 

C.4.2 Additional Generate Key Pair Tests 

C.4.2.1 Contact Interface 

 All additional tests successful 

C.4.3 Checking Put Data for Correct Storage 

C.4.3.1 Contact Interface 

 CCC 

 CHUID 

 X509 Certificate PIV Authentication 

 Card Holder Fingerprint 1 

 Printed Information 

 Card Holder Facial Image 

 X509 Certificate Digital Signature 

 X509 Certificate Key Management 

 X509 Certificate Card Authentication 

 Security Object 

C.4.4 Checking Application Property Template & Currently 

Selected Application 

C.4.4.1 Contact Interface 

 Application Property Template in Correct Format + 

Currently Selected Application is same 

C.4.5 Checking Retry Counter Auto Resets 

C.4.5.1 Contact Interface 

 

6

 Tests under this sub-section are verification of post-conditions and state variables for test scenarios already 

described in Section C.1 through C.3. 

 D-10 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Test Test Description Case Result 

 Successful Verify command resets the retry counter 

 Successful Change Reference Data command resets the 

retry counter 

Successful Reset Retry Counter command resets the retry

counter

C.4.6 Checking Retry Counter Countdown and Eventual

Authentication Block 

C.4.6.1 Contact Interface 

Verify apdu 

 Change Reference Data apdu 

Reset Retry Counter apdu 

C.4.7 Checking Change Reference Data Post-Condition 

C.4.7.1 Contact Interface 

 PIN successfully changed 

C.4.8 Checking Reset Retry Counter Post-Condition 

C.4.8.1 Contact Interface 

PIN successfully changed 

D.3 Test Discrepancy Report 

Test Case Information

Name/Description Number 

Conductor Test Run 

Implementation Under Test

(IUT) 

Version 

Test Date Time

Type of Test o Client API o Card Command o Data Object 

Test Result o PASS o FAIL 

Test Details

Command / Function name

Test Step No

Expected Result

 D-11 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Outcome 

Reason for Discrepancy

Corrective steps 

Comments

 D-12 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Appendix E—DTRs to Test Assertion Mapping 

T g t en the n

Appendix A (th nd

Appendix C. 

he followin able provides an associtation betwe

ose that can be electronically tested) a

Required Test Procedures in DTRs i

the test assertions in Appendix B and 

DTR from 

Appendix A 

Test Scenario from Appendix B or C DTR Description 

TE01.08.01 The tester shall validate that there is a 

default selected card application which is

the one specified by the vendor in 

VE01.08.01 

C.1.1.1 Test Scenario #1

TE02.03.01 Collectively by all tests in C.1.2 (Get Data) 

and C.3.1 (Put Data) 

TE03.01.01 The tester shall validate the presence of all 

the mandatory and optional algorithm 

identifiers (if implemented) on the vendor 

documentation and the card, and that they 

Collectively by all tests in C.2.4 (General 

Authenticate) and C.3.2 (Generate 

Asymmetric Key Pair) 

comply with Table 7 of SP 800-73 

TE03.02.01 

cryptographic algorithm is the 3 Key Triple 

DES-ECB with the identifier ’00.’ 

C.2.4.1 Test Scenarios #8,9,10 - General 

Authenticate card command - contact 

interface 

The tester shall validate that the default

TE03.03.02 The tester shall validate that the 

information provided in VE03.03.01, is 

actually implemented by the card. 

C.1.1.1 Test Scenario #2

TE03.04.02 

without an invalid 

d 

authenticator.

The tester shall validate that the card 

returns the correct tags and values in the 

n

B.4.1.1 Log on to the Card Application

B.4.2.1 Attempt Logon 

cardHandle 

B.4.2.2 Attempt Logon with a malforme

authenticator data object as specified i

Table A-5. 

TE03.05.01 B.1.1.1 Initiate Standalone Connection

B.1.1.2 Initiate Shared Connection 

B.3.1.1 Select a Card Application with a

full AID 

B.4.1.1 Log on to the Card Application

Client Application data object 

B.7.1.1 Write data to an object on the 

Client Application 

B.8.1.1 Generate an asymmetric key pair 

ce of

B.5.1.1 Log out of the Card Application

B.6.1.1 Get a reference to data on a 

B.9.1.1 Encrypt a sequence of bytes 

The tester shall validate the presen

the information provided in VE03.05.01 and

that the Connection Description Template 

sent to the card conforms to Table A-6. 

TE03.09.01 C.1.2 Get Data card command contact 

interface 

C.2.1 Verify card command contact 

interface 

C.2.2 Change Reference Data card 

command contact interface 

l 

e 

set.

The tester shall select the PIV Card 

Application and attempt to change globa

PIN and validate that the global PIN valu

did not change and that its retry counter 

was not re

 E-1 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

DTR from 

Appendix A 

Test Scenario from Appendix B or C DTR Description 

TE04.02.01 B.1.1.1 Initiate Standalone Connection

B.1.1.2 Initiate Shared Connection 

B.1.2.1 Malformed Connection 

Description 

B.1.2.2 Sharing a Locked Connection 

B.1.2.3 Attempting to Lock a Shared 

n

nsupported Connection 

as

The tester shall validate that the client 

application implements the pivConnect

per SP800-73. 

Connection

B.1.2.4 Attempting to Open a

U

TE04.03.01 B.2.1.1 Disconnect a Standalone 

Connection

on 

ient 

physically disconnected 

Card Application 

B.2.2.2 Attempt Disconnect with Invalid 

Card Handle

implements the pivDisconnect 

B.2.1.2 Disconnect a Shared Connecti

B.2.2.1 Logically disconnecting a Cl

Application from a

The tester shall validate that the client 

application

as per SP800-73. 

TE04.04.01 B.3.1.1 Select a Card Application with a

full AID 

B.3.1.2 Use a right truncated AID to 

ce 

B.3.2.2 Detect and handle an invalid 

applicationAID

SP800-73. 

The tester shall validate that the client 

application implements the 

pivSelectCardApplication as per

Select a Card Application 

B.3.2.1 Detect and handle an invalid 

cardHandle referen

TE04.05.01 B.4.1.1 Log on to the Card Application

B.4.2.1 Attempt Logon without an invalid 

cardHandle 

d 

ttempt Logon with invalid 

authenticator 

P800-

The tester shall validate that the client 

application implements the 

pivLogIntoCardApplication as per S

B.4.2.2 Attempt Logon with a malforme

authenticator 

B.4.2.3 A

73. 

TE04.06.01 B.6.1.1 Get a reference to data on a 

Client Application data object 

B.6.2.1 Handle an invalid cardHandle 

r

le 

B.6.2.4 Security Conditions are enforced

for Secured Objects 

B.6.2.2 Handle an invalid Object Identifie

B.6.2.3 The Client Application can hand

missing data object 

The tester shall validate that the client 

application implements the pivGetData as

per SP800-73. 

TE04.07.01 B.5.1.1 Log out of the Card Application

B.5.2.1 Attempt Log out with Invalid

Cardhandle 

The tester shall validate that the client 

application implements the 

pivLogoutOfCardApplication as per SP800-

73. 

 E-2 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

DTR from 

Appendix A 

Test Scenario from Appendix B or C DTR Description 

TE04.08.01 B.9.1.1 Encrypt a sequence of bytes 

B.9.2.1 Identify and handle invalid card

handles 

B.9.2.2 Identify and handle invalid key 

valid input

data 

B.9.2.4 Identify and handle invalid key 

Reference/algorithm Identifier 

combinations

references

B.9.2.3 Identify and handle in

 The tester shall validate that the client 

application implements the pivCrypt as per 

SP800-73. 

TE04.09.01 t on the

Client Application 

B.7.2.1 Identify and handle an invalid 

card handle 

B.7.2.2 Identify and handle an invalid 

ta object 

as

B.7.1.1 Write data to an objec

Object Identifier (OID) 

B.7.2.3 Client Application can handle 

missing da

The tester shall validate that the client 

application implements the pivPutData

per SP800-73. 

TE04.10.01 B.8.1.1 Generate an asymmetric key pair 

B.8.2.1 Identify and handle an invalid 

nce 

B.8.2.3 Identify and handle an invalid 

cryptographicMechanism 

B.8.2.4 Identify and handle an invalid 

keyReference/cryptographicMechanism 

combinations

The tester shall validate that the client 

application implements the 

card handle 

B.8.2.2 Identify and handle an invalid 

keyRefere

pivGenerateKeyPair as per SP800-73. 

TE05.01.02 

ired 

Collectively by all tests in Appendix C. The tester shall validate that the card 

implements all the commands as requ

in Table 15 of SP 800-73 

TE05.01.03 Collectively by all tests in Appendix C. The tester shall validate that the

commands are implemented only through 

the interfaces allowed as shown in Table

15 of SP 800-73 

TE05.01.04 Collectively by all tests in Appendix C. 

e

The tester shall validate that the 

commands are implemented only after th

security condition associated wit hem are

satisfied, as shown in the table, via the 

specified interface. 

TE05.01.05 Collectively by all tests in Appendix C. The tester shall validate that only the 

commands as indicated in the table are 

allowed for chaining via the interface 

supported after the security condition is

satisfied.

 E-3 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

DTR from 

Appendix A 

Test Scenario from Appendix B or C DTR Description 

TE05.05.01 C.1.1.1 Test Scenario #1 - Select card 

command - contact interface 

The tester shall validate that the P

Application is selected by providing its 

application identifier as specified in 

VE05.05.01. VE05.05.01: The vendor shall 

specify in its documentation the PIV Card 

Application Identifier. 

IV Card

TE05.07.02 C.1.1.1 Test Scenario #2 Select card implements the short version 

T

command - contact interface 

If the card

application selection, the tester shall 

validate that the PIV application is 

selectable by the right-truncated SELEC

command. 

TE05.09.01 C.1.1.1 Test Scenarios #1 and 2 in 

sequence - Select card command - 

contact interface 

ith an

ation or its right-truncated version, 

The tester shall validate that when the 

currently selected application is the PIV 

Card Application, if the SELECT 

APPLICATION command is sent w

AID that is either the AID of the PIV Card 

Applic

then the PIV Card Application shall 

continue to be the currently selected

application and the setting of all security 

status indicators in the PIV Card 

Application shall be unchanged 

TE05.10.01 C.1.1.2 Test Scenarios #1,2 and 3 in te that when the

n

on, 

application. 

sequence - Select card command - Error

Condition 

The tester shall valida

currently selected application is the PIV 

Card Application, if the SELECT 

APPLICATION command is sent with a

AID that is neither the AID of the PIV Card 

Application nor its right-truncated versi

the PIV Card Application continues to be

the currently selected

TE05.11A.01 Collectively by all test scenarios under 

C.1.2.1 Get Data card command - con

The Tester shall validate that all data 

objects that require the PIV card 

application PIN shall only be accessible 

after a successful validation of that PIN 

(through VERIFY command). 

tact 

interface 

TE05.11A.02 Collectively by all test scenarios under 

C.1.2.1 Get Data command - contact objects whose access rule is ”Always Read 

tion.

The Tester shall validate that all data 

interface ” shall only be accessible with or without 

PIV Card Application PIN valida

TE05.13.01 d

83’ in response to

C.2.1.1 Test Scenario # 5 – Verify Car

Command – Contact Interface

The tester shall validate the PIV Card 

Application returns ’69

the VERIFY command, when the retry 

counter associated with the key reference 

is zero. 

TE05.14.01 

r associated with the key reference 

C.2.1.1 Test Scenario # 3 – Verify card

command - contact interface 

The tester shall validate that the retry 

counte

shall be set to the reset retry value 

specified by the vendor in VE05.14.01 (not

decremented), when the VERIFY 

command succeeds. 

 E-4 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

DTR from 

Appendix A 

Test Scenario from Appendix B or C DTR Description 

TE05.15.01 C.2.1.1 Test includes this condition -

Verify card command - contact interface r

The tester shall validate that when the 

VERIFY command fails, the retry counte

associated with the key reference is

decremented by one. 

TE05.15.01A C.2.1.1 Test Scenario # 4 - Verify card 

command - contact interface 

The tester shall validate that the vendor 

documentation contains the information 

required in VE05.15.01A the card returns 

status word ‘6A 80’, when the PIN 

information in the reference data field of 

the command is not padded to 8 bytes, 

TE05.15.01B C.2.1.1 Test Scenario # 2 - Verify card 

command - contact interface 

ndor

formation 

y 

The tester shall validate that the ve

documentation contains the in

required in VE05.15.01B and the card 

returns status word ‘6A 88’, when the ke

reference is set to a value other than what

is supported by the card. 

TE05.16.01 C.2.2.1 Test Scenario # 5 - Change 

Reference Data card command - contact 

interface 

he

,

The tester shall validate that when t

current value of the retry counter 

associated with the key reference is zero

the reference data associated with the key 

reference does not change and the PIV 

Card Application returns ’69 83’ 

TE05.17.01 C.2.2.1 Test Scenario # 2 Change 

Reference Data card command - contact 

interface 

uired

and the retry 

ce 

y reference when the 

The tester shall validate that the vendor 

documentation states the req

information in VE05.17.01

counter associated with the key referen

shall be set to the reset retry value 

associated with the ke

command succeeds. 

TE05.18.01 C.2.2.1 Test includes this condition - 

Change Reference Data card command - 

contact interface 

ion 

The tester shall validate that the vendor 

documentation contains the informat

required in VE05.18.01 and the retry 

counter associated with the key reference 

shall be decremented by one if the card 

command fails. 

TE05.19.01 C.2.2.1 Test Scenario # 4 - Change 

Reference Data card command - contact 

is

d is not padded to 8 bytes, 

interface 

The tester shall validate that the vendor 

documentation contains the information 

required in VE05.19.01 and the old PIN

not changed and the card returns status 

word ‘6A 80’, when either of the PIN 

information in the reference data field of

the comman

TE05.19.01A C.2.2.1 Test Scenario # 3 - Change 

Reference Data card command - contact 

interface 

The tester shall validate that the vendor 

documentation contains the information 

required in VE05.19.01A and the old PIN is 

not changed and the card returns status 

word ‘6A 88’, when the key reference is set 

to a value other than what is supported by

the card.

 E-5 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

DTR from 

Appendix A 

Test Scenario from Appendix B or C DTR Description 

TE05.21.01 C.2.3.1 Test Scenario # 5 - Reset Retry 

Counter command - contact interface 

The tester shall validate that the 

information requested in VE05.21.02 and 

VE05.21.01 are present in the vendor 

documentation. (NOTE: Testing this 

condition will leaves the card unusable for 

further tests since since the reset counter

is zero). 

TE05.2

face command succeeds, PIN retry counter is

set to PIN reset retry value specified in 

status 

ter is 

l 

f reset

retry values of the retry counters

associated with each key reference on the 

2.01 C.2.3.1 Test Scenario # 4 - Reset Retry 

Counter command - contact inter

The tester shall validate that when the card

VE05.22.01, and neither the security

of the key reference or the reset coun

changed. VE05.22.01: The vendor shal

specify in its documentation a list o

card.

TE05.23.01 C.2.3.1 Test Scenario # 5 includes this 

condition - Reset Retry Counter 

command - contact interface 

The tester shall validate that the 

information requested in VE05.23.01 is 

present in the vendor documentation and, 

the security status of the key reference is 

set to FALSE and the reset counter is 

decremented by one 

TE 2 he tester shall validate that the vendor 

ocumentation includes the information 

required in VE05.24.01 and that when 

e command 

05. 4.01 C.2.3.1 Test Scenario # 3 - Reset Retry 

Counter command - contact interface 

T

d

either the PUK or the PIN of th

does not satisfy the criteria in Section 

3.5.3, the retry counter is not reset and the 

card returns ‘6A 80.’ 

TE05.24.01A C.2.3.1 Test Scenario # 2- Reset Retry 

Counter command - contact interface 

The tester shall validate that the vendor 

documentation includes the information 

when

t

card, the retry counter 

card returns ‘6A 88.’ 

required in VE05.24.01A and that

the key reference value is other than wha

is supported by the

is not reset and the

TE05.25.01 C.2.4.1 Test Scenario # 1,2 - General 

Authenticate command - contact interface 

(Tests 5 & 6 pertaining to INTERNAL 

AUTHENTICATE also apply) 

The tester shall validate that the GENERAL 

AUTHENTICATE command is 

implemented to authenticate the Card to 

the client application. 

TE05.25.02 C.2.4.1 Test Scenario # 3a, 3b - General 

Authenticate command - contact interface 

(Tests 5 & 6 pertaining to EXTERNAL 

AUTHENTICATE also apply) 

The tester shall validate that the GENERAL 

AUTHENTICATE command is implementd 

to authenticate the client application to the 

card.

TE05.25.03 C.2.4.1 Test Scenario # 4a, 4b - General 

Authenticate command - contact interface 

(Tests 5 & 6 pertaining to MUTUAL 

AUTHENTICATE also apply) 

The tester shall validate that the GENERAL 

AUTHENTICATE command is 

implemented to mutually authenticate the 

Card to the client application and the client 

application to the card. 

 E-6 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

DTR from 

Appendix A 

Test Scenario from Appendix B or C DTR Description 

TE05.27.01 C.2.4.1 Test Scenario # 7 - General 

Authenticate command - contact interface 

TE05.27.01: The tester shall validate that 

the vendor documentation contains the 

information required in VE05.27.01 and the 

card returns status word ‘6A 86’, when an

ce (P1) or 

reference (P2) is sent to the card. 

invalid value of algorithm referen

key

TE05.27.01A C.2.4.1 Test Scenario # 8 - General 

nticate com terface 

TE05.27.01A: The tester shall validate that 

80’, when 

e

command is sent to the card. 

Authe mand - contact in the vendor documentation contains the 

information required in VE05.27.01A and

the card returns status word ‘6A

an invalid value in data field of th

TE05.27.01B C.2.4.1 Test S eral 

Authenticate c interface 

TE05.27.01B: The tester shall validate that 

the vendor documentation contains the 

information required in VE05.27.01B and

rd ’69 82,

t

ation

cenario # 9 - Gen

ommand - contact

the card returns status wo

whenever the command is used to 

authenticate the card to the clien

application without prior PIN verific

TE05.27.01C C.2.4.1 Gener mmand

contact interfa

V Card

in if a command other than GENERAL 

ERAL

.

al Authenticate co

ce

- The tester shall validate that the PI

Application reverts back to the state it was 

AUTHENTICATE is received before the

termination of a GEN

AUTHENTICATE chain

TE05.28.01 C.3.1.1 Put D act

interface 

The tester shall validate that the card 

complies with the PUT DATA command as 

defined in SP800-73. 

ata command - cont

TE05.29.01 C.3.2.1 Gene Key Pair

command - co

The tester shall validate that the card 

implements the algorithms associated with 

identifiers specified as part of VE05.29.01 

requirement and that the public key 

returned is formatted based on data object 

tags specified in Table 21 of SP 800-73. 

VE05.29.01: The vendor shall specify in its 

c module

P 800-73) 

n the card.

rate Asymmetric

ntact interface 

documentation the cryptographi

identifiers (from Table 20 of S

that have been implemented o

TE05.31.01 C.3.2.1 Gene c Key Pai

command - co

itial

aced

ta, following a

IC KEY PAIR

rate Asymmetri

ntact interface 

r The tester shall validate that the in

contents of the public key data is repl

in full by the generated da

GENERATE ASYMMETR

command. 

 E-7 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

Appendix F—PIV Middleware Implementation Considerations (Informative)

This appendix presents some as e desig

conformant implementations of Client Application (also called PIV Middleware) 

ing Interface desc f S o major 

processes. 

pects of softwar

the End-Point

n that are important in developing

Programm ribed in Chapter 6 o P 800-73-1. The design involves tw

+ Design Step 1 — T

inte

h etur mands in the 

rface must be properly understood in or f execution scenarios 

under which each of

+ Design Step 2

e semantics of the r n codes for various com

der to arrive at the set o

them will occur.

— Th f the parameters in the language-neutral function 

signatures must be properly understood in order to determine appropriate types or 

structures when impl bindings are created for these function 

signatures. 

 1”, Appendix F.1 provid rom the various 

ts in the program nt to the ied in

Chapter 6. These components and their associated

+ PIV Card Applicatio onse C

+ Smart-Card Reader Driver – PC/SC Return Codes 

– Programmer Defined 

To obta sive list of PIV e

various functions, a m trix is given in

te “Design Step 2”, A g the PIV 

Middleware function signatures meric return codes in C-Language to 

the text-based PIV Middleware return codes is provided in Appendix F.3 

e semantics o

ementation-language

To facilitate “Design Step es a mapping of return codes f

componen call environme

n – APDU Resp

PIV Middleware return codes specif

return codes are: 

odes

+ Local Function Call Checks (also called API checks)

in a comprehen

a

Middleware return cod

Appendix F.2

s and their association with

To facilita ppendix F.2 provides C-Lan uage bindings for

. The translation from nu

 F-1 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

F.1 PIV Middleware Return Code Mappings: 

A set of the APD es (c ), local

PC/SC driver response codes and t local API-level parameter validations to PIV

re return codes are give ion in les. 

1. pivConnect (By design does not map to a card APDU) 

mappings from U response cod

he outcome of

oming from the card application

Middlewa n for each funct the following tab

Return Code Condition for 

Occurrence

Card App/PCSC Return Code 

PIV_OK Sma

pos in the

read

read

han

rt Card is

itioned

SCARD_S_SUCCESS from PCSC

er and the

er returns a

dle

PIV_CONNECTION_ 

DESCRIPTION_

MALFORMED

Con

“co

Description” does 

not

Table 11 of SP 800-

73 

M

V

SC ER

SC

tents of

nnection

conform to

iddleware specific -Local

alidation of a parameter value or 

ARD_E_UNKNOWN_READ

ARD_E_DUPLICATE_READER

PIV_CONNECTION_ 

LOCKED 

(a)S

Connection exists 

and

con

requ

(b)E

Con

and

exc

connection is 

equ

SCARD_E_SHARING_

VIOLATION from PCSC

hared

an exclusive 

nection is

ested

xclusive

nection exists

a shared/an 

lusive 

r ested

PIV_CONNECTION_

FAILURE 

(a) No card in the 

read

(b) A wrong 

connection mode is 

specified (say ISDN 

connection 

parameters for a 

PC/SC reader) 

(c)Scard service not 

started (one reason: 

reader not 

connected to local 

host) 

SC ARTCARD

SCARD_E_UNKNOWN_CARD 

SCARD_W_UNRESPONSIVE_CAR

D 

SCARD_E_INVALID_ATR 

SCARD_E_NO_SERVICE 

SCARD_E_NO_READERS_AVAIL

ABLE 

SCARD_F_COM_ERROR 

er

ARD_E_NO_SM

 F-2 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

2. pivDisconnect (By design does not map to a card APDU)

Return Code Condition for

Occurrence

Card App/PCSC Return Code 

PIV_OK Fun

with

card

ction is called S CSC

the existing

SCARD_

handle value

_SUCCESS from P

Fun

with

(a)N

valu

han

(b)S

Dis

called with this card 

han

D_E

E

ction is called SCAR

:

on-existing

HANDL

e of the card

dle (or)

uccessful 

connect already

dle

PIV_INVALID_CARD_ _INVALID_ 

HANDLE from PCSC

PIV_CARD_READER_ An event has 

occ

prev

with

SCARD_F_COMM_ERROR 

_W

RD_W

_W D

D_E_READER_UNAVAILABLE

ERROR urred that

ents

SCARD

SCA

communication

the card

SCARD

SCAR

_UNPOWERED_CARD 

_RESET_CARD 

_REMOVED_CAR

3. pivSelectCardApplication (maps to SELECT APDU)

Return Code Condition for 

Occurrence 

Card App/PCSC Return 

Code 

PIV_OK (a) An existing card handle

(and) 

(b) A valid Application 

AID are sent. 

90 00 from Card 

PIV_CARD_APPLICATION

NOT_FOUND

Application AID does not 

refer to an AID that the 

card supports 

6A 82 from Card 

_

PIV_INVALID_CARD_ 

ANDLE

 Function is called with: 

Non-existing value of the 

card handle

SCARD_E_INVALID_ 

H HANDLE from PCSC

PIV_CARD_READER_

RROR

(a)Reader is not connected 

to the local host 

(b) No card in the reader 

(c) an event has occurred

that prevents 

communication with the 

card 

SCARD_F_COMM_ERROR 

SCARD_W_UNPOWERED_

CARD 

SCARD_W_RESET_CARD 

SCARD_W_REMOVED_CA

RD 

SCARD_E_READER_ 

UNAVAILABLE 

E

 F-3 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

4. pivLogIntoCardApplication (maps to VERIFY APDU)

Return Code Condition for

Occurrence

Card App/PCSC Return Code 

PIV_OK (a)An existing

card handle is sent

Authenticators

(and) 

(b)

wellformed 

90 00 from Card 

PIV_INVALID_CARD_ SCARD_E_INVALID_ 

HANDLE from PCSC

lled

n-existing

le

Function is ca

with: 

No

HANDLE

value of the card

hand

PIV_CARD_READER_

ERROR 

ot

o the 

ost

(c) an event has 

occurred that 

prevents 

communication 

with the card

_ERROR

SCARD_W_UNPOWERED_CARD

SCARD_W_RESET_CARD 

SCARD_W_REMOVED_CARD 

SCARD_E_READER_ 

UNAVAILABLE 

(a)Reader is n SCARD_F_COMM

connected t

local h

(b) No card in the 

reader

PIV_AUTHENTICATOR_ 

ALFORMED 

The authenticators 

do not carry the 

right lengths or 

tags as specified in 

Table 10 of SP 

800-73 

Middleware specific - Local 

Validation of a parameter value 

(or) 

6A 80 from Card (or) 

6A 88 from Card

M

PIV_AUTHENTICATION_ 

AILURE

The reference data 

in the 

authenticator is 

invalid 

63Cx from Card 

F 69 83 from Card

 F-4 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

5. pivGetData (maps to GET DATA APDU) 

Return Code Condition for

Occurrence

Card App/PCSC Return Code

PIV_OK (a)An existing c

is sent (and) 

(b) OID is valid 

ard handle 90 00 from Card 

PIV_INVALID_CARD_ n is called with:

ue of

handle

SCARD_E_INVALID_ 

HANDLE CSC

Functio

Non-existing val

card

the HANDLE from P

PIV_CARD_READER_

ERROR 

ected

st

he rea

r

prevents 

ith t

SCARD_F_COMM_ERROR 

SCARD_W_UNPOWERED_CARD

ARD

RD

_

(a)Reader is not conn

to the local ho

(b) No card in t

(c) an event has occu

that

der SCARD_W_RESET_C

red SCARD_W_REMOVED_CA

communication w

card 

he UNAVAILABLE 

SCARD_E_READER

PIV_INVALID_OID found

P 800-73

e specific - Local

Validation of a parameter value 

The OID is not

Table 6 of S

in Middlewar

PIV_DATA_OBJECT_NOT_

FOUND5.1

refers to a data

the

The OID 6A 82 from Card

object not found on

card 

PIV_SECURITY_ 

CONDITIONS_NOT_

ATISFIED

card obj

is denied

condition

satisfied.

rd

S

Access to the

denoted by OID

since security

for its access not

ect 69 82 from Ca

5.1 (Note): This code cannot be realized if the underlying PIV Card implements all optional 

objects in the PIV Data Model.

 F-5 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

6. pivLogoutOfCardApplication (maps to SELECT APDU with non-PIV AID) 

Return Code Condition for 

Occurrence 

Card App/PCSC Return Code 

PIV_OK An existing card

handle is sent 

6A 82 or 90 00 from Card

PIV_INVALID_CARD_ 

HANDLE 

of

d handle

SCARD_E_INVALID_ 

HANDLE from PCSC

Function is called 

with: 

Non-existing value

the car

PIV_CARD_READER_

ERROR local

r

d that

n with

SCARD_F_COMM_ERROR 

SCARD_W_UNPOWERED_CARD

(a)Reader is not 

connected to the

host 

(b) No card in the 

reade

(c) an event has 

occurre

prevents 

communicatio

the card 

SCARD_W_RESET_CARD 

SCARD_W_REMOVED_CARD 

SCARD_E_READER_ 

UNAVAILABLE 

 F-6 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

7. pivCrypt (maps to GENERAL AUTHENTICATE APDU) 

Return Code Condition for

Occurrence

Card App/PCSC Return Code 

PIV_OK An existing card

handle is sent (and) 

all other parameters 

are valid

90 00 from Card 

PIV_INVALID_CARD_ 

HANDLE 

Function is called 

with: 

Non-existing

HA

value of

SC

the card handle

ARD_E_INVALID_ 

NDLE from PCSC

PIV_CARD_READER_

ERROR ected to the local 

ed that

SC

SC RD

C

ARD

SC

NAVAILABLE

(a)Reader is not 

conn

host 

(b) No card in the 

reader 

(c) an event has 

occurr

S

SC

U

prevents 

communication with 

the card 

ARD_F_COMM_ERROR 

ARD_W_UNPOWERED_CA

ARD_W_RESET_CARD 

ARD_W_REMOVED_C

ARD_E_READER_

PIV_INVALID_KEYREF_ 

R_ALGORITHM 

86 from the Card 

O

The algorithm 

Identifier or the 

keyReference 

6A

parameter value is 

not supported by the 

card. 

PIV_INPUT_BYTES_ 

MALFORMED 

Encoding of Tags 80 from the Card

and 

challenge/response 

6A

strings do not 

correspond to 

specification in Table 

17 of SP 800-73.

PIV_SECURITY_ 

CONDITIONS_NOT_ 

Internal 

Authentication is 

providing PIN 

69 82 from the Card

SATISFIED Performed without 

 F-7 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

8. pivPutData (maps to PUT DATA APDU)

Return Code Condition for 

Occurrence

Card App/PCSC Return Code 

PIV_OK (a)An existing card 

handle is sent (and) 

are valid 

90 00 from Card 

all other parameters

PIV _ 

HA

Function is called 

Non-existing value of 

SCARD_E_INVALID_ 

HANDLE from PCSC

_INVALID_CARD

NDLE with: 

the card handle

PIV

ER connected to the local 

(b) No card in the 

reader 

prevents 

the card 

SCARD_F_COMM_ERROR 

SCARD_W_UNPOWERED_CARD

SCARD_W_RESET_CARD 

SCARD_W_REMOVED_CARD 

SCARD_E_READER_ 

ILABLE

_CARD_READER_ (a)Reader is not 

ROR

host 

(c) an event has UNAVA

occurred that 

communication with 

PIV_INVALID_OID The value of OID Middleware specific - Local 

supplied is not the Validation of a parameter value 

one found in Table 6 

of SP 800-73. 

PIV

CO

SA inistrator 

has been performed 

_SECURITY_ No mutual or external 69 82 from the Card

NDITIONS_NOT_

TISFIED

authentication of PIV 

Card Adm

PIV

CA

to perform this 

operation with the 

given parameter 

_INSUFFICIENT_ The card does not 6A 84 from the Card 

RD_RESOURCE have enough memory 

values 

 F-8 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

9.pivGenerateKeyPair (maps to GENERATE ASYMMETRIC KEY PAIR APDU) 

Return Code Condition for 

Occurrence 

Card App/PCSC Return Code

PIV_OK (a) An existing card 

are

90 00 from Card 

handle is sent (and) all 

other parameters

valid 

PIV

HA

d with: SCARD_E_INVALID_ 

ANDLE from PCSC

_INVALID_CARD_ Function is calle

NDLE Non-existing value of the H

card handle

PIV

ERROR 

ader is not

connected to the local 

(c) an event has occurred

SCARD_F_COMM_ERROR 

SCARD_W_UNPOWERED_CARD

RD

D_CARD

SCARD_E_READER_ 

UNAVAILABLE 

_CARD_READER_ (a) Re

host SCARD_W_RESET_CA

(b) No card in the reader SCARD_W_REMOVE

that prevents 

communication with the 

card 

PIV

_O

_CO

card

_INVALID_KEY Key Reference not 6A 86 from the Card 

R_KEYALG supported by the

MBINATION (or) Key ReferenceCryptographic Algorithm 

combination is not 

supported on the Card

PIV_UNSUPPORTED_

CRYPTOGRAPHIC_ 

ME

The cryptographic 

mechanism value is not 

or

6A 80 from the Card 

CHANISM one of the algorithm

identifiers found in Table 

7 of SP 800-73

supported by the card. 

PIV

CO

SA

performed 

_SECURITY_ No mutual or e 69 82 from the Card

NDITIONS_NOT_

xternal

authentication of PIV 

TISFIED Card Administrator has 

been

F.2 Specification

pedef unsigned long PIV_RV;

/** 

C-Language Bindings for PIV Middleware Interface

/** 

 * \typedef typedef unsigned long PIV_RV 

 * Function return type 

 * \ingroup piv */ 

ty

 F-9 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

 * \typedef typedef unsigned char PIV_Bool 

* Boolean type

 * \ingroup piv */ 

typedef unsigned char PIV_Bool; 

/** 

 * \typedef typedef unsigned char PIV_Byte 

 * Byte type 

 * \ingroup piv */ 

typedef unsigned char PIV_Byte; 

* \typedef typedef unsigned long PIV_ULong32 

 * PIV redefinition of ANSI unsigned long type 

signed long PIV_CARDHA D

ANSI unsigned long type

ARDHANDLE;

_Bool sharedConnec ,

tionDe ip n,

g32 *pCDLen ,

PIV_CARDHANDLE *p d and e)

nect)(PIV_Bool, PIV_Byte *, PIV_ULong32 *, 

ect (PIV_CARDHANDLE cardHandle) 

E

PIV_ULong32 pAuthLength)

typedef PIV_RV (*pivLogIntoCardApplication) (PIV_CARDHANDLE, PIV_Byte *, 

PIV_ULong32); 

//PIV_RV pivSelectCardApplication (PIV_CARDHANDLE cardHandle, 

 PIV_Byte *applicationAID, 

 PIV_ULong32 aidLength, 

 * \ingroup piv */ 

typedef unsigned long PIV_ULong32; 

/** 

* \typedef typedef un N LE 

* PIV redefinition of

 * \ingroup piv */ 

typedef unsigned long PIV_C

//PIV_RV pivConnect (PIV tion

PIV_Byte *connec scr tio

PIV_ULon gth

Car H l

typedef PIV_RV (*pivCon

PIV_CARDHANDLE *); 

//PIV_RV pivDisconn

typedef PIV_RV (*pivDisconnect) (PIV_CARDHANDL );

/* Entry Points for Data Access */ 

//PIV_RV pivLogIntoCardApplication (PIV_CARDHANDLE cardHandle, 

 PIV_Byte *authenticators, 

 F-10 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

 PIV_Byte *applicationProperties, 

PIV_ULong32 *pAPLength) 

typedef PIV_RV (*pivSelectCardApplication) (PIV_CARDHANDLE, PIV_Byte *, 

E cardHandle, 

ngth,

ARDHANDLE, PIV_Byte *, PIV_ULong32, 

, PIV_ULong32 *);

n(PIV_CARDHANDLE cardHandle)

lication) (PIV_CARDHANDLE);

 PIV_Byte algID, 

 PIV_ULong32 inputLength, PIV_Byte *algOutput, 

th)

, PIV_Byte, PIV_Byte *, 

_ULon

dministration */ 

le,

Long32 oidLength,

 PIV_ULong32 dataLength) 

RDHANDLE, PIV_Byte *, PIV_ULong32, 

//PIV_RV pivGenerateKeyPair (PIV_CARDHANDLE cardHandle, 

ce,

 PIV_Byte cryptographicMechanism, 

 PIV_Byte *publicKey, 

 PIV_ULong32 *pKeyLength) 

typedef PIV_RV (*pivGenerateKeyPair) (PIV_CARDHANDLE, PIV_Byte, PIV_Byte, 

PIV_Byte *, PIV_ULong32 *); 

PIV_ULong32, PIV_Byte *, PIV_ULong32 *); 

//PIV_RV pivGetData (PIV_CARDHANDL

PIV_Byte *OID,

PIV_ULong32 oidLe

 PIV_Byte *data, 

PIV_ULong32 *pDataLength)

typedef PIV_RV (*pivGetData) (PIV_C

PIV_Byte *

//PIV_RV pivLogoutOfCardApplicatio

typedef PIV_RV (*pivLogoutOfCardApp

/* Entry Points for Cryptographic Operations */ 

//PIV_RV pivCrypt (PIV_CARDHANDLE cardHandle,

 PIV_Byte keyReference, 

 PIV_Byte *algInput, 

PIV_ULong32 *pOutputLeng

typedef PIV_RV (*pivCrypt) (PIV_CARDHANDLE, PIV_Byte

PIV g32, PIV_Byte *, PIV_ULong32 *);

/* Entry Points for Credential Initialization and A

//PIV_RV pivPutData (PIV_CARDHANDLE cardHand

 PIV_Byte *OID, 

PIV_U

 PIV_Byte *data, 

typedef PIV_RV (*pivPutData) (PIV_CA

PIV_Byte *, PIV_ULong32); 

PIV_Byte keyReferen

 F-11 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

 F-12 

F.3 Translation from C-Language Numeric Return Codes to text-based PIV 

Middleware Return Codes 

1. PIV_INVALID_KEY_OR_KEYALG_COMBINATION and 

PIV_INVALID_KEYREF_OR_ALGORITHM use the same numeric value.

2.This return code is only needed for those implementations that provide the optional feature to 

exercise “functions that return data” in discovery mode. The presence of this feature enables calling 

applications that do not have an apriori knowledge of the size of the data returned to obtain the size 

by making the discovery call and then make a second call with the right buffer size allocated for the 

output parameter to retrieve the data. 

PIV Middleware Return Code 

Numeric Value 

pivConnect 

pivDisconnect 

pivSelectCardApplication 

pivLogIntoCardApplication 

pivGetData 

pivLogoutOfCardApplication 

pivCrypt 

pivPutData 

pivGenerateKeyPair 

PIV_OK 0 X X X X X X X X X 

PIV_CONNECTION_DESCRIPTION_MALFORMED 1 X 

PIV_CONNECTION_FAILURE 2 X 

PIV_CONNECTION_LOCKED 3 X 

PIV_INVALID_CARD_HANDLE 5 X X X X X X X X 

PIV_CARD_APPLICATION_NOT_FOUND 6 X 

PIV_AUTHENTICATOR_MALFORMED 7 X 

PIV_AUTHENTICATION_FAILURE 8 X 

PIV_INVALID_OID 9 X X 

PIV_DATA_OBJECT_NOT_FOUND 10 X 

PIV_SECURITY_CONDITITIONS_NOT_SATISFIED 11 X X X X 

PIV_INVALID_KEYREF_OR_ALGORITHM1 13 X 

PIV_INSUFFICIENT_BUFFER2 14 X X X X 

PIV_INPUT_BYTES_MALFORMED 15 X 

PIV_INSUFFICIENT_CARD_RESOURCE 16 X 

PIV_UNSUPPORTED_CRYPTOGRAPHIC_MECHANISM 19 X 

PIV_CARD_READER_ERROR 22 X X X X X X X X 

PIV_INVALID_KEY_OR_KEYALG_COMBINATION1 13 X 
Special Publication 800-85A PIV Card Application & Middleware Interface Test Guidelines

 

 G-1 

Appendix G—Acronyms 

The following acronyms and abbreviations are used throughout this standard: 

AID Application Identifier 

APDU Application Protocol Data Unit

API Application Programming Interface 

BER-TLV Basic Encoding Rules Tag-Length-Value 

BSP Biometric Service Provider 

CBEFF 

CCC Card Capability Container 

CHUID Cardholder Unique Identifier 

CSP Cryptographic Service Provider 

DES-ECB Data Encryption Standard Electronic Code Book

DTR Derived Test Requirement

FIPS Federal Information Processing Standards 

FISMA Federal Information Security Management Act 

HSPD Homeland Security Presidential Directive 

ICC Integrated Circuit Chip 

ISDN Integrated Services Digital Network 

ISO International Organization for Standardization 

ITL Information Technology Laboratory

NIST National Institute of Standards and Technology 

OID Object Identifier 

OMB Office of Management and Budget 

PIN Personal Identification Number 

PIV Personal Identity Verification 

PIX Proprietary Identifier eXtension 

RID Registered application provider IDentifier 

SP Special Publication