M4P17
ML4P17 and MC4P17 on Infineon SLE77 Platform
Application Related Characteristics  Primitive Support  Implementation Specific Characteristics  Codelets Available
External Characteristics
Data Item 
Value 
Comments 

External Specification 

MULTOS Version 
4.4.0 

Silicon Provider / manufacturer_id 
Infineon / 0x05 

Implementers / implementer_id 
Multos International / 0x02 

Mask / ic_type 
Contact Multos International.

Contact Multos International for detailed technical information and product configurations. 
Technical Data for contact interface 

Power / External Clock 
1.62V to 5.5V / 1 to 7.5 MHz 
Applies to all masks 
Transport Protocol 
T = 0, T = 1 
Applies to all masks 
FI/DI 
0x01, 0x02, 0x03, 0x08, 0x11, 0x12, 0x13, 0x18, 0x32, 0x33, 0x34, 0x38, 0x92, 0x93, 0x94, 0x95, 0x96, ,0x97, 0xA3, 0xA4, 0xA5, 0xA6, 0xA8 
Applies to all masks 
Dual 
Supported 


Supported, max speed 447kbps @ 3.58MHz 
Applies to all masks 

Supported 
Applies to all masks 

Supported 
Applies to all masks 
Technical Data for contactless interface 

Transport Protocol 
Type A, Type B, Mifare 
Mifare only supported when enabled with Type A. 
Preenablement contactless protocol 
424kB, Type A, CID supported, 256 byte frame size, FWT=155ms, NAD not supoprted, ISO 144434 supported 

Postenablement contactless protocol 
106kB, Type A, CID supported, FWT=38.5ms, double UID, SFGT= default, IBlock number checking = OFF. 

Memory Area Sizes 


 
Not applicable 
ROM 
 
Not applicable 

530 bytes 
Applies to all masks 

3,500 bytes (max) 
Applied to all masks. Please see remarks 
AMD 

Available AMD(s) 
AMD 0137v002 AMD 0137v003 AMD 0139v001 
Contact Multos International for detailed technical information. 
Application Related Characteristics
Data Item 
Value 
Comments 

Application EEPROM Loading Requirements 

Application Header 
256 bytes 
Applies to all masks 
Total temporary space per protected 
128 bytes 
This represents the maximum size. Applies to all masks 
Total temporary space per confidential 
256 bytes 
This represents the maximum size. Applies to all masks 
MULTOS Application Function 

Static Page Size (1 page) 
32 bytes 
Applies to all masks 
Maximum write size in pages 
at least 9 pages 
Limited by available EEPROM. Applies to all masks 
Maximum 
32 bytes 
Applies to all masks 
Maximum 
15 bytes 
Applies to all masks 
Maximum DIR File record size 
255 bytes 
Applies to all masks 
Maximum FCI record size 
255 bytes 
Applies to all masks 
Maximum inbound TPDU size 
256 bytes 
Applies to all masks 
Maximum outbound TPDU size 
255 bytes 
Applies to all masks 
Maximum delegation nest count 
Limited by available RAM 
Applies to all masks 
Maximum application history list entries 
4 
Applies to all masks 
Retry Counters 

Set 
32 
Test cards set to 255. Applies to all masks 
Create 
32 
Test cards set to 255. Applies to all masks 
Delete 
32 
Test cards set to 255. Applies to all masks 
Key Lengths 

KCK Public Key length 
128 bytes 
Applies to all masks 
Permitted Application Provider Public Key lengths 
64 to 128 bytes 
KMA accepts APPK lengths between 72 and 128 bytes inclusive. Applies to all masks 
MULTOS TKCK length 
128 bytes 
Maximum size. Applies to all masks. 
Primitive Support
The primitives listed here are those that were included in the target specification.
Primitive 
Supported 
Optional / Mandatory 

Add BCDN 
Yes 

AES ECB Decipher 
No 

AES ECB Encipher 
No 

Bit Manipulate Byte 
Yes 

Bit Manipulate Word 
Yes 

Block Decipher 
Yes 

Block Encipher 
Yes 

Call Codelet 
Yes 

Call Extension 0,1,2,3,4,5,6 
No 
Optional 
CardBlock 
Yes 

CardUnBlock 
Yes 

Check Case 
Yes 

Checksum 
Yes 

Configure READ BINARY 
No 
Optional 
Control Auto Reset WWT 
Yes 

Convert BCD 
Yes 

Delegate 
Yes 

DES ECB Decipher 
Yes 

DES ECB Encipher 
Yes 

DivideN 
Yes 

ECC Addition 
No 

ECC Convert Representation 
No 

ECC ECIES Decipher 
No 
Optional 
ECC ECIES Encipher 
No 
Optional 
ECC Elliptic Curve Diffie Hellman 
No 
Optional 
ECC Equality Test 
No 

ECC Generate Key Pair 
No 
Optional 
ECC Generate Signature 
No 
Optional 
ECC Inverse 
No 

ECC Scalar Multiplication 
No 

