1 拼音
jū mín jiàn kāng kǎ yòng hù kǎ mìng lìng jí
《居民健康卡用戶卡命令集》由衛生部於2012年2月24日衛辦綜發〔2012〕26號印發,自2012年2月24日起實施。
居民健康卡用戶卡命令集V1.0
3 2 規範性引用文件
下列文件中的條款通過本部分的引用而成爲本部分的條款。凡是注日期的引用文件,其隨後所有的修改單(不包括勘誤的內容)或修訂版均不適用於本部分,然而,鼓勵根據本部分達成協議的各方研究可使用這些文件的最新版本。凡是不注日期的引用文件,其最新版本適用於本部分。
GB/T 16649.4—2010 識別卡 帶觸點的集成電路卡 第4部分
GB/T 16649.5—2002 識別卡 帶觸點的集成電路卡 第5部分
ISO/IEC14443 識別卡 非接觸式集成電路卡 接近式卡
JR/T 0025—2010 中國金融集成電路(IC)卡規範
衛生部《居民健康卡技術規範》(衛辦發〔2011〕60號)
4 3 定義和縮略語
3.1 定義
3.1.1 居民健康卡(ResidentsHealth Card)
居民健康卡是中華人民共和國居民擁有的,在醫療衛生服務活動中用於身份識別,滿足健康信息存儲,實現跨地區和跨機構就醫、數據交換和費用結算的基礎載體,是計算機可識別的CPU卡。
3.1.2 CPU卡(CentralProcessing Unit Card)
帶有中央處理器(CPU)、存儲單元以及卡片操作系統的集成電路卡。
3.1.3 芯片(Chip)
本規範中特指居民健康卡中用於完成數據處理和存儲功能的集成電路器件。
3.1.4 芯片操作系統(COS,CardOperating System)
CPU卡芯片中存儲和可運行的,以保護應用數據和程序的機密性和完整性,控制CPU卡芯片與外界信息交換爲目的的嵌入式軟件。
3.1.5 加密算法(CryptographicAlgorithm)
爲了隱藏或顯現數據信息內容的變換算法。
3.1.6 對稱加密算法(SymmetricCryptographic Algorithm)
加密密鑰可以從解密密鑰中推算出來,反過來也成立,在大多數算法中加/解密密鑰是相同的。
3.1.7 非對稱加密算法(AsymmetricCryptographic Algorithm)
加密算法的加密密鑰和解密密鑰是不一樣的,不能由一個密鑰推導出另一個密鑰。
3.1.8 密鑰(Key)
3.1.9 對稱密鑰(SymmetricKey)
在對稱加密算法中使用的密鑰。
3.1.10 非對稱密鑰(AsymmetricKey)
在非對稱加密算法中使用的密鑰,包括公鑰和私鑰。
3.1.11 公鑰(PublicKey)
在一個實體使用的非對稱密鑰對中可以被公衆使用的密鑰。在數字簽名方案中,公鑰用於驗證。
3.1.12 私鑰(PrivateKey)
在一個實體使用的非對稱密鑰對中僅被該實體使用的密鑰。在數字簽名方案中,私鑰用於簽名。
3.1.13 數字簽名(DigitalSignature)
對數據的一種非對稱加密變換。該變換可以使數據接收方確認數據的來源和完整性,保護數據發送方發出和接收方收到的數據不被第三方篡改,也保護數據發送方發出的數據不被接收方篡改。
3.1.14 生物標識(Biomarker)
人的某種特異性的生物學特徵,具有遺傳性和終身攜帶性,如血型。
3.1.15 醫學警示(MedicalAlert)
患者在就醫、急診或搶救時需要特別提醒醫生注意的信息,包括疾病史、體內裝置、藥物過敏史、對某些物質的不耐受史等。
3.2 縮略語
以下縮略語和符號表示適用於本規範。
表3-1縮略語和符號列表
縮略語 | 中文名 | 英文名 |
‘0’-‘9’ ‘A’-‘F’ | 十六進制數字 | |
AID | 應用標識符 | Application Identifier |
An | 字母數字型 | Alphanumeric |
Ans | 特殊字母數字型 | Alphanumeric Special |
B | 二進制 | Binary |
CBC | 密碼塊鏈接 | Cipher Block Chaining |
命令報文的類別字節 | Class Byte of Command Message | |
Cn | 壓縮數字 | Compressed Numeric |
COS | 芯片操作系統 | Card Operating System |
CPU | 中央處理器 | Central Processing Unit |
CVN | 卡安全碼 | Card Verification Number |
DDF | 目錄定義文件 | Directory Definition File |
DF | 專用文件 | Dedicated File |
EF | 基本文件 | Elementary File |
FCI | File Control Information | |
FID | 文件標識符 | File Identifier |
IC | Integrated Circuit | |
IEC | 國際電工委員會 | International Electrotechnical Commission |
INS | 命令報文的指令字節 | Instruction Byte of Command Message |
ISO | International Organization for Standardization | |
M | 必選型 | Mandatory |
報文鑑別代碼 | Message Authentication Code | |
MF | 主控文件 | Master File |
O | 可選型 | Optional |
PIX | 專用應用標識符擴展碼 | Proprietary Application Identifier Extension |
SAM | 安全存取模塊 | Secure Access Module |
PVC | 聚氯乙烯 | Polyvinyl Chloride |
RID | 已註冊的應用提供者標識 | Registered Application Provider Identifier |
RS232 | 串行通信接口 | |
USB | 通用串行總線 | Universal Serial BUS |
Xx | 任意值 |
5 4 復位應答
復位應答中歷史字節的前8個字節固定爲芯片提供機構註冊標識(2字節,由國家IC卡註冊中心分配的註冊標識號)||卡片製造機構註冊標識(2字節,由國家IC卡註冊中心分配的註冊標識號)||卡片序列號(4字節)。
6 5 命令
在卡片讀寫過程中,卡片總是處於以下狀態之一,在一種狀態下,只有某些命令能夠被執行。卡片具有的狀態如下:
(1) 空閒狀態:此時卡片沒有獲得讀寫權限;
(2) 安全狀態:此時卡片獲得了一定的讀寫授權,可以進行讀寫操作。
卡片上不同應用之間通過“防火牆”以防止跨過應用進行非法訪問,在選擇其它應用後,所獲得的安全狀態消失。卡片通過EXTERNAL AUTHENTICATION命令獲得一定的讀寫授權,當卡片從終端接收到一條命令時,它必須首先檢查當前狀態是否允許執行該命令。在命令執行成功後,卡片將如表5- 1所示進入另一個狀態(或同一個)。
表5- 1說明了命令執行成功後的狀態變化。第一行表示命令發出時卡片的當前狀態,第一列表示發出的命令,整張表給出的是在當前狀態下某個命令執行成功後的狀態。
陰影部分表示在卡片處於相應狀態時發出此命令是無效的。在這種情況下,卡片不執行該命令。
表5- 1命令執行成功後的狀態變化
命令 | 空閒 | 安全 |
SELECT(選擇當前應用) | 空閒 | 安全 |
SELECT(選擇其它應用) | 空閒 | 空閒 |
EXTERNAL AUTHENTICATION | 安全 | 安全 |
SELECT(選擇文件或記錄) | 空閒 | 安全 |
READ BINARY(一般二進制文件) | 空閒 | 安全 |
READ RECORD(一般記錄文件) | 空閒 | 安全 |
READ BINARY(限制二進制文件) | N/A | 安全 |
READ RECORD(限制記錄文件) | N/A | 安全 |
ERASE RECORD | N/A | 安全 |
WRITE RECORD | N/A | 安全 |
6.1 5.1 命令APDU格式
命令APDU的格式如表5-2所示
表5-2命令APDU的結構
INS | P1 | P2 | Lc | Data | Le | |
?———————必備頭———————? | ?————條件體————? |
命令APDU中發送的數據字節數用Lc(命令數據域的長度)表示。
響應APDU中期望返回的數據字節數用Le(期望數據長度)表示。當Le存在且值爲0時,表示需要最大字節數(256字節)。
命令APDU報文的內容見表5-3:
表5-3命令APDU的內容
6.2 5.2 響應APDU格式
響應APDU格式由一個變長的條件體和後隨兩字節長的必備尾組成,見表5-4:
表5-4 響應APDU的結構
Data | SW1 | SW2 |
?——條件體——? | ?——尾——? |
響應APDU的內容見表5- 5:
表5- 5 響應APDU的內容
代碼 | 描 述 | 長度 |
Data | 響應中接收的數據字節串(=Le) | 變長 |
SW1 | 命令處理狀態 | 1 |
SW2 | 命令處理限定 | 1 |
6.3 5.3 基本命令
5.3.1 APPLICATION BLOCK命令
5.3.1.1 定義和範圍
APPLICATION BLOCK命令使當前選擇的應用失效。
當APPLICATION BLOCK命令成功地完成後,用SELECT命令選擇已臨時鎖定的應用時,將回送狀態碼 ‘6283’(選擇文件無效),同時返回FCI。
對其他命令的影響根據不同應用而定。
5.3.1.2 命令報文
APPLICATION BLOCK命令報文編碼見表5-6
表5-6 APPLICATION BLOCK命令報文
代碼 | 值 |
‘84’ | |
INS | ‘1E’ |
P1 | ‘00’,其他值保留爲將來使用 |
P2 | ‘00’,臨時鎖定應用,鎖定後可用APPLICATION_UNBLOCK解鎖 |
‘01’,永久鎖定應用 | |
Lc | ‘04’ |
Data | |
Le | 不存在 |
5.3.1.3 命令報文數據域
命令報文數據域包括根據《居民健康卡技術規範》第9.4.2章中的規定進行編碼的報文鑑別碼(MAC)數據元。
5.3.1.4 響應報文數據域
響應報文數據域不存在。
5.3.1.5 響應報文狀態碼
無論應用是否已經失效,此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-7所示:
表5-7 APPLICATION BLOCK錯誤狀態
SW1 | SW2 | 含 義 |
‘65’ | ‘81’ | 內存失敗 |
‘67’ | ‘00’ | Lc長度錯誤 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘84’ | 引用數據無效 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘69’ | ‘87’ | 安全報文數據項丟失 |
‘69’ | ‘88’ | 安全報文數據項不正確 |
‘6A’ | ‘86’ | 參數P1 P2不正確 |
‘6A’ | ‘88’ | 未找到引用數據 |
5.3.2 APPLICATION UNBLOCK命令
5.3.2.1 定義和範圍
APPLICATION UNBLOCK命令可以對臨時鎖定的應用解鎖,當APPLICATION UNBLOCK命令成功地完成後,用SELECT命令可以正確選擇此應用,應用功能同時被恢復。
5.3.2.2 命令報文
APPLICATION UNBLOCK命令報文編碼見表5-8:
表5-8 APPLICATION UNBLOCK命令報文
5.3.2.3 命令報文數據域
命令報文數據域包括根據《居民健康卡技術規範》第9.4.2章中的規定進行編碼的報文鑑別碼(MAC)數據元。
5.3.2.4 響應報文數據域
響應報文數據域不存在。
5.3.2.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-9所示:
表5-9 APPLICATION UNBLOCK錯誤狀態
SW1 | SW2 | 含 義 |
‘65’ | ‘81’ | 內存失敗 |
‘67’ | ‘00’ | Lc長度錯誤 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘84’ | 引用數據無效 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘69’ | ‘87’ | 安全報文數據項丟失 |
‘69’ | ‘88’ | 安全報文數據項不正確 |
‘6A’ | ‘86’ | 參數P1 P2不正確 |
‘6A’ | ‘88’ | 未找到引用數據 |
5.3.3 CARD BLOCK命令
5.3.3.1 定義和範圍
CARD BLOCK命令使卡中所有應用永久失效。
當CARD BLOCK命令成功地完成後,所有後續的命令都將回送狀態碼“不支持此功能”(SW1SW2=‘6A81’),且不執行任何其他操作。
5.3.3.2 命令報文
CARD BLOCK命令報文編碼見表5-10:
表5-10 CARD BLOCK命令報文
代碼 | 值 |
‘84’ | |
INS | ‘16’ |
P1 | ‘00’,其他值保留爲將來使用 |
P2 | ‘00’,其他值保留爲將來使用 |
Lc | ‘04’ |
Data | |
Le | 不存在 |
5.3.3.3 命令報文數據域
命令報文數據域包括根據《居民健康卡技術規範》第9.4.2章中的規定進行編碼的報文鑑別代碼(MAC)數據元。
5.3.3.4 響應報文數據域
響應報文數據域不存在。
5.3.3.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-11所示:
表5-11 CARD BLOCK錯誤狀態
SW1 | SW2 | 含 義 |
‘65’ | ‘81’ | 內存失敗 |
‘67’ | ‘00’ | Lc長度錯誤 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘84’ | 引用數據無效 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘69’ | ‘87’ | 安全報文數據項丟失 |
‘69’ | ‘88’ | 安全報文數據項不正確 |
‘6A’ | ‘86’ | 參數P1或/和P2錯誤 |
‘6A’ | ‘88’ | 未找到引用數據 |
5.3.4 EXTERNALAUTHENTICATION命令
5.3.4.1 定義和範圍
EXTERNAL AUTHENTICATION命令要求IC卡中的應用驗證接口設備中保密模塊的有效性,以使接口設備獲得某種授權。
IC卡的響應包括命令處理狀態的回送。
5.3.4.2 命令報文
EXTERNAL AUTHENTICATION命令報文編碼見表5-12:
表5-12 EXTERNAL AUTHENTICATION命令報文
代碼 | 值 |
‘00’ | |
INS | ‘82’ |
P1 | ‘00’ |
P2 | 密鑰標識符(見表5-12表5-13) |
Lc | ‘11’ |
Data | 鑑別用數據 |
Le | 不存在 |
表5-13定義了命令報文中的密鑰標識符:
表5-13密鑰標識符的結構
EXTERNAL AUTHENTICATION命令使用的算法參考值(P1)編碼爲‘00’表示無信息。算法參考值在命令發出之前是已知的。
5.3.4.3 命令報文數據域
命令報文數據域中包含17個字節的數據:
——第1至第8個字節爲鑑別數據;
——第9至第16個字節是鑑別所需的原始信息;
——第17個字節表示密鑰版本。
其中,鑑別數據根據《居民健康卡技術規範》第9.7.3章中的規定進行編碼。
5.3.4.4 響應報文數據域
響應報文數據域不存在。
5.3.4.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的警告狀態碼如表5-14所示:
表5-14 EXTERNAL AUTHENTICATION警告狀態
SW1 | SW2 | 含 義 |
‘63’ | ‘Cx’ | 鑑別失敗,x表示允許繼續嘗試的次數(‘0’-‘F’) |
IC卡可能回送的錯誤狀態碼如表5-15所示:
表5-15 EXTERNAL AUTHENTICATION錯誤狀態
SW1 | SW2 | 含 義 |
‘67’ | ‘00’ | Lc不正確 |
‘69’ | ‘83’ | 鑑別方法鎖定 |
‘69’ | ‘84’ | 引用數據無效 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘6A’ | ‘86’ | 參數P1 P2不正確 |
‘6A’ | ‘88’ | 密鑰未找到 |
5.3.5 GET CHALLENGE命令
5.3.5.1 定義和範圍
GET CHALLENGE命令請求一個用於安全相關過程(例如:安全報文、安全鑑別)的隨機數。
隨機數在使用後失效,不能被下一個命令再次使用。
5.3.5.2 命令報文
GET CHALLENGE命令報文編碼見表5-16:
表5-16 GET CHALLENGE命令報文
代碼 | 值 |
‘00’ | |
INS | ‘84’ |
P1 | ‘00’ |
P2 | ‘00’ |
Lc | 不存在 |
Data | 不存在 |
Le | ‘08’ |
5.3.5.3 命令報文數據域
命令報文數據域不存在。
5.3.5.4 響應報文數據域
響應報文數據域包括隨機數,長度爲8字節。
5.3.5.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-17所示:
表5-17GET CHALLENGE錯誤狀態
SW1 | SW2 | 含 義 |
‘67’ | ‘00’ | Le長度錯 |
‘6A’ | ‘81’ | 不支持此功能 |
‘6A’ | ‘86’ | 參數P1 P2不正確 |
5.3.6 INTERNALAUTHENTICATION命令
5.3.6.1 定義和範圍
INTERNAL AUTHENTICATION命令提供了利用接口設備發來的隨機數和自身存儲的相關密鑰進行數據鑑別的功能。
5.3.6.2 命令報文
INTERNAL AUTHENTICATION命令報文編碼見表5-18:
表5-18 INTERNAL AUTHENTICATION命令報文
代碼 | 值 |
‘00’ | |
INS | ‘88’ |
P1 | ‘00’ |
P2 | ‘00’ |
Lc | ‘11’ |
Data | 鑑別用數據 |
Le | ‘00’ |
INTERNAL AUTHENTICATION命令的參數P1和P2爲‘00’表示無信息,它們的值是事先確定的。
5.3.6.3 命令報文數據域
命令報文數據域的內容是卡片或應用專用的鑑別數據,包含17個字節的數據:
――第1至第8個字節是過程密鑰計算使用的數據,由終端產生;
――第9至第16個字節是鑑別所需的原始信息;
——第17個字節表示密鑰版本。
5.3.6.4 響應報文數據域
響應報文數據域內容是相關的鑑別數據,其值根據《居民健康卡技術規範》第9.7.3章中的規定進行計算。
5.3.6.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的警告狀態碼如表5-19所示:
表5-19 INTERNAL AUTHENTICATION警告狀態
SW1 | SW2 | 含 義 |
‘62’ | ‘81’ | 回送的數據可能有錯 |
IC卡可能回送的錯誤狀態碼如表5-20所示:
表5-20 INTERNAL AUTHENTICATION錯誤狀態
SW1 | SW2 | 含 義 |
‘67’ | ‘00’ | Lc不正確 |
‘68’ | ‘82’ | 不支持安全報文 |
‘69’ | ‘85’ | 不滿足使用條件 |
‘6A’ | ‘80’ | 數據域參數不正確 |
‘6A’ | ‘86’ | 參數P1 P2不正確 |
‘6A’ | ‘88’ | 密鑰未找到 |
5.3.7 READ BINARY命令
5.3.7.1 定義和範圍
READ BINARY命令用於讀取透明文件的內容(或部分內容)。
5.3.7.2 命令報文
READ BINARY命令報文編碼見表5-21
表5-21 READ BINARY命令報文
代碼 | 值 |
‘00’ | |
INS | ‘B0’ |
P1 | 見表5-22 |
P2 | 見表5-22 |
Lc | 不存在 |
Data | 不存在 |
Le | ‘00’或要讀出的數據的長度 |
表5-22定義了命令報文中的引用控制參數:
表5-22 READ BINARY命令引用控制參數
P1 | P2 | 含 義 | ||||||||||||||
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | |
0 | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y | P1′‘0x100’+P2爲要讀的首字節距離文件首字節的偏移量。 |
5.3.7.3 命令報文數據域
命令報文數據域不存在。
5.3.7.4 響應報文數據域
當Le的值爲零時,讀出自要讀的首字節起的256個字節;如果在讀出256個字節前已到達文件最後一個字節,則自要讀的首字節起的全部字節將被讀出。
5.3.7.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的警告狀態碼如表5-23所示:
表5-23 READ BINARY警告狀態
SW1 | SW2 | 含 義 |
‘62’ | ‘81’ | 部分回送的數據可能有錯 |
IC卡可能回送的錯誤狀態碼如表5-24所示:
表5-24 READ BINARY錯誤狀態
SW1 | SW2 | 含 義 |
‘69’ | ‘81’ | 命令與文件結構不相容 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘86’ | 不滿足命令執行的條件(非當前EF) |
‘6A’ | ‘81’ | 不支持此功能 |
‘6A’ | ‘82’ | 未找到文件 |
‘6B’ | ‘00’ | 參數錯誤(偏移地址超出了EF) |
‘6C’ | ‘xx’ | 長度錯誤(Le錯誤;‘xx’爲實際長度) |
5.3.8 READ RECORD命令
5.3.8.1 定義和範圍
READ RECORD命令讀取記錄結構的基本文件中指定的記錄。
IC卡的響應由回送記錄組成。
5.3.8.2 命令報文
READ RECORD命令報文編碼見表5-25:
表5-25 READ RECORD命令報文
記錄號的取值範圍爲‘01’-‘FE’。
表5-26定義了命令報文中的引用控制參數:
表5-26READ RECORD命令引用控制參數
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含 義 |
0 | 0 | 0 | 0 | 0 | 對當前文件進行操作 | |||
1 | 0 | 0 | 讀P1指定的記錄 | |||||
0 | 0 | 0 | 讀具有P1指定的記錄標識符的第一個實例 |
5.3.8.3 命令報文數據域
命令報文數據域不存在。
5.3.8.4 響應報文數據域
所有執行成功的READ RECORD命令的響應報文數據域由讀取的記錄組成。
5.3.8.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的警告狀態碼如表5-27所示:
表5-27 READ RECORD警告狀態
SW1 | SW2 | 含 義 |
‘62’ | ‘81’ | 回送的數據可能有錯 |
IC卡可能回送的錯誤狀態碼如表5-28所示:
表5-28 READ RECORD錯誤狀態
SW1 | SW2 | 含 義 |
‘67’ | ‘00’ | 長度錯誤 |
‘69’ | ‘81’ | 命令與文件結構不相容 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘69’ | ‘86’ | 命令不允許使用(無當前基本文件) |
‘6A’ | ‘81’ | 不支持此功能 |
‘6A’ | ‘82’ | 未找到文件 |
‘6A’ | ‘83’ | 未找到記錄 |
‘6A’ | ‘86’ | 參數P1或P2錯誤 |
5.3.9 SELECT命令
5.3.9.1 定義和範圍
SELECT命令通過文件名或AID、文件標識符來選擇IC卡中的居民健康卡應用環境、DDF或ADF,通過文件標識符來選擇ADF中的AEF。
命令執行成功後,居民健康卡應用環境、DDF或ADF、AEF的路徑被設定。
除選擇AEF外,從IC卡的響應報文應由回送FCI組成。
5.3.9.2 命令報文
SELECT命令報文編碼見表5-29:
表5-29 SELECT命令報文
代碼 | 值 |
‘00’ | |
INS | ‘A4’ |
P1 | 引用控制參數(見表5-30) |
P2 | ‘00’第一個或唯一一個文件實例 ‘02’下一個文件實例 |
Lc | ‘05’-‘10’(使用文件名或AID時)或‘02’(使用文件標識符時)或‘00’ |
Data | 文件名、AID、文件標識符或不存在 |
Le | ‘00’ |
表5-30定義了命令報文中的引用控制參數:
表5-30 SELECT命令引用控制參數
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含 義 |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 用文件標識符選擇MF、DF、EF(數據域=文件標識符或空) |
0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 用文件標識符在當前DF下選擇EF(數據域=EF的文件標識符) |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 通過文件名選擇DF(數據域=DF的文件名) |
如果P1=‘00’並且數據域爲空或等於‘3F00’,該命令將選擇主控文件(MF)。
5.3.9.3 命令報文數據域
命令報文數據域應包括內容見表5-30。
5.3.9.4 響應報文數據域
除選擇AEF外,響應報文中數據域應包括所選擇的居民健康卡應用環境、DDF或ADF的FCI。表5-31到表5-33規定了此定義所用的標誌。《居民健康卡技術規範》不規定FCI中回送的附加標誌。
表5-31定義了成功選擇居民健康卡應用環境後回送的FCI:
表5-31 SELECT居民健康卡應用環境的響應報文(FCI)
標誌 | 值 | 存在方式 | ||
‘6F’ | FCI模板 | M | ||
‘84’ | DF名 | M | ||
‘A5’ | FCI專用模板 | M | ||
‘88’ | 目錄基本文件的SFI | O | ||
表5-32定義了成功選擇DDF後回送的FCI:
表5-32 SELECT DDF的響應報文(FCI)
標誌 | 值 | 存在方式 | ||
‘6F’ | FCI模板 | M | ||
‘84’ | DF名 | M | ||
‘A5’ | FCI專用模板 | M | ||
‘88’ | 目錄基本文件的SFI | O | ||
表5-33定義了成功選擇ADF後回送的FCI:
表5-33SELECT ADF的響應報文(FCI)
標誌 | 值 | 存在方式 | |
‘6F’ | FCI模板 | M | |
‘84’ | DF名 | M | |
5.3.9.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的警告狀態碼如表5-34所示:
表5-34 SELECT警告狀態
SW1 | SW2 | 含 義 |
‘62’ | ‘81’ | 返回的數據中的部分可能已被破壞 |
‘62’ | ‘83’ | 選擇的文件無效 |
‘62’ | ‘84’ | FCI格式與P2指定的不符 |
IC卡可能回送的錯誤狀態碼如表5-35所示:
表5-35 SELECT錯誤狀態
SW1 | SW2 | 含 義 |
‘67’ | ‘00’ | P1 P2與Lc不一致 |
‘6A’ | ‘81’ | 不支持此功能 |
‘6A’ | ‘82’ | 未找到文件 |
‘6A’ | ‘86’ | 參數P1 P2不正確 |
‘93’ | ‘03’ | 應用永久鎖定 |
5.3.10 UPDATE BINARY命令
5.3.10.1 定義和範圍
UPDATE BINARY命令報文使用命令APDU中給定的數據寫入或修改透明結構的基本文件的全部或部分數據。當使用校驗方式更新二進制文件時,如果嘗試次數超過限制時,臨時鎖定當前應用。
5.3.10.2 命令報文
UPDATE BINARY命令報文編碼見表5-36:
表5-36 UPDATE BINARY命令報文
代碼 | 值 |
‘00’或‘04’ | |
INS | ‘D6’ |
P1 | 見表5-37 |
P2 | 見表5-37 |
Lc | 後續數據域的長度 |
Data | 寫入或修改用的數據 |
Le | 不存在 |
表5-37定義了命令報文中的引用控制參數:
表5-37 UPDATE BINARY命令引用控制參數
P1 | P2 | 含 義 | ||||||||||||||
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | |
0 | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y | P1′‘0x100’+P2爲要讀的首字節距離文件首字節的偏移量。 |
5.3.10.3 命令報文數據域
命令報文數據域包括用來寫入或更新原有數據的新數據。
5.3.10.4 響應報文數據域
響應報文數據域不存在。
5.3.10.5 響應報文狀態碼
此命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-38所示:
表5-38 UPDATE BINARY錯誤狀態
SW1 | SW2 | 含 義 |
‘65’ | ‘81’ | 內存失敗(修改失敗) |
‘67’ | ‘00’ | 長度錯誤(Lc域爲空) |
‘69’ | ‘81’ | 命令與文件結構不相容 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘69’ | ‘86’ | 不滿足命令執行的條件(不是當前的EF) |
‘69’ | ‘88’ | 安全報文數據項不正確 |
‘6A’ | ‘80’ | 基本文件標識符錯誤 |
‘6A’ | ‘81’ | 不支持此功能 |
‘6A’ | ‘82’ | 未找到文件 |
‘6B’ | ‘00’ | 參數錯誤(偏移地址超出了EF) |
5.3.11 UPDATE RECORD命令
5.3.11.1 定義和範圍
UPDATE RECORD命令報文用命令APDU中給定的數據添加記錄或更改指定的記錄。當使用校驗方式更新記錄時,如果嘗試次數超過限制時,臨時鎖定當前應用。
UPDATE RECORD命令不能對健康應用的住院信息索引文件記錄和門診信息索引文件記錄進行更新操作。
對線性結構文件來說,只能使用指定記錄號(P1中指定)方式更新記錄。
對循環結構文件來說,只能使用“上一個記錄”命令選項添加或更新記錄,添加或更新後該記錄的記錄號爲1。
5.3.11.2 命令報文
UPDATE RECORD命令報文編碼見表5-39:
表5-39UPDATE RECORD命令報文
代碼 | 值 |
‘00’或‘04’ | |
INS | ‘DC’ |
P1 | 指定的記錄號(‘01’~‘FE’) |
P2 | 見表5-40 |
Lc | 後續數據域的長度 |
Data | 添加的或更新原有記錄的新記錄 |
Le | 不存在 |
表5-40定義了命令報文中的引用控制參數:
表5-40 UPDATE RECORD命令引用控制參數
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含 義 |
0 | 0 | 0 | 0 | 0 | 當前文件 | |||
0 | 1 | 1 | 上一個記錄 | |||||
1 | 0 | 0 | 記錄號在P1中給出 | |||||
其餘值 | RFU |
5.3.11.3 命令報文數據域
命令報文數據域由添加的或更新原有記錄的新記錄組成。
5.3.11.4 響應報文數據域
響應報文數據域不存在。
5.3.11.5 響應報文狀態碼
命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-41所示:
表5-41 UPDATE RECORD錯誤狀態
SW1 | SW2 | 含 義 |
‘65’ | ‘81’ | 內存失敗(修改失敗) |
‘67’ | ‘00’ | 長度錯誤(Lc域爲空) |
‘69’ | ‘81’ | 命令與文件結構不相容 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘69’ | ‘86’ | 不滿足命令執行的條件(不是當前的EF) |
‘69’ | ‘88’ | 安全報文數據項不正確 |
‘6A’ | ‘80’ | 基本文件標識符錯誤 |
‘6A’ | ‘81’ | 不支持此功能 |
‘6A’ | ‘82’ | 未找到文件 |
‘6A’ | ‘83’ | 未找到記錄 |
‘6A’ | ‘84’ | 文件中存儲空間不夠 |
‘6A’ | ‘85’ | Lc與TLV結構不符 |
‘6A’ | ‘86’ | 參數P1或/和P2不正確 |
6.4 5.4 應用命令
5.4.1 ERASE RECORD命令
5.4.1.1 定義和範圍
ERASE RECORD命令專用於擦除居民健康應用的住院信息索引文件記錄和門診信息索引文件記錄。使用安全報文方式擦除,如果嘗試次數超過限制時,臨時鎖定當前應用。
擦除索引文件記錄前,需要獲得文件的擦除權限。
5.4.1.2 命令報文
ERASE RECORD命令報文編碼見表5-42:
表5-42 ERASE RECORD命令報文
表5-43定義了命令報文中的引用控制參數:
表5-43 ERASE RECORD命令引用控制參數
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含 義 |
1 | 0 | 0 | 記錄號在P1中給出 | |||||
其餘值 | RFU |
5.4.1.3 命令報文數據域
命令報文數據域包括根據《居民健康卡技術規範》第9.4.2章中的規定進行編碼的報文鑑別碼(MAC)數據元。
5.4.1.4 響應報文數據域
響應報文數據域不存在。
5.4.1.5 響應報文狀態碼
命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-44所示:
表5-44ERASE RECORD錯誤狀態
SW1 | SW2 | 含 義 |
‘65’ | ‘81’ | 內存失敗(修改失敗) |
‘67’ | ‘00’ | 長度錯誤(Lc域爲空) |
‘69’ | ‘81’ | 命令與文件結構不相容 |
‘69’ | ‘82’ | 不滿足安全狀態 |
‘69’ | ‘85’ | 使用條件不滿足 |
‘69’ | ‘86’ | 不滿足命令執行的條件(不是當前的EF) |
‘69’ | ‘88’ | 安全報文數據項不正確 |
‘6A’ | ‘81’ | 不支持此功能 |
‘6A’ | ‘83’ | 未找到記錄 |
‘6A’ | ‘86’ | 參數P1或/和P2不正確 |
‘6E’ | ‘00’ | CLA錯誤 |
5.4.2 WRITE RECORD命令
5.4.2.1 定義和範圍
WRITE RECORD命令專用於生效居民健康應用的住院信息索引文件記錄和門診信息索引文件記錄,對記錄文件寫入特定值 ‘00H’。使用安全報文方式寫入,如果嘗試次數超過限制時,臨時鎖定當前應用。
寫入索引文件記錄前,需要獲得文件的寫入權限。
5.4.2.2 命令報文
WRITE RECORD命令報文編碼見表5-45:
表5-45WRITE RECORD命令報文
表5-46定義了命令報文中的引用控制參數:
表5-46 WRITE RECORD命令引用控制參數
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含 義 |
1 | 0 | 0 | 記錄號在P1中給出 | |||||
其餘值 | RFU |
5.4.2.3 命令報文數據域
命令報文數據域包括根據《居民健康卡技術規範》第9.4.2章中的規定進行編碼的報文鑑別碼(MAC)數據元。
5.4.2.4 響應報文數據域
響應報文數據域不存在。
5.4.2.5 響應報文狀態碼
命令執行成功的狀態碼是‘9000’。
IC卡可能回送的錯誤狀態碼如表5-47所示:
表5-47WRITE RECORD錯誤狀態