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.
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.
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.
or
|
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.
|
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.
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. |