ECC Verify Point 
No 
Optional 
ECC Verify Signature 
No 
Optional 
Exchange Data 
Yes 
Optional 
Exit to MULTOS and Restart 
No 
Optional 
Flush Public 
No 
Optional 
Generate Asymmetric Hash General 
No 

Generate Asymmetric Signature General 
No 

Generate DES CBC Signature 
Yes 

Generate Random Prime 
No 
Optional 
Generate RSA Key Pair 
No 
Optional 
Generate Triple DES CBC Signature 
Yes 

Get Data 
Yes 

Get Delegator AID 
Yes 

Get DIR File Record 
Yes 

Get File Control Information 
Yes 

Get Manufacturer Data 
Yes 

Get Memory Reliability 
Yes 

Get MULTOS Data 
Yes 

Get PIN Data 
Yes 

Get Process Event 
Yes 
Optional 
Get Purse Type 
No 

Get Random Number 
Yes 

Get Static Size 
No 
Optional 
GSM Authenticate 
No 
Optional 
Initialise PIN 
Yes 

Load CCR 
Yes 

Lookup 
Yes 

Lookup Word 
Yes 

Memory Compare 
Yes 

Memory Compare Fixed Length 
Yes 

Memory Copy 
Yes 

Memory Copy Additional Static 
No 
Optional 
Memory Copy Fixed Length 
Yes 

Memory Copy NonAtomic 
Yes 

Memory Copy NonAtomic Fixed Length 
Yes 

Memory Fill Additional Static 
No 
Optional 
Modular Exponentiation / RSA Sign 
Yes 

Modular Exponentiation CRT / RSA Sign CRT 
Yes 

Modular Exponentiation CRT Protected / RSA Sign CRT Protected 
Yes 

Modular Inverse 
No 

Modular Multiplication 
Yes 

Modular Reduction 
Yes 

MultiplyN 
Yes 

Pad 
Yes 

Platform Optimised Checksum 
Yes 

Query Channel 
Yes 
Optional 
Query Codelet 
Yes 

Query Cryptographic Algorithm 
Yes 

Query Interface Type 
Yes 

Query0, Query1, Query2, Query3 
Yes 

Read PIN 
Yes 

Reject Process Event 
Yes 
O 
Reset Session Data 
Yes 

Reset WWT 
Yes 

Return from Codelet 
Yes 

RSA Verify 
Yes 

Secure Hash 
Yes 

Secure Hash IV 
No 

SEED ECB Decipher 
No 

SEED ECB Encipher 
No 

Set AFI 
Yes 

Set ATR File Record 
Yes 

Set ATR Historical Characters 
Yes 

Set ATS Historical Characters 
Yes 

Set FCI File Record 
Yes 

Set PIN Data 
Yes 

Set Silent Mode 
No 
Optional 
Set Transaction Protection 
Yes 

Set Contactless SelectSW 
Yes 
Optional 
Set Select SW 
Yes 

SHA1 
Yes 

Shift Left 
Yes 

Shift Right 
Yes 

Store CCR 
Yes 

Subtract BCDN 
Yes 

Triple DES Decipher 
No 

Triple DES Encipher 
No 

Unpad 
Yes 

Verify Asymmetric and Retrieve General 
No 

Verify PIN 
Yes 

Implementation Specific Characteristics
Zero Block Size
The following instructions and primitives have the block size specified in the code (as opposed to being runtime data). The following table shows how each will perform if a zero block size is specified.
Type 
Instruction / Primitive 
Operation 

Instruction 
LOAD, STORE, LOADI, STOREI 
no operation 
CLEARN 
no operation 

TESTN, INCN, DECN, NOTN 
Z = 1 

CMPN, ADDN, SUBN 
C = 0, Z = 1 

ANDN, ORN, XORN 
Z = 1 

Primitive 
MultiplyN 
Z = 1 
DivideN 
C = 1, Z = unchanged 

ShiftLeft, ShiftRight 
C = 0, Z = 1 

GetDIRFileRecord 
One byte set to zero pushed onto stack, If the application specified does not exist, C = 1, Z = 1 If the application specified exists, C = 0, Z = 0 

GetManufacturerData 
One byte set to zero pushed onto stack, C = 0 Undefined: implementation specific handling Undefined: implementation specific handling 

MemoryCompareFixedLength 
DT’ = DT – 4, C = 0, Z = 1 

MemoryCopyFixedLength 
DT’ = DT – 4 

AddBCDN / SubBCDN 
Max operand length = 6 bytes 
Maximum Number of Pages Permitted in a Single Write
The maximum number of pages is at least nine when transaction protection is used. It is possible to write more than nine pages if there is free EEPROM. Note that if an attempt is made to write more than nine pages and if there is insufficient free EEPROM, then an abnormal end to processing to will occur.
Condition Code Register
This implementation does support signed arithmetic. The N and V flags are present in the CCR, and they may be changed by some instructions. However, signed arithmetic is not guaranteed and should be avoided. They may be used by an application using the Load CCR and Store CCR primitives, but this may affect the portability of the application.
Important Remarks
This section contains important remarks about the Primitives and IFD commands of this implementation.
Functionality 
Operation 

