9.3 PPS Support

All CryptoMemory® devices with user memory size 32Kb and larger support the Protocol and Parameter Selection (PPS) protocol, Section 7 of ISO 7816-3. This section only applies to these larger devices; CryptoMemory devices with memory sizes 16-Kbit or smaller do not support PPS.

At the end of an ATR sequence, subsequent to either a cold or a warm reset initiated by the reader, the device will be expecting either a ‘Class’ byte as part of a command header, or the initial character, PPSS, of a PPS request. If the device receives a byte = $FF, it will process subsequent incoming bytes as a PPS request. In all other cases, it will proceed with command processing. There are four bytes that comprise a PPS request or response:

  • Initial Character PPSS. Always equal to $FF.
  • Format Character PPS0. CryptoMemory supports two response values for PPS0, $00 and $01. See ISO 7816 for further definition of PPS0.
  • Parameter Character PPS1. Encodes Fn and Dn in the same manner as TA(1) in the ATR.
  • Checksum PCK.

The following table shows the PPS1 values supported by CryptoMemory devices with memory sizes 32Kb and above.

Table 9-1. PPS1 Values Supported by Microchip CryptoMemory®

Dl

Dl

f Max

4MHz

5MHz

5MHz

Fl

0000b

0001b

1001b

Fl

372

372

372

0001b

1

PPS1

01

11

F/D

372

372

baud rate

9600

9600

0010b

2

PPS1

02

12

F/D

186

186

baud rate

19200

19200

0011b

4

PPS1

03

13

F/D

93

93

baud rate

38400

38400

0100b

8

PPS1

04

14

94

F/D

46.5

46.5

64

baud rate

76800

76800

55800

0101b

16

PPS1

05

15

95

F/D

23.25

23.25

32

baud rate

153600

153600

111600

1000b

12

PPS1

08

18

F/D

31

31

baud rate

115200

115200

After the ATR, the reader will have the choice of proceeding with commands using default values of F=372 and D=1 (9600-baud at 3.5712 MHz), or negotiating values Fn and Dn through a PPS exchange. The following are four examples of PPS requests and responses:

Example:

We assume CryptoMemory® ATR contains the byte TA(1) = 15h, indicating that it is capable of using F=372 and D=16, leading to a baud rate of 153,600-baud at 3.5712 MHz. Assuming that this is the maximum speed supported by the device, the reader immediately attempts to set the F and D parameters that results in the specified baud rate.

  • PPS_request = $FF $10 $15 $FA
  • PPS_response = $FF $10 $15 $FA

The newly negotiated values take effect immediately following this exchange, so the ETU, or duration of one bit on I/O, will now be 23 clock cycles instead of 372.

Example:

The reader insists on negotiating Fn and Dn equal to the default values, even though these would be used by default without a PPS exchange. There are two ways to do this: by sending PPS1_request = $11 or by not sending PPS1_request at all.

  • PPS_request = $FF $10 $11 $FE
  • PPS_response = $FF $10 $11 $FE

or

  • PPS_request = $FF $00 $FF
  • PPS_response = $FF $00 $FF
Example:

The reader attempts to negotiate values that are not supported by the CryptoMemory device. In its response, the CryptoMemory proposes to continue with the existing F and D values by not sending PPS1_response. Even though new Fn and Dn values aren’t negotiated, this scenario is still considered a “successful” exchange according to ISO 7816.

  • PPS_request = $FF $10 $45 $AA
  • PPS_response = $FF $00 $FF
Example:

If the reader attempts to change the protocol to any protocol other than T = 0, such as T = 1, the CryptoMemory will indicate that it only supports T = 0.

  • PPS_request = $FF $01 $FE
  • PPS_response = $FF $00 $FF

CryptoMemory will only operate at baud rates above the default 9600 baud through a successful PPS exchange. CryptoMemory cannot be set to higher baud rates through the use of a TA(2) byte in the ATR.