SM30 R1
SM30 R1 on
S3CC9GC / S3CC9GW
Application Related Characteristics  Primitive Support  Implementation Specific Characteristics  Codelets Available
External Characteristics
Data Item 
Value 
Comments 

External Specification 

MULTOS Version 
4.2.1 
plus CR 0211, 0212, 0214, 0215, 0220, 0222 and 0223 
Silicon Provider / ic_manufacturer 
Samsung Electronics / 0x0E 

Implementer / implementer_id 
Samsung SDS / 0x06 TBC 

Mask / ic_type 
SM30 (R1C9GC) / 0x82 SM30 (R1C9GW) / 0x81 

Technical Data 

Power / External Clock 
1.62V to 5.5V / 1 to 5 MHz 

Transport Protocol 
T=0, T=1, T=CL (TypeB, TypeA) 

FI/DI 
0x11, 0x12, 0x13, 0x18 

Dual ATR 
Supported 
Preenablement ATR  SM30 (R1C9GC) : 3B0F8031E06B84210E0682555555555555  SM30 (R1C9GW): 3B0F8031E06B84210E0681555555555555 
PPS 
Supported, , max speed 112.5kbps @ 3.57MHz 
TypeB supports 106kbps, 212kbps and 424kbps TypeA supports 106kbps and 212kbps 
ATR Character Convention Direct LSB (3B) 
Supported 

ATR Character Convention Indirect MSB (3F) 
Supported 

Memory Area Sizes 

AMD 
0072V001 (Type B) 0073V001 (Type A) 

ROM 
variable 
256K on C9GC and 384K on C9GW 
RAM Public 
512 bytes 

RAM Dynamic 
1024 bytes 

EEPROM Total 
variable 
72K on C9GC and 144K on C9GW 
EEPROM available for applications 
variable 
69.7K on C9GC and 141.7K on C9GW 
Application Related Characteristics
Data Item 
Value 
Comments 

Application EEPROM Loading Requirements 

Application Header 
250 bytes 
Per application loaded 
Total temporary space per protected ALU 
 

Total temporary space per confidential ALU 
 

MULTOS Application Function 

Static Page Size (1 page) 
64 bytes 

Maximum write size in pages 
At least 10 pages 

Maximum ATR File record size 
32 bytes 

Maximum ATR Historical Byte record size 
15 bytes 

Maximum ATS Historical Byte record size 
15 bytes 

Maximum DIR File record size 
0xFFFF bytes 

Maximum FCI record size 
0xFFFF bytes 

Maximum inbound TPDU size 
260 bytes 

Maximum outbound TPDU size 
261 bytes 

Maximum delegation nest count 
Limited by free EEPROM 

Maximum application history list entries 
Limited by free EEPROM 

Retry Counters 

Set MSM Controls 
32 
Test cards set to 255. 
Create MEL Application 
32 
Test cards set to 255. 
Delete MEL Application 
32 
Test cards set to 255. 
Key Lengths 

KCK Public Key length 
128 bytes 

Permitted Application Provider Public Key lengths 
32 to 128 bytes 
KMA accepts APPK lengths between 72 and 128 bytes inclusive 
MULTOS TKCK length 
96 bytes 

Primitive Support
The primitives listed here are those that were included in the target specification.
Primitive 
Supported 
Optional / Mandatory 

Add BCDN 
No 
Optional 
AES Decipher 
Yes 
Optional 
AES Encipher 
Yes 
Optional 
Bit Manipulate Byte 
Yes 

Bit Manipulate Word 
Yes 

Block Decipher 
No 
Optional 
Block Encipher 
No 
Optional 
Call Codelet 
Yes 

Call Extension 0, 1, 2, 3, 4, 5, 6 
Yes 
Extension used is 6 
Card Block 
Yes 

Check Case 
Yes 

Checksum 
Yes 

Control Auto Reset WWT 
Yes 
Optional 
Delegate 
Yes 

DES ECB Decipher 
Yes 

DES ECB Encipher 
Yes 

DivideN 
Yes 

ECC Addition 
No 
Optional 
ECC Convert Representation 
No 
Optional 
ECC Equality Test 
No 
Optional 
ECC Inverse 
No 
Optional 
ECC Scalar Multiplication 
No 
Optional 
ECC Verify Point 
No 
Optional 
Exchange Data 
No 
Optional 
Generate Asymmetric Hash 
Yes 

Generate Asymmetric Signature General 
No 
Optional 
Generate DES CBC Signature 
Yes 

Generate Triple DES CBC Signature 
Yes 

Generate Random Prime 
Yes 
Optional 
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 Purse Type 
Yes 

Get Random Number 
Yes 

Load CCR 
Yes 

Lookup 
Yes 

Memory Compare 
Yes 

Memory Compare Fixed Length 
Yes 

Memory Copy 
Yes 

Memory Copy Fixed Length 
Yes 

Modular Exponentiation 
Yes 