Bit Manipulate Byte Bit Manipulate Word 
Bits 6 to 2 of b2 are ignored. That is, the primitives return the expected result regardless of the value of bits 6 to 2 of b2. 
Block Decipher Block Encipher 
Supports DES, 3DES, AES in CBC and ECB modes 
Checksum 
If the checksummed area includes the parameters (the top four bytes of Dynamic), the checksum will be correctly calculated. 
Convert BCD 
Max operand length = 6 bytes 
Default Application 
This version 4.4 functionality is supported 
DivideN 
Numerator: min – 1 byte, max = 128 bytes, granularity = 1 byte Denominator: min = 1 byte, max 128 bytes, granularity = 1 byte 
Exchange Data 
This primitive only support Mifare channel (channel number of 1). Access to channels other than 1 will cause abend. Stack parameter DataAddr must contain an address pointing to the following structure: Operation/Result (2 bytes): As input, operation can be 0x03 to indicate write or 0x05 to indicate write. As output, the Mifare return status is returned. See below of status codes. Block Number (2 bytes): Block number to read/write to. Mifare Password (8 bytes) Data (16 bytes): Data to write to Mifare card, or data read from Mifare card. Return Mifare status code : 0000_{H} – Operation completed without errors 0502_{H} – Mifare Not Available 0505_{H} – Authentication Process Failed 0508_{H} – Invalid Block Number 0509_{H} – Communication Error Occurred 0510_{H} – General Error Occurred 0511_{H} – Access Rights Not Set for the Desired Action 0515_{H} – Wrong Password 
Get Manufacturer Data Get MULTOS Data Get Purse Type 
If the destination is stack top, the last byte of retrieved data will be overwritten by the length of data retrieved. That is, the number of bytes copied is always returned on the stack regardless of the destination segment address.

Get Memory Reliability 
MULTOS 4 always indicates memory is reliable: C = 0, Z = 0. 
Lookup 
If the target value appears more than once in the list, the location of the first is reported. The list need not be sorted. If the target value is not found, it is left unchanged on the stack. 
Modular Exponentiation 
The modulus length must be greater than or equal to 512 bits and less than or equal to 2048 bits. The least significant bit of the modulus must be 1. The modulus must not contain any zero bytes at the most significant end. The exponent length must be greater than or equal to 512 bits. The length of the modulus must be greater or equal to the length of the exponent. If the length of the modulus and exponent are the same then the value of the modulus must be greater than the value of the exponent. If any of the conditions above are not met, an abnormal end will occur. It is highly recommended that the modulus length and exponent length are equal. For modular exponentiation using a public exponent use RSA Verify 
Modular Exponentiation CRT 
The modulus length must be greater than or equal to 512 bits, but not greater than 2048 bits. The length of each item must be modulus length divided by 2. The most significant byte of primes p and q must not be 0. The least significant bits of the primes p and q must be 1. X (in calculation Y= X^{d}modN) must not be equal to 0. If any of these conditions are not met, an abnormal end to processing will occur. X (in calculation Y=X^{d}modN) must not be equal to 1. If the above condition is not met, undefined results will occur. 
MultiplyN 
The length of each operand must not be greater than 128 bytes 
Proprietary Primitive Extension 
There is one such primitives. Query (proprietary) primitive type (All masks)

RSA Verify 
This primitive performs modular exponentiation optimised for public exponents. Use the modular exponentiation with private exponents in standard format use the secure Modular Exponentiation primitive. 
Secure Hash 
SHA1, SHA224, and SHA256 algorithms supported. 
Set Transaction Protection 
Bits 7 to 2 of b2 are ignored. That is, the primitive returns the expected result regardless of the value of bits 7 to 2 of b2. Infineon chips copy the source data to a temporary store and any updates are made to the source data. In the case of a rollback, the copy of the original source data is written to the source. 
Shift Left and Shift Right

With b2 > 0, if b3 = 0, C= 0 and Z is set appropriately.
With b2 > 0, if b3 > 8 * b2, C = 0 and Z = 1. 
Contactless Configuration 
The following contactless configurations are selectable via the upper 3Msbits of the ‘X’ parameter of the MSM Controls Data: Set1: TypeA, 106kbps, double UID, FWT=38.5ms, CID supported, no IBlock number checking. (This is the default configuration) Set2: as per Set 1 but including 1k Mifare. Set3: as per Set 1 but including 4k Mifare. Set4: Type B, 106kbps, FWT=38.5ms, no IBlock number checking, configured for typeB payment applications. Set5: Type A, 106/212/424/848kbps, double UID, FWT=38.5ms, no IBlock number checking. Set6: Type B, 106/212/424/848kbps, FWT=38.5ms, no IBlock number checking. Set7: as per Set 1 but uses single UID. Set8: as per Set 2 but uses single UID. 
Available RAM 
MULTOS M4 has a total of 3500bytes of RAM available. However, This RAM is shared between application dynamic, the delegation mechanism, transaction protection mechanism and crypto functions. If at any point MULTOS runs out of resources then an abend will occur. An example scenario is as follows:

Codelets Available
Contact Multos International for detailed technical information and product configurations.
Romlets Available
There are no romlets available.