Modular Exponentiation CRT 
Yes 

Modular Inverse 
Yes 
Optional 
Modular Multiplication 
Yes 
Optional 
Modular Reduction 
Yes 
Optional 
MultiplyN 
Yes 

Query Channel 
No 
Optional 
Query Codelet 
Yes 

Query0, Query1, Query2, Query3 
Yes 

Reset Session Data 
Yes 

Reset WWT 
Yes 

Return from Codelet 
Yes 

Secure Hash 
Yes 
Optional, supports SHA1 and SHA256 
SEED ECB Decipher 
Yes 
Optional 
SEED ECB Encipher 
Yes 
Optional 
Set AFI 
Yes 
Optional 
Set ATR File Record 
Yes 

Set ATR Historical Characters 
Yes 

Set ATS Historical Characters 
Yes 
Optional 
Set FCI File Record 
Yes 
Optional 
Set Transaction Protection 
Yes 

Set Select SW 
Yes 

SHA1 
Yes 

Shift Left 
Yes 

Shift Right 
Yes 

Store CCR 
Yes 

Subtract BCDN 
No 
Optional 
Triple DES Decipher 
Yes 
Optional 
Triple DES Encipher 
Yes 
Optional 
Verify Asymmetric And Retrieve General 
No 
Optional 
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 
Maximum Number of Pages Permitted in a Single Write
The maximum number of pages is at least twenty when transaction protection is used. It is possible to write more than twenty pages if there is free EEPROM. Note that if an attempt is made to write more than 10 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.
Supported Modulus Lengths of Cryptographic Primitives
All values given are in bytes.
Primitive 
Lengths supported 

Modular Exponentiation, public exponent not 3 
Greater than 0, but less then or equal to 256 bytes 
Modular Exponentiation, public exponent of 3 
Greater than 0, but less then or equal to 256 bytes 
Modular Exponentiation CRT 
Between 2 and 256 bytes inclusive 
Modular Multiplication 
Greater than 0, but less then or equal to 256 bytes 
Modular Reduction 
Greater than 0, but less then or equal to 256 bytes 
Important Remarks
This section contains important remarks about the Primitives and IFD commands of this implementation.
Functionality 
Operation 

Automated sending of Work Wait Time extension 
The chip returns WWT extension request bytes when 80% of the WWT has expired. 
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. 
Checksum 
If the checksummed area includes the parameters (the top four bytes of Dynamic), the checksum will be correctly calculated. 
DivideN 
The length of each operand must not be greater than 128 bytes 
Enable and Load with the Extended Asymmetric Hash 
SM30 does not support the enablement by using Extended Asymmetric Hash. SM30 does not support the application signature with Extended Asymmetric Hash. Protected/Confidential application load are not supported by using Extended Asymmetic Hash. 
Generate Asymmetric Hash 
Mode = 0, mode = 1, Mode = 2, mode = 3, Mode = 4 and mode = 5 are supported. If b2 (mode) takes an unsupported value, this primitive performs no operation. In particular, no bytes are popped from the stack.
The MULTOS 4.2 global data item hash_chain_length is 16 for Mode 0, 1, 2 and 3. But it should be inputted by user for Mode 4 and 5. The hash modulus length is currently 72 bytes for Mode 0 and 1. But it should be inputted by user for Mode 2, 3, 4 and 5. 
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. 
Maximum number of Application History List 
SM30 doesn't check Maximum number of Application History List. 
Modular Exponentiation 
Both the data and the exponent must be greater than 0. The least significant bit of the modulus must be 1. The exponent length must be greater than 0 and must be less than or equal to the length of the modulus. The modulus length must be greater than 4 and less than or equal to 256 bytes. If any of the conditions above are not met, an abnormal end will occur. Note that if the modulus is padded at the most significant end with full byte representations of 0, the result cannot be guaranteed. 
Modular Exponentiation CRT 
The most significant bit of the P & Q value must be 1. The modulus length must be greater than 4, but not greater than 256 bytes in length. The length must also be an even number. The length of each item must be modulus length divided by 2. Both the most significant and least significant bits of the primes p and q must be 1. If any of these conditions are not met, an abnormal end to processing will occur. 
Modular Inverse 
The data length must be less than or equal to 256 bytes. The modulus length must be greater than 4 and less than or equal to 256 bytes. If any of the conditions above are not met, an abnormal end will occur. 
Modular Reduction 
The modulus length must be greater than 4 and less than or equal to 256 bytes. The data length must be equal to or greater than the modulus length. The modulus must not have any leading zero bytes. If any of these conditions are not met, an abnormal end will occur. 
MultiplyN 
The length of each operand must not be greater than 128 bytes 
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. Samsung 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 

Codelets Available
SM30 R1
Both on test cards and live cards, there are at least four codelets available:
 0x0007 M/Chip Select V2.0.5
 0x0026 M/Chip Select V4
 0x0025 J/Smart V 2.0
 0x0181 CSP V1.0