KR20060044484A - 휴대가능한 전자 장치 - Google Patents

휴대가능한 전자 장치 Download PDF

Info

Publication number
KR20060044484A
KR20060044484A KR1020050023237A KR20050023237A KR20060044484A KR 20060044484 A KR20060044484 A KR 20060044484A KR 1020050023237 A KR1020050023237 A KR 1020050023237A KR 20050023237 A KR20050023237 A KR 20050023237A KR 20060044484 A KR20060044484 A KR 20060044484A
Authority
KR
South Korea
Prior art keywords
data
layer data
layer
command
identifier
Prior art date
Application number
KR1020050023237A
Other languages
English (en)
Inventor
사오리 니시무라
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP2004104275A external-priority patent/JP4594639B2/ja
Priority claimed from JP2004258624A external-priority patent/JP4621459B2/ja
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20060044484A publication Critical patent/KR20060044484A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K17/00Methods or arrangements for effecting co-operative working between equipments covered by two or more of main groups G06K1/00 - G06K15/00, e.g. automatic card files incorporating conveying and reading operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

IC 카드(1)는 소정 포맷으로 표현된 하위 계층 데이터가 소정 포맷으로 표현된 상위 계층 데이터에 존재하는 네스트 구조를 갖는 데이터를 저장하는 메모리(15)를 갖는다. IC 카드(1)는 메모리(15)에 저장된 네스트 구조를 갖는 데이터에 관하여 상위 계층 데이터에 존재하는 복수의 하위 계층 데이터 중에서 단지 바람직한 하위 계층 데이터로만 다이렉트 액세스를 제공한다.

Description

휴대가능한 전자 장치{PORTABLE ELECTRONIC DEVICE}
도 1은 본 발명의 일 실시예에 따른 휴대가능한 전자 장치로서 기능하는 IC 카드 및 IC 카드 시스템의 구성을 개략적으로 나타내는 블록도,
도 2는 IC 카드의 구성을 개략적으로 나타내는 블록도,
도 3은 데이터 메모리의 파일 구조를 나타내는 도면,
도 4a는 네스트 구조를 갖는 데이터의 구성의 일 예를 나타내는 도면,
도 4b는 네스트 구조를 갖는 데이터의 구성의 일 예를 나타내는 도면,
도 4c는 네스트 구조를 갖는 데이터의 구성의 일 예를 나타내는 도면,
도 5는 데이터 관리 정보를 나타내는 도면,
도 6은 제어 정보에 의해 표시되는 데이터 포맷을 나타내는 도면,
도 7은 네스트 구조를 갖는 데이터의 판독을 요청하는 판독 명령의 구성을 나타내는 도면,
도 8은 네스트 구조를 갖는 데이터를 판독하는 처리의 흐름을 나타내는 흐름도,
도 9는 네스트 구조를 갖는 데이터플 판독하는 처리의 흐름을 나타내는 흐름도,
도 10은 데이터 주소와 데이터 길이 관리 정보 사이의 일치를 확인하는 처리 를 나타내는 도면,
도 11은 네스트 구조를 갖는 데이터의 변경을 요청하는 데이터 변경 명령의 구성을 나타내는 도면,
도 12는 네스트 구조를 갖는 데이터를 변경하는 처리의 흐름을 나타내는 흐름도,
도 13은 네스트 구조를 갖는 데이터를 변경하는 처리의 흐름을 나타내는 흐름도,
도 14는 네스트 구조를 갖는 데이터를 변경하는 처리의 흐름을 나타내는 흐름도,
도 15의 (a)는 네스트 구조를 갖는 데이터를 변경하는 처리를 나타내는 도면,
도 15의 (b)는 네스트 구조를 갖는 데이터를 변경하는 처리를 나타내는 도면,
도 15의 (c)는 네스트 구조를 갖는 데이터의 변경하는 처리를 나타내는 도면,
도 15의 (d)는 네스트 구조를 갖는 데이터의 변경하는 처리를 나타내는 도면,
도 16a는 동일한 식별자를 갖는 복수의 제 2 계층 데이터가 제 1 계층 데이터에 포함되는 네스트 구조를 갖는 데이터의 구성의 일 예를 나타내는 도면,
도 16b는 동일한 식별자를 갖는 복수의 제 2 계층 데이터가 제 1 계층 데이 터에 포함되는 네스트 구조를 갖는 데이터의 구성의 일 예를 나타내는 도면,
도 17은 시퀀스를 특정하고 네스트 구조를 갖는 데이터의 판독을 요청하는 시퀀스 특정 판독 명령의 구성을 나타내는 도면,
도 18은 시퀀스 특정 판독 명령에 응답하는 응답 데이터의 구성을 나타내는 도면,
도 19는 시퀀스가 특정되는 네스트 구조를 갖는 데이터를 판독하는 처리의 흐름을 나타내는 흐름도,
도 20은 시퀀스가 특정되는 네스트 구조를 갖는 데이터를 판독하는 처리의 흐름을 나타내는 흐름도,
도 21은 시퀀스가 특정되는 네스트 구조를 갖는 데이터를 판독하는 처리의 흐름을 나타내는 흐름도,
도 22의 (a)는 네스트 구조를 갖는 데이터를 삭제하는 처리를 나타내는 도면,
도 22의 (b)는 네스트 구조를 갖는 데이터를 삭제하는 처리를 나타내는 도면,
도 22의 (c)는 네스트 구조를 갖는 데이터를 삭제하는 처리를 나타내는 도면,
도 23은 네스트 구조를 갖는 데이터의 삭제를 요청하는 삭제 명령의 구성을 나타내는 도면,
도 24는 네스트 구조를 갖는 데이터를 삭제하는 처리의 흐름을 나타내는 흐 름도,
도 25는 네스트 구조를 갖는 데이터를 삭제하는 처리의 흐름을 나타내는 흐름도,
도 26은 네스트 구조를 갖는 데이터를 삭제하는 처리의 흐름을 나타내는 흐름도,
도 27의 (a)는 네스트 구조를 갖는 데이터를 추가로 쓰는 처리를 나타내는 도면,
도 27의 (b)는 네스트 구조를 갖는 데이터를 추가로 쓰는 처리를 나타내는 도면,
도 28은 네스트 구조를 갖는 데이터의 추가 쓰기를 요청하는 추가 쓰기 명령의 구성을 나타내는 도면,
도 29는 네스트 구조를 갖는 데이터를 추가로 쓰는 처리의 흐름을 나타내는 흐름도,
도 30은 네스트 구조를 갖는 데이터에 대한 탐색을 요청하는 탐색 명령의 구성을 나타내는 도면,
도 31은 탐색 명령에 응답하는 응답 데이터의 구성을 나타내는 도면,
도 32는 응답 데이터를 저장하는 응답 데이터 메모리의 구성의 일 예를 나타내는 도면,
도 33은 네스트 구조를 갖는 데이터를 탐색하는 처리의 흐름을 나타내는 흐름도,
도 34는 네스트 구조를 갖는 데이터를 탐색하는 처리의 흐름을 나타내는 흐름도,
도 35는 네스트 구조를 갖는 데이터의 구조의 출력을 요청하는 데이터 출력 명령의 구성을 나타내는 도면,
도 36은 데이터 출력 명령에 응답하는 응답 데이터의 구성을 나타내는 도면,
도 37은 네스트 구조를 갖는 데이터의 구조를 출력하는 처리의 흐름을 나타내는 흐름도, 및
도 38은 네스트 구조를 갖는 데이터의 구조를 출력하는 처리의 흐름을 나타내는 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
1 : IC 카드 2 : 리더/라이터
3 : PC 4 : 공중 통신망
5 : 정보 센터 6 : 컴퓨팅부
6a: CPU 6b: 메모리
7 : 디스플레이부 8 : 키보드
9 : 하드 디스크 F1: 전자 데이터 파일 1
F2: 전자 데이터 파일 2 F3: 전자 데이터 파일 3
본 발명은 외부 장치로부터 제공된 지시 데이터에 응답하여 다양한 처리를 실행하는 IC 카드와 같은 휴대가능한 전자 장치에 관한 것이다.
예컨대, 최근 IC 카드는 휴대가능한 전자 장치로서 실제 사용되고 있다. 상기 IC 카드는 데이터의 쓰기 및 재쓰기가 가능한 비휘발성 메모리, 제어 구성요소, 외부 장치와 통신하는 인터페이스, 및 그와 유사한 것을 갖는다.
이러한 IC 카드는 복수의 애플리케이션 프로그램이 하나의 IC 카드에서 유지될 수 있는 장점을 갖는다. 즉, 캐쉬 카드, 개인 인증용 IC 카드, 및 선불 카드와 같은 복수의 기능이 하나의 IC 카드에서 실행될 수 있다. 복수의 기능을 갖는 이러한 IC 카드에서, 각 기능을 동작시키는데 필요한 애플리케이션 및 데이터는 애플리케이션 기반에 의한 애플리케이션의 파일 포맷으로 비휘발성 메모리에 저장된다.
부가적으로, IC 카드는 외부 장치로부터의 지시(명령)에 따른 다양한 처리를 실행한다. 그러므로, IC 카드는 외부 장치로부터의 명령에 따라 파일(애플리케이션)을 선택하고, 다양한 처리를 실행한다. 일반적으로, IC 카드에 구비된 비휘발성 메모리에 저장되는 데이터는 식별자(태그), 데이터 길이(길이), 및 데이터 값(값)으로 이루어진 형태로 저장된다. 따라서, IC 카드에서, 명령에 의해 특정된 태그에 기초하여 액세스(판독, 추가, 재쓰기, 및 삭제) 또는 그와 유사한 것을 제공하는 것이 가능하다.
그러나, IC 카드에 구비된 메모리에 저장되는 약간의 데이터는 네스트(nest) 구조를 갖는다. 예컨대, ISO/IEC 7816-4 Annex. D에서, 구조화된 태그 필드는 네스트 구조를 갖는 데이터의 일예로서 정의된다. 네스트 구조를 갖는 이같은 데이 터는, 특정 데이터 형태로 존재하는 데이터에 직접 액세스를 할 수 없는 문제를 갖는다. 예컨대, 종래의 IC 카드에서는, 복수의 제 2 계층 데이터가 제 1 계층 데이터에 존재하는 경우, 제 2 계층 데이터에 직접 액세스를 할 수 없는 문제가 존재한다.
본 발명의 목적은 네스트 구조를 갖는 데이터에 액세스를 효율적으로 제공할 수 있는 휴대가능한 전자 장치를 제공하는 것이다.
본 발명에 따르면, 복수의 하위 계층 데이터가 상위 계층 데이터에 존재하는 네스트(nest) 구조를 갖는 데이터를 저장하는 메모리와, 상기 메모리에 저장된 네스트 구조를 갖는 상기 데이터에 관하여 상기 상위 계층 데이터에 존재하는 상기 복수의 하위 계층 데이터 중에서 단지 특정 하위 계층 데이터로만 다이렉트 액세스를 제공하는 제어부를 포함하는 것을 특징으로 하는 휴대가능한 전자 장치가 제공된다.
본 발명의 추가적인 목적 및 장점은 이하의 상세한 설명에서 설명될 것이고, 부분적으로 상세한 설명으로부터 명백해질 것이며, 또한 본 발명의 실행에 의해 학습될 수 있을 것이다. 본 발명의 목적 및 장점은 이하에서 특히 지적되는 수단 및 조합에 의해 실현되고 얻어질 수 있다.
이하, 본 발명의 바람직한 실시예들이 첨부된 도면을 참조하여 설명될 것이다.
도 1은 본 발명의 일 실시예에 따른 휴대가능한 전자 장치로서 기능하는 IC 카드 및 상기 IC 카드를 사용하는 IC 카드 시스템의 구성을 개략적으로 나타낸다.
도 1에서, 이 IC 카드 시스템은 리더/라이터(2), 개인용 컴퓨터(3)(이하에서는, 간략히 "PC"로서 참조됨), 공중 통신망(4), 및 정보 센터(5)로 이루어진다. 또한, IC 카드 시스템에서, IC 카드(1)와 리더/라이터(2)를 서로 접촉시킴으로써 데이터 통신을 하는 IC 카드(접촉식 IC 카드) 및 IC 카드(1)와 리더/라이터(2)를 서로 접촉하지 않고 무선 통신을 통해 데이터 통신을 하는 IC 카드(비접촉식 IC 카드)에 적용될 수 있다.
상기 리더/라이터(2)는 IC 카드(1)로부터 데이터를 판독하거나 또는 IC 카드(1)에 데이터를 쓰는 외부 장치로서 제공된다. 리더/라이터(2)는 호스트 장치로서 기능하는 개인용 컴퓨터(PC)에 연결된다. PC(3)는 인터넷, 공중 전화망, 또는 ISDN과 같은 공중 통신망(4)을 통해 외부 정보 센터(5)에 연결하는 기능을 갖는다.
상기 PC(3)는 또한 컴퓨팅부(6), 디스플레이(7), 키보드(8), 하드 디스크(HDD)(9), 및 그와 유사한 것을 갖는다. 컴퓨팅부(6)는 CPU(6a) 및 메모리(6b) 등을 갖는다. CPU(6a)는 PC(3)의 전체 동작을 제어한다. CPU(6a)는 메모리(6b) 또는 그와 유사한 것에 저장된 제어 프로그램에 따라 다양한 처리를 실행한다. 메모리(6b)는 메인 저장 장치로서 기능한다.
디스플레이(7)는 디스플레이 수단으로서 기능한다. 예컨대, 디스플레이(7)는 동작 순서 또는 동작 상태를 조작자에게 통지한다. 키보드(8)는 입력 수단으로서 기능한다. 예컨대, 키보드(8)는 조작자에 의해 동작되고 입력된다. 하드 디스 크 장치(HDD)(9)는 저장 수단으로서 기능한다. 비밀 정보가 되는 복수의 파일은 하드 디스크(9)에 저장된다. 예컨대, 하드 디스크 장치(9)에 저장되는 비밀 정보는 예컨대 제 1 전자 데이터 파일(F1), 제 2 전자 데이터 파일(F2), 및 제 3 전자 데이터 파일(F3)을 포함한다. 상기한 것과 같이 구성된 PC(3)에서, 다양한 데이터의 교환(전송 및 수신)은 리더/라이터(2)를 통해 PC(3) 및 IC 카드(1) 사이에서 실행된다.
리더/라이터(2)는 IC 카드(1)의 통신 모드에 따라 통신하는 기능을 갖는다. 리더/라이터(2)는 내부 메모리 및 통신부(도시 안됨)을 갖는다. 리더/라이터(2)는 리더/라이터(2)와 IC 카드(1) 사이의 데이터 전송 및 수신에 의해 IC 카드(1)로부터 데이터를 판독하거나 또는 IC 카드(1)에 데이터를 쓴다.
예컨대, IC 카드가 물리적인 접촉이 이루어지는 접촉부를 통해 데이터 통신을 하는 IC 카드(접촉식 IC 카드)인 경우, 리더/라이터(2)는 IC 카드(1)의 접촉부와 접촉하여 데이터 통신을 하는 기능을 갖는다. 추가로, IC 카드(1)가 접촉식 IC 카드인 경우, 리더/라이터(2)는 IC 카드(1)를 삽입하는 IC 카드 삽입부(도시 안됨)가 제공되고, 리더/라이터(2)는 IC 카드 삽입부로 삽입되는 IC 카드의 접촉부와 접촉하도록 제공된다.
더욱이, IC 카드는 임의의 물리적인 접촉 없이 무선 통신을 통해 데이터 통신을 하는 IC 카드(비접촉식 IC 카드)인 경우, 리더/라이터(2)는 IC 카드(1)와 무선 데이터 통신을 하는 기능을 갖는다. 또한, IC 카드가 비접촉식 IC 카드인 경우, 리더/라이터(2)는 비접촉식 IC 카드와 무선 통신을 위한 무선파를 전송 및 수 신하는 통신부가 제공된다.
그다음, IC 카드(1)의 구성이 여기에서 설명될 것이다.
도 2는 IC 카드의 구성의 일 예를 개략적으로 나타내는 도면이다.
도 2에 도시된 바와 같이, IC 카드(1)는 마그네틱선부(11), 통신부(12), 및 하나(또는 복수의) IC 칩(13)으로 이루어진다.
마그네틱선부(11)는 카드 표면 상에 제공된다. 데이터는 마그네틱선부(11)에 자기적으로 저장된다.
통신부(12)는 리더/라이터(2)와 데이터 교환을 위한 수신 수단 및 출력 수단으로서 기능한다.
IC 카드(1)가 비접촉식 IC 카드(1)로서 제공되는 경우, 통신부(12)는 무선파를 전송 및 수신하는 안테나부, 전송 데이터를 변조하고 안테나부에 의해 변조된 데이터를 출력하는 변조회로, 안테나부에 의해 수신된 무선파(변조파)를 복조하는 복조회로, 및 그와 유사한 것으로 이루어진다. 이 경우에, 통신부(12)는 수신된 변조파로부터 IC 칩(13) 내에 구비된 각 부에 제공되는 전력 및 동작 클럭을 생성한다.
IC 카드(1)가 접촉식 IC 카드로서 제공되는 경우, 통신부(12)는 접촉부 및 통신제어회로 등으로 이루어진다. 이 경우에, 통신부(12)는 IC 카드(1)를 리더/라이터(2)에 제공된 접촉 단말부(도시 안됨)와 접촉함으로써 리더/라이터(2)로부터 전력 및 동작 클럭을 얻는다.
IC 칩(13)은 칩이 통신부(12)와 연결되는 상태로 IC 카드 메인 몸체에 설치 된다. 도 2에 도시된 바와 같이, IC 칩(13)은 데이터 메모리(15), 작업 메모리(16), 프로그램 메모리(17), 및 그와 유사한 것을 갖는다.
CPU(14)는 제어 구성요소로서 기능한다. 예컨대, CPU(14)는 프로그램 메모리(17)에 저장된 제어 프로그램 또는 그와 유사한 것에 따라 다양한 처리를 실행한다. 예컨대, CPU(14)는 이하에서 설명되는 파일 선택 처리 동작을 실행하고 식별 처리 또는 판정 처리, 데이터 메모리(15)로의 데이터 쓰기, 및 데이터 메모리(15)로부터 데이터 판독과 같은 다양한 처리를 실행한다.
데이터 메모리(15)는 데이터의 재쓰기가 가능한 비휘발성 메모리로 제공된다. 예컨대, 이 데이터 메모리는 EEPROM(electrically erasable and programmable read only memory) 또는 플래쉬 ROM과 같은 데이터의 재쓰기가 가능한 비휘발성 저장 구성요소로 이루어진다. 애플리케이션 데이터와 같은 다양한 데이터는 데이터 메모리(15)에 저장된다.
예컨대, 작업 메모리(16)는 RAM과 같은 비휘발성 메모리로 이루어진다. 작업 메모리(16)는 처리되는 데이터를 임시적으로 유지하기 위해 CPU(14)를 위한 작업 메모리로서 기능한다.
프로그램 메모리(17)는 재쓰기 불가능한 비휘발성 메모리로서 제공된다. 예컨대, 이 프로그램 메모리는 마스크 ROM과 같은 재쓰기-불가능한 저장 구성요소로 이루어진다. 프로그램 메모리(17)는 CPU(14)에 의해 실행되는 다양한 제어 프로그램을 저장한다. 예컨대, 프로그램 메모리(17)는 리더/라이터(2)로부터 명령을 처리하는 것과 같이 IC 카드(1)의 각각의 기본 기능을 달성하는 제어 프로그램을 저 장한다.
그다음, 데이터 메모리(15)에 저장된 데이터의 파일 구조는 여기서 설명될 것이다.
도 3은 데이터 메모리(15)의 파일 구조의 일 예를 나타내는 도면이다.
도 3에 나타난 바와 같이, 데이터 메모리(15)는 파일 포맷으로 다양한 데이터를 저장한다. 도 3에 도시된 것과 같은 파일 구조는 ISO/IEC 7816-4에 기초한다. 도 3에 도시된 파일 구조는 다양한 폴더 형태를 갖는 디렉토리의 트리 구조로서 제공된다. 도 3에 도시된 파일 구조에 따르면, 데이터 메모리(15)는 복수의 애플리케이션에 관련된 데이터를 저장한다.
예컨대, IC 카드(1)가 크레디트 카드, 포인트 카드, 및 ID 카드와 같이 복수의 기능을 갖는 카드로서 사용되는 경우, 데이터 메모리(15)는 크레디트 카드로서 기능하는 애플리케이션, 포인트 카드로서 기능하는 애플리케이션, 및 ID 카드로서 기능하는 애플리케이션과 같은 복수의 애플리케이션에 관련된 데이터를 저장한다.
또한, 도 3에 도시된 바와 같이, 데이터 메모리(15)는 MF(Master File)(21)가 정상 위치에 제공되고, DF(Dedicatd File)(22), DF(23), 및 DF(24)가 MF(21) 하위에 제공되고, 및 EF(Elementary File)(25), EF(26), EF(27), 및 EF(28)가 이들 DF(22), DF(23), 및 DF(24)의 각각 하위에 제공되도록 구성된다. 또한, MF(21) 하위에는, IC 카드(1)에 대한 액세스 허용을 설정하는 키 정보 또는 그와 유사한 것을 저장하는데 사용되는 키 EF(29)가 또한 제공된다.
상기 DF(22), DF(23), 및 DF(24)는 각 애플리케이션에 대해 설정된 폴더로서 제공된다. 그러므로, 상기 DF(22), DF(23), 및 DF(24)는 IC 카드(1)에 설치된 애플리케이션의 개수에 상응하는 개수로 제공된다.
상기 EF(25), EF(26), EF(27), 및 EF(28)은 애플리케이션에서 실제로 사용된 사용자 데이터와 같은 데이터를 저장하는 파일로서 제공된다. 또한, EF(25), EF(26), EF(27), 및 EF(28) 각각은 상위 DF(22), DF(23), 및 DF(24)에 각각 상응하는 애플리케이션에 관련된 데이터를 저장하는 파일로서 제공된다.
예컨대, 도 3에 도시된 예에서, EF(25) 및 EF(26)은 DF(22)에 의해 정의된 애플리케이션에 관련된 데이터가 저장되는 파일로서 제공된다. EF(27) 및 EF(28)은 EF(23)에 의해 정의된 애플리케이션에 관련된 데이터가 저장되는 파일로서 제공된다.
본 실시예에서, 도 3에 나타난 바와 같이, 상세한 설명은 데이터 메모리(15)가 회사 X의 크레디트 카드(회사 X 지향 애플리케이션)로서 기능하는 IC 카드(1)용 애플리케이션, 회사 A의 포인트 카드(회사 A 지향 애플리케이션)로서 기능하는 IC 카드(1)용 애플리케이션, 및 회사 B의 포인트 카드(회사 B 지향 애플리케이션)로서 기능하는 IC 카드(1)용 애플리케이션을 저장한다는 가정으로 제공될 것이다.
도 3에 도시된 예에서, DF(22)(이하에서는, DF1으로서 참조됨)는 회사 X 지향 애플리케이션을 저장하는 폴더로서 설정된다. 예컨대, DF(22)에서 파일 네임으로서 기능하는 DF는 "크레디트 회사 X"로서 설정된다. 더욱이, DF(22) 하위에는, 두개의 파일, 즉 EF25(이하에서는, EF1-1로서 참조됨) 및 EF(26)(이하에서는, EF1-2로서 참조됨)은 회사 X 지향 애플리케이션에 관련된 데이터를 저장하는 파일로서 존재한다.
DF(23)(이하에서는, DF2로서 참조됨)는 회사 A 지향 애플리케이션을 저장하는 필터로서 설정된다. 예컨대, DF(23)에서 파일 네임으로서 기능하는 DF 네임은 "포인트 회사 A"로서 설정된다. DF(23) 하위에는, 두개의 파일 즉 EF(27)(이하에서는, EF2-1로서 참조됨) 및 EF(28)(이하에서는, EF2-2로서 참조됨)가 회사 A 지향 애플리케이션에 관한 데이터를 저장하는 파일로서 존재한다.
또한, DF(24)(이하에서는, DF3으로서 참조됨)는 회사 B 지향 애플리케이션을 저장하는 필터로서 설정된다. 예컨대, DF(24)에서, 파일 네임으로서 기능하는 DF 네임은 "포인트 회사 B"로서 설정된다.
이제부터, 데이터 메모리(15)에 저장된 네스트 구조를 갖는 데이터의 구성이 여기서 설명될 것이다.
데이터 메모리(15)는 네스트 구조를 갖는 데이터를 저장할 수 있다. 여기서 사용된 네스트 구조를 갖는 데이터는 제 2 계층(하위 계층) 데이터가 제 1 계층(상위 계층) 데이터 내에 존재하도록 구성된 데이터를 나타낸다. 현 실시예에서, 제 1 계층 데이터 및 제 2 계층 데이터는 유사한 표현의 포맷으로 구성된다. 제 1 계층 데이터 및 제 2 계층 데이터는 식별자(태그), 데이터 길이(길이), 및 데이터 값(값)이 순서대로 배열되게끔 생성된다. 식별자(태그)는 데이터를 식별하는 정보로서 제공된다. 데이터 길이(길이)는 데이터의 데이터 값(값)의 크기(길이)를 나타내는 정보로서 제공된다. 데이터 값(값)은 데이터의 메인 부분으로서 제공된다.
도 4a, 도 4b 및 도 4c는 각각 네스트 구조를 갖는 데이터의 일 예를 나타내 는 도면이다. 예컨대, 도 4a, 도 4b 및 도 4c에 나타난 구조를 갖는 데이터는 "EF"에 저장된 데이터의 일 예를 나타낸다.
여기 도 4a, 도 4b 및 도 4c에서, 회사 A 지향 애플리케이션에 관련된 데이터는 "EF2-2"에 저장되는 것으로 가정된다. 또한, 회사 A 애플리케이션은 복수 형태의 포인트(포인트 X, Y, 및 Z)에 관한 복수의 데이터를 관리한다. 포인트는 회사 A 지향 애플리케이션에 의해 제공된 서비스의 이용 상태에 따라서 변경되는 데이터가 되는 것으로 가정된다.
도 4a는 포인트 X의 데이터(100)의 구성의 일 예를 나타낸다.
포인트 X의 데이터(제 1 계층 데이터)(100)는 식별자(태그), 데이터 길이(길이), 및 데이터 값(값)으로 이루어진다. 도 4a에 도시된 것과 같은 포인트 X 데이터(100)는 데이터(100)의 식별자로서 기능하는 식별자("E1")(101), 데이터(100)의 데이터 길이로서 기능하는 데이터 길이(102), 및 데이터(100)의 값으로서 기능하는 값(112)으로 이루어진다. 데이터 길이(102)는 값(112)의 데이터 길이를 나타낸다.
포인트 X의 값(112)은 제 2 계층 데이터로서 기능하는 데이터(113), 데이터(114), 및 데이터(115)로 이루어진다. 이러한 항목의 데이터(제 2 계층 데이터)(113, 114, 및 115)는 상기 데이터(제 1 계층 데이터)(100)와 유사한 데이터의 표현 포맷으로 이루어진다. 즉, 데이터(113, 114, 및 115)는 각각 식별자(태그), 데이터 길이(길이), 및 데이터 값(값)으로 이루어진다.
데이터(113)는 포인트 X의 포인트 값을 나타내는 데이터로서 제공된다. 도 4a에 나타난 것과 같이, 데이터(113)는 데이터(113)의 데이터 길이로서 기능하는 데이터 길이(104)와 데이터(113)의 값으로서 기능하는 값(105)로 이루어진다.
데이터(114)는 포인트 X의 상위 한계값을 나타내는 데이터로서 제공된다. 도 4a에 나타난 바와 같이, 데이터(114)는 데이터(114)의 식별자로서 기능하는 식별자("DF02"), 데이터(114)의 데이터 길이로서 기능하는 데이터 길이(107), 및 데이터(114)의 값으로서 기능하는 값(108)로 이루어진다.
데이터(115)는 포인트 X의 최종 업데이트 날짜를 나타내는 데이터로서 제공된다. 도 4에 나타난 바와 같이, 데이터(115)는 데이터(115)의 식별자로서 기능하는 식별자("DF03"), 데이터(115)의 데이터 길이로서 기능하는 데이터 길이(110), 및 데이터(115)의 값으로서 기능하는 값(111)로 이루어진다.
도 4a에 도시된 것과 같은 데이터 구조는 네스트 구조로서 참조된다. 즉, 네스트 구조를 갖는 데이터는 소정 포맷(도 4a의 예에서의 데이터(100))의 제 1 계층 데이터 내에, 유사한 포맷의 제 2 계층 데이터(도 4a의 예에서의 데이터(113, 114, 및 115))가 포함되도록 구성된 데이터를 나타낸다.
도 4b는 포인트 Y의 데이터(120)의 구성의 일 예를 나타낸다.
포인트 Y의 데이터(제 1 계층 데이터)(120)은 포인트 Y와 관련된 데이터로서 제공된다. 도 4b에 도시된 것과 같이, 데이터(120)는 데이터(120)의 식별자로서 기능하는 식별자("E2")(121), 데이터(120)의 데이터 길이로서 기능하는 데이터 길이(122), 및 데이터(120)의 값으로서 기능하는 값(123)으로 이루어진다.
또한, 포인트 Y의 값(123)은 제 2 계층 데이터로서 기능하는 데이터(127) 및 데이터(131)로 이루어진다. 데이터(제 2 계층 데이터)(127 및 131) 각각은 데이터 (제 1 계층 데이터)(120)와 유사한 데이터 표현 포맷으로 구성된다. 즉, 포인트 Y에 관련된 데이터(120)는 또한 도 4b에 도시된 것과 같은 네스트 구조를 갖는다.
데이터(127)는 포인트 Y의 포인트 값을 나타내는 데이터로서 제공된다. 도 4b에 도시된 것과 같은 데이터(127)는 데이터(127)의 식별자로서 기능하는 식별자("DF01")(124), 데이터(127)의 데이터 길이로서 기능하는 데이터 길이(125), 및 데이터(127)의 값으로서 기능하는 값(126)으로 이루어진다.
데이터(131)는 포인트 Y의 상위 한계 값을 나타내는 데이터로서 제공된다. 데이터(131)는 데이터(131)의 식별자로서 기능하는 식별자("DF02")(128), 데이터(131)의 데이터 길이로서 기능하는 데이터 길이(129), 및 데이터(131)의 값으로서 기능하는 값(130)으로 이루어진다.
도 4c는 포인트 Z의 데이터(140)의 구성의 일 예를 나타낸다.
포인트 Z의 데이터(제 1 계층 데이터)(140)은 포인트 Z와 관련된 데이터로서 제공된다.
도 4c에 도시된 것과 같이, 포인트 Z의 데이터(140)는 데이터(140)의 식별자로서 기능하는 식별자("E2")(141), 데이터(140)의 데이터 길이로서 기능하는 데이터 길이(142), 및 데이터(140)의 값으로서 기능하는 값(143)으로 이루어진다.
또한, 포인트 Z의 값(143)은 데이터(147), 데이터(151), 및 제 2 계층 데이터로서 기능하는 데이터(155)로 이루어진다. 데이터(제 2 계층 데이터)(147, 151 및 155) 각각은 데이터(제 1 계층 데이터)(140)와 유사한 데이터 표현 포맷으로 구성된다. 즉, 포인트 Z의 데이터(140)는 또한 도 4c에 도시된 것과 같은 네스트 구 조를 갖는다.
데이터(147)는 포인트 Z의 포인트 값을 나타내는 데이터로서 제공된다. 데이터(147)는 도 4c에 도시된 것과 같이 데이터(147)의 식별자로서 기능하는 식별자("DF01")(144), 데이터(147)의 데이터 길이로서 기능하는 데이터 길이(145), 및 데이터(147)의 값으로서 기능하는 값(146)으로 이루어진다.
데이터(151)는 포인트 Z의 상위 한계 값을 나타내는 데이터로서 제공된다. 데이터(151)는 도 4c에 나타난 바와 같이, 데이터(151)의 식별자로서 기능하는 식별자("DF02")(148), 데이터(151)의 데이터 길이로서 기능하는 데이터 길이(159), 및 데이터(151)의 값으로서 기능하는 값(150)으로 이루어진다.
데이터(155)는 포인트 Z의 최종 업데이트 날짜를 나타내는 데이터로서 제공된다. 데이터(155)는 도 4c에 나타난 바와 같이, 데이터(155)의 식별자로서 기능하는 식별자("DF03")(152), 데이터(155)의 데이터 길이로서 기능하는 데이터 길이(153), 및 데이터(155)의 값으로서 기능하는 값(154)으로 이루어진다.
이제부터, 데이터 메모리(15)에 포함된 데이터 관리 정보가 여기서 설명될 것이다.
도 5는 데이터 메모리(15)에 저장되는 데이터 관리 정보의 일 예를 나타낸다.
도 5에 도시된 바와 같이 데이터 관리 정보는 데이터 판독, 데이터 재쓰기, 또는 데이터의 탐색을 위한 관리 정보로서 제공된다. 데이터 메모리(15)에 포함된 데이터는 상기 데이터 관리 정보에 기초하여 액세스되도록 제어된다. 더욱이, 네 스트 구조를 갖는 데이터는 제 1 계층 데이터의 각 항목에 대해 관리된다.
도 5에 도시된 데이터 관리 정보는 데이터 항목 개수 영역(200), 제어 정보 영역(201), 및 자유 공간(202)으로 이루어진다. 데이터 항목 번호 영역(200)은 데이터 항목의 개수(제어 정보 항목의 개수)를 나타내는 정보를 저장한다. 제어 정보 영역(201)은 항목 개수가 데이터 항목의 개수(네스트 구조를 갖는 데이터에 대한 제 1 계층 데이터)에 상응하는 제어 정보(201a,...)를 저장한다.
또한, 제어 정보 영역(201)에 포함된 제어 정보(201a,...)의 각 항목은 데이터(네스트 구조를 갖는 데이터에 대한 제 1 계층 데이터)의 각 항목과 연관되도록 제공된다. 제어 정보(201a,...)의 각 항목은 상응하는 데이터를 제어하는 정보로 이루어진다. 도 5에 도시된 일 예에서, 제어 정보(201a,...)의 각 항목은 데이터 식별자 정보(210), 설정 주소 정보(211), 설정가능한 크기 정보(212), 및 보안 조건 정보(213)로 이루어진다.
데이터 식별자 정보(210)은 제어 정보(201a,...)에 상응하는 데이터의 식별자를 나타내는 정보로서 제공된다. 네스트 구조를 갖는 데이터에 관하여, 데이터 식별자 정보(210)는 제 1 계층 데이터의 식별자로서 제공된다. 이 데이터 식별자 정보(210)는 액세스되는 데이터를 특정하는데 사용된다. 예컨대, 명령으로 리더/라이터(2)로부터 액세스되는 데이터가 식별자에 의해 특정되는 경우, IC 카드(1)는 명령이 특정된 식별자와 제어 정보(201a,...)의 각 아이템과 같은 데이터 식별자 정보(210)를 비교하고, 이에 의해 특정된 데이터에 대한 탐색을 한다.
설정 주소 정보(211)는 데이터가 할당되는 주소를 나타내는 정보로서 제공된 다. 즉, 설정 주소 정보는 제어 정보(201a,...)에 상응하는 데이터가 IC 카드(1)의 데이터 메모리(15)의 어떤 주소에 할당되는가를 나타낸다.
설정가능한 크기 정보(212)는 허용가능한 데이터 크기를 나타내는 정보로서 제공된다. 즉, 설정가능한 크기 정보(212)는 제어 정보(201a,...)에 상응하는 데이터로서 설정될 수 있는 크기를 나타낸다. 바꾸어 말하면, 제어 정보(201a,...)에 상응하는 데이터는 데이터가 설정가능한 크기 정보(212)에 설정된 크기의 범위 내에 있는한 변경될 수 있다.
보안 조건 정보(213)는 제어 정보(201a,...)에 상응하는 데이터에 대한 보안 조건을 나타내는 정보로서 제공된다. 보안 조건 정보는 데이터의 판독 또는 재쓰기의 경우, 데이터에 대한 액세스를 제공하기 위해 필요한 보안 조건으로서 제공된다.
예컨대, 데이터 관리 정보는 일본 특허출원 공개공보 제11-282989호에서 상세히 설명된다.
도 6은 상기 제어 정보(201a, 201b,...)에 의해 제어되는 네스트 구조를 갖는 데이터 포맷의 일 예를 나타낸다.
도 6에 도시된 데이터는 상응하는 제어 정보(201a, 201b,...)의 설정 주소 정보(211)에 의해 표시된 데이터 메모리(15) 상의 주소에 저장된다. 도 6에서, 데이터 길이 정보(220)는 제 1 계층 데이터 값(값)의 데이터 길이를 나타내는 관리 정보로서 제공된다. 데이터(221)는 제 1 계층 데이터 값(값)의 일부로서 제공된다. 데이터 유효성 관리 정보(222) 제 1 계층 데이터의 유효성을 식별하는 관리 정보로서 제공된다. 예컨대, 데이터의 유효성은 데이터(데이터 길이 관리 정보)(220) 및 데이터(데이터 유효성 관리 정보)(221)의 배타적 논리합 또는 그와 유사한 것에 의해 확인된다.
그다음, 상기에서 설명한 것과 같이 구성된 IC 카드(1)의 네스트 구조를 갖는 데이터에 대한 다양한 처리에 관하여 상세한 설명이 이루어질 것이다.
먼저, 네스트 구조를 갖는 제 1 계층 데이터에 포함된 제 2 계층 데이터를 판독하는 처리에 관하여 상세한 설명이 이루어질 것이다.
도 7은 IC 카드(1)용 네스트 구조를 갖는 제 2 계층 데이터의 판독을 지시하는 지시 데이터(판독 명령)의 구성의 일 예를 나타낸다. 이 판독명령(300)은 리더/라이터(2)로부터 IC 카드(1)에 공급된다.
도 7에 도시된 바와 같이, 판독명령(300)은 명령 헤더부(301), Lc부(306), 데이터부(판독 데이터 식별자(307)), 및 Le부(308)로 이루어진다. 명령 헤더부(301)는 명령의 종류, 지시, 및 파라미터를 나타내는 데이터를 저장한다. Lc부(306)는 명령의 데이터부(307) 내의 데이터의 데이터 길이를 나타내는 정보를 저장한다. 데이터부(307)는 판독되는 데이터의 식별자를 저장한다.
또한, 명령 헤더부(301)는 CLA(분류)부(302), INS(지시)부(303), 제 1 파라미터(P1)부(304), 및 제 2 파라미터(P2)부(305)로 이루어진다.
CLA부(302)는 명령의 종류(분류)를 나타내는 데이터를 저장한다. INS부(303)는 명령의 지시를 나타내는 데이터를 저장한다. 예컨대, 판독명령(300)에서, 판독 명령을 나타내는 데이터는 INS부(303)에 설정된다.
제 1 파라미터(P1)부(304) 및 제 2 파라미터(P2)부(305)는 제 1 계층 데이터의 어떤 식별자가 데이터부(307)에 설정된 제 2 계층 데이터의 식별자를 포함하는가를 나타낸다. 예컨대, 도 4a에 나타난 포인트 X 데이터(100)에 포함된 포인트값(105)의 판독을 요청하는 판독 명령에서, 판독 명령을 나타내는 데이터는 CLA부(302) 및 INS부(303)에 설정된다. P1부(304) 및 P2부(305)에서, "00" 및 "E1"은 제 1 계층 명령의 식별자로서 설정된다. 데이터부(307)에서, "DF01"은 제 2 계층 데이터의 식별자로서 설정된다.
도 7에 도시된 것과 같은 판독명령(300)이 수신되는 경우, IC 카드(1)의 CPU(14)는 상기 명령의 CLA부(302) 및 INS부(303)에 설정된 데이터를 기초로 상기 명령이 판독명령인가를 식별한다. 명령이 판독명령인 경우, CPU(14)는 P1부(304) 및 P2부(305)에 설정된 파라미터(데이터)에 기초하여 판독되는 제 2 계층 데이터를 포함하는 제 1 계층 데이터를 식별한다. 제 1 계층 데이터가 식별되고, 상기 데이터가 P1부(304) 및 P2부(305)에 의해 판독되는 제 2 계층 데이터를 포함하는 경우, CPU(14)는 명령의 데이터부(307)에 설정된 데이터(제 2 계층 데이터 식별자)에 기초하여, 판독되는 제 2 계층 데이터를 식별하고, 제 2 계층 데이터를 판독하며, 상기 제 2 계층 데이터는 P1부(304) 및 P2부(305)의 파라미터에 의해 특정된 제 1 계층 데이터에 존재한다.
그다음, IC 카드(1)의 데이터를 판독하는 처리가 여기에서 설명될 것이다.
도 8 및 도 9는 데이터 메모리(15)에 저장된 네스트 구조를 갖는 제 2 계층 데이터를 판독하는 처리를 나타내는 흐름도이다.
먼저, 외부 장치로서 기능하는 리더/라이터가 판독명령(300)을 IC 카드(1)에 제공하는 것으로 가정된다. 그다음, IC 카드(1)에서, 통신부(12)는 판독명령(300)을 수신한다. 수신된 판독명령(300)은 통신부(12)로부터 CPU(14)로 제공된다. 그다음, CPU(14)는 수신된 명령의 명령 헤더부(301)의 CLA 및 INS에 의해 상기 명령이 판독명령(300)임을 판정한다.
수신된 명령이 판독명령(300)인 것으로 판정되는 경우, CPU(14)는 명령(300)의 P1부(304) 및 P2부(305)에 설정된 파라미터와 일치하는 식별자 상의 제 2 계층 데이터를 탐색한다. 이 처리 동작은 도 5에 도시된 데이터 관리 정보로부터 P1부(304) 및 P2부(305)에 의해 특정된 식별자와 일치하는 제어 정보를 탐색한다(단계 S100).
명령(300)의 P1부(304) 및 P2부(305)의 파라미터와 일치하는 식별자 상의 제어 정보가 특정될 수 없는 경우(단계 S100, 아니오), CPU(14)는 제어 정보가 등록되지 않은 것을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S101), 처리를 종료한다.
명령(300)의 P1부(304) 및 P2부(305)의 파라미터와 일치하는 식별자 상의 제어 정보가 특정될 수 있는 경우(단계 S100, 예), CPU(14)는 제어 정보에 포함된 보안 조건 정보(213)에 의해 설정된 보안 조건이 충족되는지 여부를 확인한다(단계 S103). 상기 보안 조건이 충족되지 않는 경우(단계 S102, 아니오), CPU(14)는 보안 조건이 설정되지 않음을 표시하는 응답 상태를 리더/라이터(2)로 출력하고(단계 S103), 처리를 종료한다.
상기 보안 조건이 충족되는 경우(단계 S102, 예), CPU(14)는 제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소로 설정되는가의 여부를 확인한다(단계 S104).
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보에 의해 표시된 주소로 설정되지 않은 경우(단계 S104, 아니오), CPU(14)는 데이터가 설정되지 않음을 표시하는 응답 상태를 리더/라이터(2)로 출력하고(단계 S105), 처리를 종료한다.
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소로 설정되는 것이 확인되는 경우(단계 S104, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이가 제어 정보에 포함된 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위 내에 있는가의 여부를 확인한다(단계 S106).
제 1 계층 데이터가 허용가능한 범위를 초과하는 경우(단계 S106, 아니오), CPU(14)는 데이터 관리 정보가 비정상적임을 나타내는(데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S107), 처리를 종료한다.
제 1 계층 데이터의 데이터 길이가 허용가능한 범위 내에 있는 것이 확인되는 경우(단계 S106, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보(222)를 참조함으로써 데이터의 유효성을 확인한다(단계 S108).
제 1 계층 데이터의 유효성이 성공적으로 확인되지 않는 경우, 즉 제 1 계층 데이터가 비정상인 것으로 판정된 경우(단계 S108, 아니오), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보가 비정상적임을 나타내는(데이터의 유효성이 확인될 수 없음을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S109), 처리를 종료한다.
제 1 계층 데이터의 유효성이 성공적으로 확인되는 경우(단계 S108, 예), CPU(14)는 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소 상의 데이터를 1 바이트 만큼 판독한다(단계 S110). 1 바이트의 데이터가 상기 단계 S110에서 판독되는 경우, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S111). 다음 데이터가 식별자의 일부로서 제공되는 것으로 확인되는 경우(단계 S111, 예), CPU(14)는 1 바이트 만큼 다음 데이터를 판독한다(단계 S112).
다음 데이터가 식별자의 일부로서 제공되지 않은 것으로 확인되는 경우(단계 S111, 아니오), CPU(14)는 상기 단계 S110 및 S120에서 판독된 데이터가 식별자를 표시하는 데이터로서 제공되는 것을 판정한다. 즉, CPU(14)는 상기 단계 S110 ~ S112에 따라 제 1 계층 데이터에 존재하는 제 2 계층의 제 1 데이터의 식별자를 판독한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않은 것으로 확인되는 경우(단계 S111, 아니오), CPU(14)는 상기 단계 S110 및 S112에서 판독된 식별자가 명령(300)의 데이터부(307)에 특정된 제 2 계층 데이터의 식별자와 일치하는가의 여부를 판정한다(단계 S113).
이 판정에 의해 판독된 식별자가 수신된 명령(300)의 데이터부(307)에 특정 된 식별자와 일치하는 것으로 판정되는 경우(단계 S113, 예), CPU(14)는 식별자 데이터의 데이터 길이를 표시하는 데이터로서 식별자 상의 다음 데이터를 판독한다(단계 S121). 데이터 길이가 1 바이트인 것으로 미리 판정된 경우, CPU(14)는 데이터 길이로서 식별자의 다음 1 바이트 상의 데이터를 판독한다.
식별자의 데이터 길이가 이와 같이 판독되는 경우, CPU(14)는 데이터 길이에 의해 제 2 계층 데이터의 데이터 값(값)으로서 데이터 길이 상의 다음 데이터를 판독한다(단계 S122). 식별자 상의 제 2 계층 데이터의 데이터 값(값)이 판독되는 경우, CPU(14)는 판독 데이터 값(값) 및 판독 처리가 정상적으로 종료된 것을 나타내는 정보(어떤 비정상도 발생하지 않음을 나타내는 정보)를 명령(300)에 대한 응답 상태로서 리더/라이터(2)에 출력하고(단계 S123), 처리를 종료한다.
또한, 단계 S113의 판정에 의해 판독된 식별자가 수신된 명령(300)의 데이터부(307)에 특정된 식별자와 일치하지 않는 것으로 판정되는 경우(단계 S113, 아니오), CPU(14)는 식별자 데이터의 데이터 길이로서 식별자 상의 다음 데이터을 판독한다(단계 S115).
식별자 데이터의 데이터 길이가 판독되는 경우, CPU(14)는 판독 데이터 길이에 기초한 제 2 계층 상의 다음 데이터의 시작 주소(제 2 계층 상의 다음 데이터의 식별자)를 판정한다. 제 2 계층 상의 다음 데이터의 식별자의 시작 주소가 판정되는 경우, CPU(14)는 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소가 데이터 길이 관리 정보(220)의 데이터 길이와 일치하는가의 여부를 확인한다(단계 S116).
예컨대 단계 S116의 판정에서, 일치함은 제 2 계층 상의 다음 데이터의 시작 주소가 데이터 길이 관리 정보(220)에 의해 특정된 데이터 길이에 기초하여 주소의 허용가능한 범위를 초과하는가의 여부에 기초하여 확인된다. 즉, 단계 S116의 판정에서, 제 2 계층 상의 다음 데이터가 정상인가의 여부(제 2 계층 상의 다음 데이터가 존재하는가의 여부)가 판정된다. 예컨대, 도 10은 제 2 계층 상의 다음 데이터의 시작 주소가 데이터 길이 관리 정보(220)의 데이터 길이에 기초하여 주소의 허용가능한 범위를 초과하는 경우를 나타내는 도면이다. 이 경우, CPU(14)는 제 2 계층 상의 다음 데이터가 비정상임(존재하지 않음)을 판정한다.
제 2 계층 상의 다음 데이터의 식별자의 주소가 상기 판정에 기초한 데이터 길이 관리 정보(220)와 일치하지 않는 경우, 즉 다음 데이터가 비정상인(존재하지 않는) 경우(단계 S116, 아니오), CPU(14)는 데이터가 비정상적으로 탐색되었음을 나타내는 응답 상태를 리더/라이터(2)에 출력하고(단계 S117), 처리를 종료한다.
제 2 계층 상의 다음 데이터의 식별자의 주소가 데이터 길이 관리 정보(220)와 일치하는 것으로 확인되는 경우(단계 S116, 예), CPU(14)는 1 바이트 만큼 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소 상의 데이터를 판독한다(단계 S118). 데이터의 1 바이트가 상기 단계 S118에서 판독되는 경우, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S119). 다음 데이터가 식별자의 일부로서 제공되는 것으로 이같이 확인되는 경우(단계 S119), CPU(14)는 1 바이트 만큼 다음 데이터를 판독한다(단계 S120).
또한, 다음 데이터가 식별자의 일부로서 제공되지 않는 경우(단계 S119, 아 니오), CPU(14)는 상기 단계 S118 및 S120에서 판독된 데이터가 제 2 계층 상의 다음 데이터의 식별자로서 제공되는 것을 판정한다. 즉, CPU(14)는 상기 단계 S118 ~ S120의 처리에 따라서 제 2 계층의 다음 데이터의 식별자를 판정한다. 그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인되는 경우, 즉 제 2 계층 상의 다음 데이터의 식별자가 판독되는 경우(단계 S119, 아니오), CPU(14)는 상기 단계 S113로 되돌아간다. 이 방법에서, CPU(14)는 상기 단계 S118 및 S120에서 판독된 제 2 계층 상의 다음 데이터의 식별자가 명령(300)의 데이터부(307)에 의해 특정된 식별자와 일치하는가의 여부를 판정한다(단계 S113).
단계 S133 ~ S120의 처리는 판독된 제 2 계층 데이터의 식별자가 명령(300)의 데이터부(307)에 의해 특정된 식별자와 일치할 때까지 반복해서 실행된다. 이 방법에서, 명령(300)의 데이터부(307)에 의해 특정된 식별자 상의 제 2 계층 데이터는 판독되고, 판독된 제 2 계층 데이터는 응답 데이터로서 리더/라이터(2)로 출력된다.
제 2 계층 데이터의 식별자는 1 바이트 또는 2 바이트로 구성될 수 있거나 또는 3 바이트 또는 그 이상으로 구성될 수 있다. 예컨대, 제 2 계층 데이터의 식별자는 1 바이트로 구성되고, 상기 단계 S119 및 S120은 생략된다. 또한, 제 2 계층 데이터의 식별자가 2 바이트로 구성되는 경우, 상기 단계 S120은 각 식별자에 대해 단 한번 실행된다.
또한, 데이터 길이를 표시하는 정보(데이터 길이)는 1 바이트로 구성될 수 있거나 또는 2 바이트 또는 그 이상일 수 있다. 예컨대, 데이터 길이 정보가 1 바 이트로 구성되는 경우, 식별자의 다음 1 바이트에 대한 데이터는 상기 단계 S115의 길이 정보로서 판독된다.
상기한 바와 같이, 판독되는 제 1 계층 데이터 및 제 2 계층 데이터를 특정한 판독 명령이 성공적으로 수신된 경우, IC 카드는 특정된 제 1 계층 데이터에 존재하는 특정된 제 2 계층 데이터 만을 판독한다.
이 방법에서, 특정된 제 2 계층 데이터는 제 1 계층 데이터 전체를 판독하지 않고 특정 제 1 계층 데이터로부터 쉽게 판독될 수 있다. 결과적으로, 네스트 구조를 갖는 제 1 계층 데이터에 포함된 특정 제 2 계층 데이터를 효율적으로 판독하는 것이 가능해 진다.
그다음, 네스트 구조를 갖는 데이터(제 2 계층 데이터)의 변경 처리(재쓰기 처리) 동작이 설명될 것이다.
먼저, 제 2 계층 데이터의 변경(재쓰기)를 요청하는 명령(데이터 변경 명령)이 설명될 것이다.
도 11은 데이터 메모리(15)에 저장된 네스트 구조를 갖는 데이터의 변경(재쓰기)을 요청하는 데이터 변경 명령의 구성의 일 예를 나타낸다. 이 데이터 변경 명령(400)은 리더/라이터(2)로부터 IC 카드(1)로 제공된다.
도 11에 도시된 것과 같은 데이터 변경 명령(400)은 명령 헤더부(401), Lc부(406), 및 데이터부(407)로 이루어진다. 명령 헤더부(401)는 명령의 종류, 지시, 파라미터 및 그와 유사한 것을 나타내는 데이터를 저장한다. Lc부(406)는 명령의 데이터부(407)에 포함된 데이터의 데이터 길이를 표시하는 정보를 저장한다. 데이 터부(407)는 변경되는 데이터의 식별자, 데이터 길이, 및 데이터를 저장한다.
또한, 명령 헤더부(401)는 CLA(분류)부(402), INS(지시)부(403), 제 1 파라미터(P1)부(404), 및 제 2 파라미터(P2)부(405)로 이루어진다.
CLA부(402)는 명령의 종류(분류)를 나타내는 데이터를 저장한다. INS부(403)는 명령의 지시를 나타내는 데이터를 저장한다. 예컨대, 데이터 변경 명령(400)의 경우, 데이터 변경 지시를 나타내는 데이터는 INS부(403)에 설정된다.
제 1 파라미터(P1)부(404) 및 제 2 파라미터(P2)부(405)는 어떤 데이터 식별자가 데이터부(407)에 설정된 데이터의 식별자를 포함하는가를 각각 나타낸다. 예컨대, 도 4a에 도시된 포인트 X 상의 데이터에 포함된 포인트 상위 한계 값(108)의 변경을 요청하는 데이터 변경 명령(400)의 경우, 데이터 변경 명령을 나타내는 데이터는 CLA부(402) 및 INS부(403)에 설정된다. 그다음, "E1" 및 "00"는 P1부(404) 및 P2부(405)에서 제 1 계층 데이터의 식별자로서 각각 설정되고, "DF02"는 데이터부(407)에서 제 2 계층 데이터의 식별자로서 설정된다.
도 11에 나타난 데이터 변경 명령(400)이 수신된 경우, IC 카드(1)의 CPU(14)는 먼저 명령이 명령(400)의 CLA부(402) 및 INS부(403)에 설정된 데이터에 기초한 데이터 변경 명령임을 식별한다. 명령이 데이터 변경 명령인 것으로 식별되는 경우, CPU(14)는 P1부(404) 및 P2부(405)에 설정된 파라미터(데이터)에 기초하여 변경되는 제 2 계층 데이터를 포함하는 제 1 계층 데이터를 식별한다.
P1부(404) 및 P2부(405)에 의해 변경되는 제 2 계층 데이터를 포함하는 제 1 계층 데이터가 식별된다면, CPU(14)는 변경되는 제 2 계층 데이터를 식별하고, 상 기 제 2 계층 데이터는 명령의 데이터부(407)에 설정된 제 2 계층 데이터의 식별자에 기초하여 P1부(404) 및 P2부(405)의 파라미터에 의해 특정된 제 1 계층 데이터에 존재한다. 변경되는 제 2 계층 데이터가 식별되는 경우, CPU(14)는 데이터부(407)에 의해 설정된 데이터 길이 상의 데이터로 변경되는 제 2 계층 데이터의 값을 재쓰기 한다.
이제부터, IC 카드(1)의 제 2 계층 데이터에 대한 변경 처리(재쓰기 처리) 동작이 설명될 것이다.
도 12, 도 13 및 도 14는 각각 IC 카드(1)에 구비된 데이터 메모리(15)에 저장된 제 2 계층 데이터를 변경하는 변경 처리(재쓰기 처리) 동작을 나타내는 흐름도이다.
먼저, 외부 장치로서 기능하는 리더/라이터(2)가 데이터 변경 명령을 IC 카드(1)로 공급하는 것이 가정된다. IC 카드(1)에서, 통신부(12)는 데이터 변경 명령(400)을 수신한다. 수신된 데이터 변경 명령(400)은 통신부(12)로부터 CPU(14)로 공급된다. 그다음, CPU(14)는 명령이 수신된 명령의 명령 헤더부(301)의 CLA부(402) 및 INS부(403)에 의한 데이터 변경 명령(400)임을 판정한다.
수신된 명령이 데이터 변경 명령인 것으로 판정되는 경우, CPU(14)는 명령(400)의 P1부(404) 및 P2부(405)에 설정된 파라미터와 일치하는 제 1 계층 데이터를 탐색한다. 즉, 이 처리는 도 5에 도시된 데이터 관리 정보로부터 P1부(404) 및 P2부(405)에 의해 특정된 식별자와 일치하는 제 1 계층 데이터 상의 제어 정보를 탐색한다(단계 S200).
명령의 P1부(404) 및 P2부(405)의 파라미터와 일치하는 제어 정보가 성공적으로 특정되지 않은 경우(단계 S200, 아니오), CPU(14)는 제어 정보가 등록되지 않음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S201), 처리를 종료한다.
명령의 P1부(404) 및 P2부(405)의 파라미터와 일치하는 제어 정보가 성공적으로 특정되는 경우(단계 S200, 예), CPU(14)는 제어 정보에 포함된 보안 조건 정보(213)에 의해 설정된 보안 조건의 충족여부를 확인한다(단계 S202). 상기 보안 조건이 충족되지 않은 경우(단계 S202, 아니오), CPU(14)는 보안 조건이 충족되지 않음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S203), 처리를 종료한다.
상기 보안 조건이 충족되는 경우(단계 S202, 예), CPU(14)는 제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정 여부를 확인한다(단계 S204).
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되지 않는 경우(단계 S204, 아니오), CPU(14)는 데이터가 설정되지 않음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S205), 처리를 종료한다.
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정된 경우(단계 S204, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이가 제어 정보에 포함된 설정가능한 크기 정보에 의해 표시된 허용가능한 범위 내에 있는가의 여부를 확인한다(단계 S206).
제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 경우(단계 S206, 아니오), CPU(14)는 데이터 관리 정보가 비정상임을 나타내는(제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S207), 처리를 종료한다.
제 1 계층 데이터의 데이터 길이가 허용가능한 범위 내에 있는 경우(단계 S206, 예), CPU(14)는 제 1 계층 데이터에 포함된 데이터 유효성 관리 정보(222)에 따라서 제 1 계층 데이터의 유효성을 확인한다(단계 S208).
제 1 계층 데이터의 유효성이 성공적으로 확인되지 않은 경우, 즉 제 1 계층 데이터가 비정상인 것으로 판정되는 경우(단계 S208, 아니오), CPU(14)는 제 1 계층 데이터에 포함된 데이터 유효성 관리 정보가 비정상임을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S209), 처리를 종료한다.
제 1 계층 데이터의 유효성이 성공적으로 확인된 경우(단계 S208, 예), CPU(14)는 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소 상의 데이터를 1 바이트 만큼 판독한다(단계 S210). 데이터의 1 바이트가 상기 단계 S210에서 판독되는 경우, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S211). 다음 데이터가 식별자의 일부로서 제공된 것이 이같이 확인된 경우(단계 S211, 예), CPU(14)는 데이터의 다음 1 바이트를 판독한다(단계 S212).
다음 데이터가 식별자의 일부로서 제공되지 않은 것으로 확인되는 경우(단계 S211, 아니오), CPU(14)는 상기 단계 S210 및 S212에서 판독된 데이터가 식별자를 나타내는 데이터임을 판정한다. 즉, CPU(14)는 단계 S210 ~ S212의 처리에 따라 제 1 계층 데이터에 존재하는 제 2 계층의 제 1 데이터의 식별자를 판독한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인되는 경우, 즉 제 2 계층 데이터의 식별자가 판독되는 경우(단계 S211, 아니오), CPU(14)는 단계 S210 및 S212에서 판독된 제 2 계층 데이터의 식별자가 명령의 데이터부(407)에 의해 특정된 식별자와 일치하는가의 여부를 판정한다(단계 S213).
이 판정에 의해 판독된 제 2 계층 데이터의 식별자가 수신된 명령의 데이터부(407)에 의해 특정된 식별자와 일치하지 않는 것으로 판정되는 경우(단계 S213, 아니오), CPU(14)는 식별자 데이터의 데이터 길이로서 식별자 상의 다음 데이터를 판독한다(단계 S215).
식별자 데이터의 데이터 길이가 이같이 판독되면, CPU(14)는 판독 데이터 길이로부터 제 2 계층의 다음 데이터의 시작 주소(제 2 계층 상의 다음 데이터의 식별자)를 판정한다. 다음 데이터 식별자의 시작 주소가 판정되면, CPU(14)는 다음 식별자에 상응하는 주소가 데이터 길이 관리 정보(220)와 일치하는가의 여부를 확인한다(단계 S216).
예컨대 이 판정에서, 일치는 제 2 계층 상의 다음 데이터의 식별자의 시작 주소가 데이터 길이 관리 정보(220)의 데이터 길이에 기초하여 주소의 허용가능한 범위를 초과하는가의 여부에 따라 확인된다. 즉, 단계 S216의 상기 판정에서, 제 2 계층 상의 다음 데이터가 정상인가의 여부(제 2 계층 상의 다음 데이터가 존재하는가의 여부)가 판정된다.
제 2 계층 상의 다음 데이터의 식별자의 주소가 상기 판정에 의해 데이터 길이 관리 정보(220)와 일치하지 않는 것으로 판정되는 경우, 즉 다음 데이터가 비정상(존재하지 않음)인 것으로 판정되는 경우(단계 S216, 아니오), CPU(14)는 비정상 데이터가 탐색되었는가를 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S217), 처리를 종료한다.
또한, 제 2 계층 상의 다음 데이터의 식별자의 주소가 데이터 길이 관리 정보(220)와 일치하는 것으로 확인되는 경우(단계 S216, 예), CPU(14)는 1 바이트 만큼 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소 상의 데이터를 판독한다(단계 S218). 데이터의 1 바이트가 단계 S218에서 판독되는 경우, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S219). 다음 데이터가 식별자의 일부로서 제공되는 것으로 이같이 확인된 경우(단계 S219, 예), CPU(14)는 데이터의 다음 1 바이트를 판독한다(단계 S220).
또한, 다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인된 경우(단계 S219, 아니오), CPU(14)는 단계 S218 및 S220에서 판독된 데이터가 식별자를 나타내는 데이터로서 제공되는 것으로 판정한다. 즉, CPU(14)는 단계 S218 ~ S220의 처리에 따라 제 1 계층 데이터에 존재하는 제 2 계층 상의 다음 데이터의 식별자를 판독한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인되는 경우, 즉 제 2 계층의 다음 데이터의 식별자가 판독되는 경우(단계 S219, 아니오), CPU(14)는 단계 S213으로 돌아가고, 단계 S218 및 S220에서 판독된 제 2 계층 상의 다음 데이터의 식별자가 명령의 데이터부(407)에 의해 특정된 식별자와 일치하는가의 여부를 판정한다(단계 S213).
단계 S213의 판정에 의해 판독된 식별자가 수신된 명령의 데이터부(407)에 의해 특정된 식별자와 일치하는 것으로 판정되는 경우(단계 S213, 예), CPU(14)는 식별자 데이터의 데이터 길이로서 식별자 상의 다음 데이터를 판독한다(단계 S214). 데이터 길이가 1 바이트인 것으로 미리 판정된 경우, CPU(14)는 데이터 길이로서 식별자 상의 다음 1 바이트 데이터를 판독한다.
식별자의 데이터 길이가 판독되면, CPU(14)는 단계 S214에서 판독된 데이터 길이가 변경되는 제 2 계층 데이터의 길이와 일치하는가의 여부를 판정하고, 길이는 명령의 데이터부(407)에 의해 특정된다(단계 S221). 이 판정에서, 현재 제 1 계층 데이터에 존재하는 제 2 계층 데이터가 제 2 계층 데이터(새로운 데이터)와 동일한 길이로 쓰여지는가의 여부가 판정되고, 데이터는 명령(400)에 의해 특정된다.
그들 양자가 상기 판정에 의해 서로 일치하는 것으로 판정되는 경우(단계 S221, 예), CPU(14)는 단계 S214에서 판독된 데이터 길이의 다음 주소로부터 명령(400)의 데이터부(407)에 의해 특정된 새로운 데이터를 쓰는 처리를 실행한다(단계 S228).
이 새로운 데이터의 쓰기가 정상적으로 종료되면, CPU(14)는 작업이 정상적 으로 종료되었음을 나타내는(어떤 비정상도 발생하지 않았음을 나타내는) 정보를 명령(400)의 응답 상태로서 리더/라이터(2)로 출력한다(단계 S229).
쓰여지는 데이터 영역의 크기(명령에 의해 특정되는 식별자 상의 데이터의 데이터 길이)가 쓰여지는 데이터의 크기(쓰여지는 데이터의 길이, 데이터는 명령에 의해 특정됨)와 일치하는 경우, CPU(14)는 제 2 계층 데이터를 덮어쓰기 함으로써 데이터를 변경한다. 이 경우에, 제 2 계층 데이터의 데이터 길이는 변경하지 않는다. 따라서, 제 1 계층 데이터의 데이터 길이 및 제 2 계층 데이터의 데이터 길이로서 기능하는 데이터 길이 관리 정보(220)를 변경할 필요는 없다. 이 방법에서, 제 2 계층 데이터는 정상적으로 재쓰기될 수 있다.
또한, 그들 양자가 상기 판정에 의해 서로 일치하지 않는 경우(단계 S221, 아니오), CPU(14)는 단계 S214에서 판독된 데이터 길이가 쓰여지는 데이터(새로운 데이터)의 데이터 길이 보다 길거나 또는 짧은지의 여부를 판정하고, 데이터는 명령(400)에 의해 특정된다(단계 S222).
단계 S214에서 판독된 데이터 길이가 쓰여지는 데이터 즉 명령(400)에 의해 특정된 데이터의 데이터 길이 보다 짧은 것으로 상기 판정에 의해 판정되는 경우(단계 S222, 아니오), CPU(14)는 단계 S214에서 판독된 데이터의 길이(현재 데이터 길이)로부터 쓰여지는 데이터의 데이터 길이(변경된 데이터 길이)를 뺌으로써 얻어지는 양 만큼("현재 데이터 길이 - 변경 데이터 길이"에 상응하는 양 만큼) 제 1 계층 데이터의 제 2 계층 데이터를 뒤따르는 모든 제 2 계층 데이터를 이동한다. 더욱이, CPU(14)는 데이터 길이 관리 정보(220)의 데이터 길이(제 1 계층 데이터의 전체 데이터 값의 데이터 길이)를 변경된 이후의 데이터 길이(전체 길이)로 변경한다(단계 S224).
또한, 단계 S214에서 판독된 데이터 길이가 쓰여지는 데이터 즉 명령(400)에 의해 특정되는 데이터의 데이터 길이보다 긴 것으로 상기 판정에 의해 판정되는 경우(단계 S222, 예), CPU(14)는 명령(400)에 의해 특정된 데이터가 쓰여지는 경우의 제 1 계층 데이터의 데이터 길이(변경된 이후의 전체 길이)가 제 1 계층 데이터 상의 제어 정보에 포함된 설정가능한 크기 정보에 따라서 특정된 설정가능한 크기를 초과하는가의 여부를 판정한다(단계 S223).
변경된 이후의 전체 길이가 상기 판정에 의해 설정가능한 크기를 초과하는 것으로 판정되는 경우(단계 S223, 예), CPU(14)는 제 1 계층 데이터의 데이터 길이가 비정상임을 나타내는 응답 상태를 명령(400)에 의한 데이터 변경 없이 리더/라이터(2)로 출력한다(단계 S226).
변경된 이후의 전체 길이가 설정가능한 크기를 초과하지 않는 것으로 판정되는 경우(단계 S223, 아니오), CPU(14)는 "변경 데이터 길이 - 현재 데이터 길이"에 상응하는 양 만큼 제 1 계층 데이터의 제 2 계층 데이터를 뒤따르는 모든 제 2 계층 데이터를 이동한다(시프팅한다). 더욱이, CPU(14)는 데이터 길이 관리 정보(220)의 데이터 길이를 변경된 이후의 전체 길이로 재쓰기한다(단계 S225).
제 2 계층 데이터를 뒤따르는 제 2 계층 데이터의 이동(시프팅) 및 데이터 길이 관리 정보(220)의 변경이 단계 S224 또는 단계 S225에 따라 완료되면, CPU(14)는 상응하는 식별자 상의 제 2 계층 데이터의 데이터 길이로서, 쓰여지는 데이터의 데이터 길이를 쓰고, 상기 데이터는 명령(400)의 데이터부(407)에 의해 특정된다(단계 S227).
제 2 계층 데이터의 데이터 길이가 재쓰기되면, CPU(14)는 상응하는 식별자 상의 제 2 계층 데이터로서 명령(400)의 데이터부(407)에 의해 특정된 새로운 데이터를 쓴다(단계 S228). 이러한 쓰기가 정상적으로 완료되면, CPU(14)는 데이터 변경 처리가 정상적으로 종료되었음을 나타내는(어떤 비정상도 발생하지 않음을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S229), 처리를 종료한다.
상기한 데이터 변경 처리 동작은 특정 예를 통해 설명될 것이다.
도 15의 (a)는 복수의 제 2 계층 데이터를 포함하는 제 1 계층 데이터의 일 예와 제 1 계층 데이터 값(값)에 포함된 제 2 계층으로서 쓰여지는 데이터(새로운 데이터)의 일 예를 나타낸다.
예컨대, 도 15a에 나타난 바와 같이, 식별자 B 상의 제 2 계층 데이터는 현재 데이터 길이보다 긴 데이터 길이 상의 새로운 데이터로 변경되는 것으로 가정된다. 이 경우에, 도 15a에 도시된 바와 같이, 새로운 데이터는 현재 식별자 상의 제 2 계층 데이터가 저장되는 영역으로부터 오버플로된다. 따라서, 식별자 B 상의 제 2 계층 데이터를 뒤따르는 데이터로서 기능하는 식별자 C 상의 제 2 계층 데이터는 도 15b에 도시된 바와 같이 "변경된 데이터 길이 - 현재 데이터 길이"에 상응하는 양 만큼 이동된다.
이 방법에서, 식별자 B 상의 제 2 계층 데이터를 저장하는 영역은 도 15c에 도시된 것과 같이 새로운 데이터의 데이터 길이에 상응하는 크기로 변경된다. 이 때에, 데이터 길이 관리 정보(220)는 전체 데이터 길이가 변경된 이후의 데이터 길이로 재쓰기된다.
이 상태에서, 식별자 B 상의 제 2 계층 데이터의 데이터 길이는 새로운 데이터의 데이터 길이로 재쓰기되고, 식별자 B의 데이터 길이의 다음 주소가 시작 주소가 되는 경우 새로운 데이터는 식별자 B 상의 제 2 계층 데이터 값으로 쓰여진다(즉, 식별자 B의 데이터 값이 새로운 데이터로 재쓰기된다). 그러면, 도 15d에 나타난 바와 같이, 식별자 B의 제 2 계층 데이터에 관하여, 데이터 길이는 새로운 데이터의 데이터 길이로서 얻어지고, 값은 새로운 데이터로서 얻어진다.
상기한 바와 같이, 제 1 계층 데이터 및 변경되는(쓰여지는) 제 2 계층 데이터를 특정하는 데이터 변경 명령을 성공적으로 수신한 경우, IC 카드는 특정된 제 1 계층 데이터에 존재하는 특정된 제 2 계층 데이터 만을 재쓰기한다.
이 방법에서, 특정된 제 2 계층 데이터 만이 전체 제 1 계층 데이터를 재쓰기함이 없이 제 1 계층 데이터로부터 쉽게 재쓰기될 수 있다. 결과적으로, 네스트 구조를 갖는 제 1 계층 데이터에 포함된 특정 제 2 계층 데이터를 효율적으로 재쓰기하는 것이 가능하게 된다.
이제부터, 동일 식별자 상의 복수의 제 2 계층 데이터가 제 1 계층 데이터에 존재하는 경우 판독 처리 동작에 관하여 상세한 설명이 제공될 것이다.
도 16a 및 도 16b는 각각 동일한 식별자 상의 복수의 제 2 계층 데이터가 제 1 계층 데이터 값(값)에 존재하는 경우의 데이터의 구성의 일 예를 나타낸다.
도 16a는 제 1 계층 데이터의 일 예로서 포인트 P 상의 데이터(160)을 나타 낸다.
도 16a에 나타난 바와 같이, 포인트 P 상의 데이터(160)는 포인트 P상의 데이터(160)의 식별자(EA)(161), 포인트 P 상의 데이터(160)의 데이터 길이(162), 및 포인트 P 상의 데이터(160)의 데이터 값(값)(163)으로 이루어진다. 복수의 제 2 계층 데이터(167, 171, 175, 및 179)는 포인트 P의 값(163) 내에 존재한다. 제 2 계층 데이터(167)는 포인트 P의 포인트 값을 나타내는 데이터로서 제공된다. 이 포인트 값의 데이터(167)는 식별자(DF01)(164), 데이터 길이(165), 및 데이터 값(값)(166)으로 이루어진다.
제 2 계층 데이터(171, 175, 및 179)는 포인트 P의 추가값을 나타내는 데이터로서 제공된다. 상기 제 2 계층 데이터(171, 175, 및 179)는 식별자(DF04)(168, 172, 및 176), 데이터 길이(169, 173, 및 177), 및 값(170, 174, 및 178)으로 이루어진다. 또한, 제 2 계층 데이터(171, 175, 및 179)는 동일 식별자(DF04)를 갖는다.
도 16b는 제 2 계층 데이터로서 포인트 Q 상의 데이터(180)의 일예를 나타낸다. 도 16b에 나타난 것과 같이, 포인트 Q 상의 데이터(180)는 포인트 Q상의 데이터(180)의 식별자(EB)(181), 포인트 Q 상의 데이터(180)의 데이터 길이(182), 및 포인트 Q 상의 데이터(180)의 데이터 값(값)(183)으로 이루어진다. 더욱이, 복수의 제 2 계층 데이터(187, 191, 및 185)는 포인트 Q의 데이터(180)의 값(183) 내에 존재한다. 제 2 계층 데이터(187)는 포인트 Q의 포인트 값을 나타내는 데이터로서 제공된다. 이 포인트 값 데이터(187)는 식별자(DF01)(184), 데이터 길이(185), 및 데이터 값(값)(186)으로 이루어진다.
제 2 계층 데이터(191 및 195)는 각각 포인트 Q의 추가값을 나타내는 데이터로서 제공된다. 제 2 계층 데이터(191 및 195)는 각각 식별자(DF04)(188 및 192), 데이터 길이(189 및 193), 및 실제 데이터(190 및 194)로 이루어진다. 또한, 제 2 계층 데이터(191 및 195)는 동일 식별자(DF04)를 갖는다.
도 17은 시퀀스를 특정하고 제 2 계층 데이터의 판독을 지시하는 지시 데이터(판독 명령을 특정하는 시퀀스)의 구성의 일 예를 나타낸다. 판독명령(500)을 특정하는 이 시퀀스는 리더/라이터(2)로부터 IC 카드(1)로 공급되는 명령으로서 제공된다.
판독명령(500)을 특정하는 시퀀스는 도 11에 도시된 것과 같이 명령 헤더부(501), Lc부(506), 데이터부(507), 및 Le부(508)로 이루어진다. 명령 헤더부(501)는 명령의 종류, 지시, 및 파라미터를 나타내는 데이터를 저장한다. Lc부는 명령의 데이터부(507)에 설정된 데이터의 데이터 길이을 나타내는 정보를 저장한다. 데이터부(507)는 판독되는 데이터의 식별자 및 그 식별자 상의 데이터의 판독 시퀀스를 저장한다.
명령 헤더부(501)는 CLA(분류)부(502), INS(지시)부(503), 제 1 파라미터(P1)부(504), 및 제 2 파라미터(P2)부(505)로 이루어진다. CLA부(502)는 명령의 종류(분류)를 나타내는 데이터를 저장한다. INS부(503)는 명령의 지시를 나타내는 데이터를 저장한다. 판독명령(500)을 특정하는 시퀀스에서, 특정된 시퀀스에 상응하는 식별자 상의 제 2 계층 데이터를 판독하는 지시를 나타내는 데이터는 INS부 (503)에 설정된다.
제 1 파라미터(P1)부(504) 및 제 2 파라미터(P2)부(505)는 제 1 계층 데이터의 어떤 식별자가 판독되는 제 2 계층 데이터의 식별자를 포함하는가를 나타내고, 상기 데이터는 데이터부(507)에 설정된다. 예컨대, 도 16a에 도시된 포인트 P 상의 데이터(제 1 계층 데이터)(160)에 포함된 제 2 포인트 추가값(상응하는 식별자의 제 2 계층의 제 2 데이터)(174)의 판독을 요청하는 명령에서, 데이터 변경 명령을 나타내는 데이터는 CLA부(502) 및 INS부(503)에 설정되고, "00" 및 "E1"은 각각 P1부(404) 및 P2부(405)의 제 1 계층 데이터 식별자로서 설정된다. 데이터부(407)에 설정된 "DF0402"는 "02"번째 데이터가 식별자 "DF04" 상의 제 2 계층 데이터 중에서 특정되는 것을 나타낸다.
도 17에 도시된 시퀀스 특정 판독명령(500)이 성공적으로 수신된 경우, IC 카드(1)의 CPU(14)는 먼저 명령이 명령(500)의 CLA부(502) 및 INS부(503)에 설정된 데이터에 기초한 시퀀스 특정 판독 명령임을 판정한다. 명령이 스퀀스 특정 판독명령(500)인 것으로 구별되면, CPU(14)는 P1부(504) 및 P2부(505)에 설정된 파라미터(데이터)에 기초하여 판독되는 제 2 계층 데이터를 포함하는 제 1 계층 데이터를 구별한다.
P1부(504) 및 P2부(505)에 의해 판독되는 제 2 계층 데이터를 포함하는 제 1 계층 데이터를 구별한 이후에, CPU(14)는 판독되는 제 2 계층 명령을 구별하고, 상기 제 2 계층 데이터는 명령(500)의 데이터부(507)에 설정된 제 2 계층 데이터의 식별자 및 시퀀스에 기초하여, P1부(504) 및 P2부(505)의 파라미터에 의해 특정된 제 1 계층 데이터에 존재한다. 판독되는 제 2 계층 데이터를 구별한 이후에, CPU(14)는 제 2 계층 데이터의 데이터 값(값)을 판독하고, 응답으로서 판독 값을 리더/라이터(2)로 전송한다.
도 18은 상기 시퀀스 특정 판독명령(500)에 대한 응답 데이터(600)의 구성의 일 예를 나타낸다. 이 응답 데이터(600)는 시퀀스 특정 판독명령(500)의 실행의 결과로서 IC 카드(1)로부터 리더/라이터(2)로 출력되는 데이터로서 제공된다.
응답 데이터(600)는 식별자(601), 데이터 길이(602), 데이터부(603), 제 1 상태 코드부(604), 및 제 2 상태 코드부(605)로 이루어진다.
시퀀스 특정 판독명령(500)(판독되는 제 2 계층 데이터의 식별자)의 데이터부(507)에 특정된 제 2 계층 데이터의 식별자는 상기 식별자(601)로서 설정된다. 데이터부(603)에 설정된 데이터의 데이터 길이는 데이터 길이(602)에 설정된다. 시퀀스 특정 판독명령(500) 또는 그와 유사한 것에 따라 CPU(14)에 의해 판독되는 제 2 계층 명령의 값은 데이터부(603)에 설정된다. 시퀀스 특정 판독명령(500)에 의해 특정된 식별자 상의 제 2 계층 데이터의 전체 개수는 제 2 상태 코드부(605)에 설정되고, 상기 제 2 계층 데이터는 시퀀스 특정 판독명령(500)에 의해 특정된 제 2 계층 데이터에 존재한다.
예컨대, 도 16a에 도시된 제 2 포인트 추가값(제 2 식별자 "DF04" 상의 제 2 계층 데이터)의 판독을 요청하는 시퀀스 특정 판독명령(500)이 성공적으로 수신된 경우, CPU(14)는 데이터부(603)에 제 2 식별자 "DF04" 상의 제 2 계층 데이터 값으로서 포인트 추가값(174)의 값을 설정함으로써, 그다음 식별자 "DF04" 상의 제 2 계층 데이터의 3개의 항목이 제 2 상태 코드부(605)에 존재하는 것을 나타내는 데이터 "DF0403"을 설정함으로써 얻어진 응답 데이터를 출력한다. 제 2 상태 코드부(605)에 설정된 "DF0403"는 식별자 "DF04"의 제 2 계층 데이터(포인트 추가값 상의 데이터)의 3개의 항목이 제 1 계층 데이터(포인트 P의 데이터(160))에 존재하는 것을 나타낸다.
이제부터, 제 2 계층 데이터를 연속적으로 특정 및 판독하는 처리(시퀀스 특정 판독 처리)의 흐름에 관하여 상세한 설명이 이루어질 것이다.
도 19, 도 20, 및 도 21은 각각 제 2 계층 데이터를 연속적으로 특정 및 판독하는 처리를 나타내는 흐름도이다.
먼저, 외부 장치로서 기능하는 리더/라이터(2)는 시퀀스 특정 판독명령(500)을 IC 카드(1)로 공급하는 것으로 가정된다. IC 카드(1)에서, 통신부(12)는 시퀀스 특정 판독명령(500)을 수신한다. 수신된 명령(500)은 통신부(12)로부터 CPU(14)로 공급된다. 그다음, CPU(14)는 명령이 수신된 명령(500)의 명령 헤더부(501)의 CLA부(502) 및 INS부(503)에 의해 시퀀스 특정 판독명령(500)임을 판정한다.
수신된 명령이 제 2 판독명령(500)인 것으로 판정된다면, CPU(14)는 명령(500)의 P1부(504) 및 P2부(505)에 설정된 파라미터와 일치하는 제 1 계층 데이터를 탐색한다. 이 처리는 도 5에 도시된 데이터 관리 정보로부터 P1부(504) 및 P2부(505)에 특정된 식별자와 일치하는 식별자 상의 제 1 계층 데이터 상의 제어 정보를 탐색한다(단계 S300).
명령(500)의 P1부(504) 및 P2부(505)의 파라미터와 일치하는 제어 정보가 성공적으로 특정되지 않는 경우(단계 S300, 아니오), CPU(14)는 제 1 계층 데이터 상의 제어 정보가 등록되지 않은 것을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S301), 처리를 종료한다.
명령(500)의 P1부(504) 및 P2부(505)의 파라미터와 일치하는 제어 정보가 성공적으로 특정된 경우(단계 S300, 예), CPU(14)는 제어 정보에 포함된 보안 조건 정보(213)에 따라 설정된 보안 조건이 일치하는가의 여부를 확인한다(단계 S302). 상기 보안 조건이 일치하지 않는 경우(단계 S302, 아니오), CPU(14)는 보안 조건이 일치하지 않음을 나타내는 응답 상태를 리더/라이터(2)에 출력하고(단계 S303), 처리를 종료한다.
상기 보안 조건이 일치하는 경우(단계 S302, 예), CPU(14)는 제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되는가의 여부를 확인한다(단계 S304).
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되지 않는 경우(단계 S304, 아니오), CPU(14)는 제 1 계층 데이터가 설정되지 않음을 나타내는 응답 상태를 리더/라이터(2)(단계 S305)에 출력하고, 처리를 종료한다.
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정된 것으로 확인된 경우(단계 S304, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이가 제어 정보에 포함 된 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위 내에 있는가의 여부를 확인한다(단계 S306).
제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 경우(단계 S306, 아니오), CPU(14)는 데이터 길이 관리 정보가 비정상임을 나타내는(데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S307), 처리를 종료한다.
제 1 계층 데이터의 데이터 길이가 허용가능한 범위 내에 있는 것으로 확인된 경우(단계 S306, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보(222)에 따라 제 1 계층 데이터의 유효성을 확인한다(단계 S308).
제 1 계층 데이터의 유효성이 성공적으로 확인되지 않은 경우, 즉 제 1 계층 데이타가 비정상인 것으로 판정되는 경우(단계 S308, 아니오), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보가 비정상임을 나타내는(유효성이 성공적으로 확인되지 않은 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S309), 처리를 종료한다.
제 1 계층 데이터의 유효성이 성공적으로 확인된 경우(단계 S308, 예), CPU(14)는 카운터(도시 안됨)를 지우고, 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소 상의 데이터를 1 바이트 만큼 판독한다(단계 S310). 카운터는 데이터 메모리(15) 상에 제공될 수 있거나 또는 작업 메모리(16) 또는 CPU(14)의 내부 메모리에 제공될 수 있다.
데이터의 1 바이트가 상기 단계 S310에서 판독되면, CPU(14)는 다음 데이터( 다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S311). 다음 데이터가 식별자의 일부로서 제공되는 경우(단계 S311, 예), CPU(14)는 데이터의 다음 1 바이트를 판독한다(단계 S312).
다음 데이터가 식별자의 일부로서 제공되지 않는 경우(단계 S311, 아니오), CPU(14)는 단계 S310 및 S312에서 판독된 데이터가 식별자를 나타내는 데이터로서 제공되는 것을 판정한다. 즉, CPU(14)는 단계 S310 ~ S312에서의 처리에 의해 제 1 계층 데이터에 포함된 제 2 계층의 제 1 데이터의 식별자를 판독한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 경우, 즉 제 1 계층 데이터 내의 제 2 계층 데이터의 제 1 데이터의 식별자가 판독되는 경우(단계 S311, 아니오), CPU(14)는 단계 S310 및 S312에서 판독된 제 2 계층 데이터의 식별자가 명령(500)의 데이터부(507)에 특정된 제 2 계층 데이터의 식별자와 일치하는가의 여부를 판정한다(단계 S313).
이 판정에 의해 판독된 제 2 계층 데이터의 식별자가 수신된 명령(500)의 데이터부(507)에 특정된 식별자와 일치하지 않는 것으로 판정되는 경우(단계 S313, 아니오), CPU(14)는 식별자 데이터의 데이터 길이로서 식별자를 뒤따르는 데이터를 판독한다(단계 S315). 식별자 데이터의 데이터 길이가 판독되면, CPU(14)는 판독된 데이터 길이로부터 제 2 계층 상의 다음 데이터의 시작 주소(제 2 계층 상의 다음 데이터의 식별자)를 판정한다. 제 2 계층 상의 다음 데이터의 시작 주소가 판정되면, CPU(14)는 제 2 계층 상의 다음 데이터에 상응하는 주소가 데이터 길이 관리 정보(220)와 일치하는가의 여부를 확인한다(단계 S316).
이 판정에서, 예컨대 일치가 제 2 계층 상의 다음 데이터의 식별자의 시작 주소가 데이터 길이 관리 정보(220)에 기초하여 특정된 데이터 길이에 기초한 주소의 허용가능한 범위를 초과하는가의 여부에 따라 확인된다. 즉, 단계 S216의 판정에서, 제 2 계층 상의 다음 데이터가 정상임(존재함)의 여부가 판정된다.
제 2 계층 상의 다음 데이터의 주소가 상기 판정에 의해 데이터 길이 관리 정보(220)와 일치하지 않는 것으로 판정되는 경우, 즉 제 2 계층 상의 다음 데이터가 비정상인(존재하지 않는) 경우(단계 S316, 아니오), CPU(14)는 비정상 데이터가 탐색된 것을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S317), 처리를 종료한다.
또한, 제 2 계층 상의 다음 데이터의 주소가 데이터 길이 관리 정보(220)와 일치하는 것으로 확인되는 경우, 즉 제 2 계층 상의 다음 데이터가 존재하는 것으로 판정되는 경우(단계 S316, 예), CPU(14)는 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소 상의 1 바이트의 데이터를 판독한다(단계 S318). 1 바이트의 데이터가 단계 S318에서 판독되면, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S319). 다음 데이터가 식별자의 일부로서 제공되는 경우(단계 S319, 예), CPU(14)는 다음 1 바이트의 데이터를 판독한다(단계 S320).
또한, 다음 데이터가 식별자의 일부로서 제공되지 않는 경우(단계 S319, 아니오), CPU(14)는 단계 S318 및 S320에서 판독된 데이터가 제 2 계층 상의 다음 데이터의 식별자로서 제공되는 것을 판정한다. 즉, CPU(14)는 단계 S318 ~ S320의 처리에 따라서 제 2 계층 상의 다음 데이터의 식별자를 판독하는 처리를 실행한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인되는 경우, 즉 제 2 계층 상의 다음 데이터의 식별자가 판독되는 경우(단계 S319, 아니오), CPU(14)는 단계 S313으로 되돌아가고, 단계 S318 및 S320에서 판독된 제 2 계층의 다음 식별자가 명령(500)의 데이터부(507)에 특정된 식별자와 일치하는가의 여부를 판정한다(단계 S313).
또한, 단계 S313의 판정에 의해 판독된 제 2 계층 데이터의 식별자가 수신된 명령(500)의 데이터부(507)에 특정된 식별자와 일치하는 것으로 판정된 경우(단계 S313, 예), CPU(14)는 상기 카운터를 증가시킨다(단계 S314). 상기 카운터가 증가되면, CPU(14)는 명령(500)의 데이터부(507)에 특정된 시퀀스가 상기 카운터의 카운터 값과 일치하는가의 여부를 확인한다(단계 S321).
명령(500)에 특정된 시퀀스가 이 확인에 의해 상기 카운터의 카운터 값과 일치하지 않는 것으로 판정되는 경우(단계 S321, 아니오), CPU(14)는 단계 S315로 진행하고, 상기에서 설명된 처리를 반복적으로 실행한다. 즉, 단계 S313 ~ S321의 처리는 명령(500)에 의해 특정된 시퀀스의 식별자 상의 제 2 계층 데이터가 발견될 때까지 반복적으로 실행된다.
또한, 명령(500)에 의해 특정된 시퀀스가 상기 단계 S321의 카운터의 카운터 값과 일치하는 경우(단계 S321, 예), CPU(14)는 식별자 데이터의 데이터 길이로서 식별자를 뒤따르는 데이터(판독되는 제 2 계층 데이터)를 판독한다(단계 S322). 식별자 상의 데이터의 데이터 길이가 판독되면, CPU(14)는 데이터 길이에 의해 식 별자 데이터(판독되는 제 2 계층 데이터)의 값으로서 데이터 길이를 뒤따르는 데이터를 판독한다(단계 S323). 이 방법에서, 식별자 및 시퀀스에 의해 특정된 제 2 계층 데이터(즉, 판독되는 제 2 계층 데이터)의 값은 명령(500)에서 판독된다.
제 2 계층 데이터의 값이 명령(500)에 의해 특정되면, CPU(14)는 명령(500)에 관하여 응답 데이터(600)의 데이터부(603)에서 판독된 제 2 계층 데이터의 값을 설정한다(단계 S324).
명령(500) 상에서 판독된 제 2 계층 데이터의 값이 응답 데이터(600)의 데이터부(603)에 설정되면, CPU(14)는 상기 단계 S322 또는 이후에 설명되는 단계 S325에서 판독된 데이터 길이에 기초한 제 2 계층 상의 다음 데이터의 주소와 데이터 길이 관리 정보(220)의 데이터 길이(제 1 계층 데이터의 데이터 길이)에 기초한 주소 사이에서의 일치를 확인한다(단계 S326). 이 단계(S326)에서, 제 2 계층 상의 다음 데이터가 제 1 계층 데이터의 정상 상태에 존재하는가의 여부가 판정된다. 즉, 단계 S326에서, 제 1 계층 데이터가 정상 상태에 있는가의 여부 및 제 2 계층 상의 다음 데이터가 존재하는가의 여부가 판정된다.
제 1 계층 데이터가 정상인 것으로 제 2 계층 데이터 상의 다음 데이터가 존재하지 않는 것으로 이같이 판정되는 경우(단계 S326, 종료), CPU(14)는 제 1 계층 데이터의 제 2 계층 데이터의 판독을 종료하고, 이후에 설명되는 단계 S327로 진행한다.
또한, 제 1 계층 데이터가 정상인 것으로 제 2 계층 데이터 상의 다음 데이터가 존재하는 것으로 판정되는 경우(단계 S326, 예), CPU(14)는 제 1 계층 데이터 의 제 2 계층 상의 다음 데이터를 판독하기 위해서 이후에 설명되는 단계 S330으로 진행한다.
또한, 제 1 계층 데이터가 정상이 아닌 경우(단계 S326, 아니오), CPU(14)는 비정상 데이터가 탐색되는 것을 나타내는 응답 상태를 설정하는 응답을 리더/라이터(2)로 전송하고(단계 S333), 처리를 종료한다.
즉, 제 2 계층 상의 다음 데이터가 단계 S326에 존재하는 것으로 판정되는 경우(단계 S326, 예), CPU(14)는 1 바이트 만큼 제 2 계층 상의 데이터의 식별자에 상응하는 주소 상의 데이터를 판독한다(단계 S330). 1 바이트의 데이터가 상기 단계 S330에서 판독되면, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S331). 다음 데이터가 식별자의 일부로서 제공되는 경우(단계 S331, 예), CPU(14)는 다음 1 바이트의 데이터를 판독한다(단계 S332).
또한, 다음 데이터가 식별자의 일부로서 제공되지 않는 경우(단계 S331, 아니오), CPU(14)는 단계 S330 및 S332에서 판독된 데이터가 제 2 계층 상의 다음 데이터의 식별자로서 제공되는 것을 판정한다. 즉, CPU(14)는 단계 S330 ~ S332의 처리에 따라서 제 2 계층 상의 다음 데이터의 식별자를 판독한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 경우, 즉 제 2 계층 상의 다음 데이터의 식별자가 판독되는 경우(단계 S331, 아니오), CPU(14)는 제 2 계층 상의 판독 데이터의 식별자가 명령(500)의 데이터부(507)에 특정된 식별자와 일치하는가의 여부가 판정되는 단계 S334로 진행한다(단계 S334).
상기 식별자가 이 판정에 의해 서로 일치하는 것으로 판정되는 경우(단계 S334, 예), CPU(14)는 카운터를 추가로 증가시키고(단계 S335), 단계 S325로 진행한다. 이 단계 S335에서, 단계 S322와 같이, 식별자 상의 다음 데이터는 제 2 계층 상의 다음 데이터의 데이터 길이로서 판독되고, 처리는 단계 S326으로 진행한다.
또한, 제 2 계층 상의 다음 데이터가 단계 S326에서 존재하는 것으로 판정되는 경우(단계 S326, 종료), CPU(14)는 어떤 비정상도 응답 데이터(600)의 제 1 상태 코드(604)에서 발생하지 않음을 나타내는 응답 상태를 설정하고(단계 S327), 명령(500)에 의해 특정된 식별자(제 2 계층 상의 판독 데이터의 식별자) 및 카운터의 카운터 값은 제 2 상태 코드(605)에 설정된다(단계 S328). 카운터 값의 카운트 값은 특정된 식별자의 제 2 계층 상의 데이터 항목의 전체 개수를 나타내고, 상기 데이터는 명령에 의해 특정된 제 1 계층 데이터에 존재한다.
제 1 상태 코드(604) 및 제 2 상태 코드(605)를 설정한 응답 데이터(600)가 완료되면, CPU(14)는 응답 데이터(600)를 리더/라이터(2)로 출력하고(단계 S329), 처리를 종료한다.
상기 단계 S325, S326, S330 ~ S332, S334 및 S335의 처리는 제 2 계층 상의 다음 데이터가 단계 S326에 존재하지 않는 것으로 판정될 때까지 반복적으로 실행된다. 결과적으로, 카운터의 카운트 값은 작업의 종료가 단계 S326에서 판정되면 명령에 의해 특정된 식별자의 제 2 계층 상의 데이터 항목의 개수를 나타내는 값으로서 얻어진다.
상기한 것과 같이, 제 1 계층 데이터의 식별자, 제 2 계층 데이터의 식별자, 및 시퀀스를 특정한 판독 명령을 특정하는 시퀀스가 성공적으로 수신되는 경우, IC 카드는 특정된 제 1 계층 데이터에 존재하는 특정된 식별자 상의 제 2 계층 데이터 중에서 특정된 시퀀스의 제 2 계층 상의 데이터 만을 판독한다.
이 방법에서, 특정된 식별자 상의 제 2 계층 데이터 중에서 특정된 시퀀스의 제 2 계층 데이터는 전체 제 1 계층 데이터 또는 특정된 식별자 상의 모든 제 2 계층 데이터를 판독함이 없이 특정된 제 1 계층 데이터로부터 쉽게 판독될 수 있다. 결과적으로, 심지어 동일 식별자 상의 제 2 계층 데이터가 네스트 구조를 갖는 제 1 계층 데이터에 존재하는 경우에서 조차, 특정 제 2 계층 데이터를 효율적으로 판독하는 것이 가능하게 된다.
이제부터, 네스트 구조를 갖는 제 2 계층 데이터를 삭제하는 처리 동작에 관하여 상세한 설명이 제공될 것이다.
먼저, 네스트 구조를 갖는 제 2 계층 데이터를 삭제하는 처리 동작이 특정 예를 참조하여 간단히 설명될 것이다.
도 22의 (a)는 식별자 A, B, 및 C 상의 제 2 계층 데이터가 제 1 계층 데이터에 존재하는 경우의 데이터 구성의 일 예를 나타내는 도면이다. 도 22의 (b)는 식별자 B 상의 제 2 계층 데이터 만이 도 22a에 도시된 네스트 구조를 갖는 데이터로부터 삭제되는 경우의 데이터 구성의 일 예를 나타낸다. 바꾸어 말하면, 도 22의 (c)는 데이터가 식별자 B 상의 제 2 계층 데이터를 삭제한 이후에 추가로 재구성되는 경우의 데이터 구성의 일 예를 나타낸다.
즉, 식별자 B 상의 제 2 계층 데이터가 도 22a에 도시된 제 1 계층 데이터로부터 삭제된 경우, CPU(14)가 먼저 식별자 B 상의 제 2 계층 데이터(식별자, 데이터 길이, 및 데이터 값(값))를 지운다. 그다음, 도 22b에 도시된 것과 같은 제 1 계층 데이터의 값은 도 22b에 도시된 상태로 진입한다. 도 22b에 도시된 것과 같은 상태의 데이터에 관하여, CPU(14)는 식별자 A 상의 제 2 계층 데이터를 따르기 위해서 삭제된 식별자 B 상의 제 2 계층 데이터를 뒤따르는 식별자 C 상의 제 2 계층 데이터를 이동한다. 이 방법에서, 제 1 계층 데이터의 값으로서 기능하는 데이터(221)의 콘텐츠는 도 22c에 도시된 것과 같은 데이터 배열을 사용한다. 또한, CPU(14)는 데이터 길이 관리 정보를 식별자 A 상의 제 2 계층 데이터 및 식별자 C 상의 제 2 계층 데이터로 구성된 데이터로 변경한다. 이 방법에서, 도 22c에 도시된 것과 같은 네스트 구조를 갖는 데이터가 형성된다.
이제부터, 제 2 계층 데이터의 삭제를 요청하는 지시 데이터(삭제 명령)(700)에 관하여 상세한 설명이 제공된다.
도 23은 네스트 구조를 갖는 제 2 계층 데이터의 삭제를 지시하는 지시 데이터(삭제 명령)(700)의 구성의 일 예를 나타낸다. 이 삭제 명령(700)은 리더/라이터(2)로부터 IC 카드로 제공되는 명령으로서 제공된다.
도 23에 도시된 것과 같은 상기 삭제 명령(700)은 명령 헤더부(701), Lc부(706), 및 데이터부(707)로 이루어진다. 상기 명령 헤더부(701)는 명령의 종류, 지시 및 파라미터를 나타내는 데이터를 저장한다. 상기 Lc부(706)는 명령의 데이터부(707)에 설정된 데이터의 데이터 길이를 나타내는 정보를 저장한다. 상기 데 이터부(707)는 삭제되는 제 2 계층 데이터의 식별자를 저장한다.
또한, 명령 헤더부(701)는 CLA(분류)부(702), INS(지시)부(703), 제 1 파라미터(P1)부(704), 및 제 2 파라미터(P2)부(705)로 이루어진다.
상기 CLA부(702)는 명령의 종류(분류)를 나타내는 데이터를 저장한다. 상기 INS부(703)는 명령의 지시를 나타내는 데이터를 저장한다. 삭제 명령(700)에서, 특정된 식별자 상의 데이터를 삭제하는 지시를 나타내는 데이터는 INS부(703)에 설정된다.
상기 제 1 파라미터(P1)부(704) 및 제 2 파라미터(P2)부(705)는 각각 제 1 계층 데이터의 어떤 식별자가 삭제되는 제 2 계층 데이터를 포함하는 것을 나타내고, 상기 데이터는 데이터부(707)에 설정된다.
예컨대, 도 4에 나타난 포인트 X 상의 데이터(100)에 포함된 포인트 상위 한계값(108)의 삭제를 요청하는 명령에서, 삭제 명령을 나타내는 데이터는 CLA부(702) 및 INS부(703)에 설정된다. 그다음, "00" 및 "E1"이 각각 P1부(704) 및 P2부(705)에서 제 1 계층 데이터의 식별자로서 설정되고, "DF04"는 데이터부(407)에 제 2 계층 데이터의 식별자로서 설정된다.
도 23에 도시된 것과 같은 삭제 명령(700)이 성공적으로 수신된 경우, IC 카드(1)의 CPU(14)는 먼저 명령이 명령의 CLA부(702) 및 INS부(703)에 설정된 데이터에 기초한 삭제 명령임을 구별한다. 명령이 삭제 명령(700)인 것으로 구별되면, CPU(14)는 P1부(704) 및 P2부(705)에 설정된 파라미터(데이터)에 기초하여 삭제되는 제 2 계층 데이터를 포함하는 제 1 계층 데이터를 구별한다.
P1부(704) 및 P2부(705)에 의해 삭제되는 제 2 계층 데이터를 포함하는 제 1 계층 데이터를 구별한 이후에, CPU(14)는 삭제되는 제 2 계층 데이터를 구별하고, 상기 데이터는 명령(700)의 데이터부(707)의 파라미터에 의해 특정된 제 1 계층 데이터에 존재한다. 삭제되는 제 2 계층 데이터를 구별한 이후에, CPU(14)는 제 2 계층 데이터를 삭제한다.
이제부터, 제 2 계층 데이터를 삭제하는 처리의 흐름이 설명될 것이다.
도 24, 도 25, 및 도 26은 각각 네스트 구조를 갖는 제 2 계층 명령을 삭제하는 처리를 나타내는 흐름도이다.
먼저, 외부 장치로서 기능하는 리더/라이터(2)가 IC 카드(1)로 삭제 명령(700)을 공급한 것으로 가정된다. 그다음, IC 카드(1)에서, 통신부(12)는 삭제 명령(700)을 수신한다. 수신된 삭제 명령(700)은 통신부(12)로부터 CPU(14)로 공급된다. 그다음, CPU(14)는 명령이 수신된 명령(700)의 명령 헤더부(701)의 CLA부(702) 및 INS부(703)에 의한 삭제 명령임을 판정한다.
수신된 명령이 삭제 명령인 것으로 판정되는 경우, CPU(14)는 명령의 P1부(704) 및 P2부(705)에 설정된 파라미터와 일치하는 데이터를 탐색한다. 이 처리는 도 5에 도시된 데이터 관리 정보로부터 P1부(704) 및 P2부(705)에 특정된 식별자와 일치하는 제 1 계층 데이터 상의 제어 정보를 탐색한다(단계 S400).
P1부(704) 및 P2부(705)의 파라미터와 일치하는 제어 정보가 성공적으로 특정되지 않은 경우(단계 S400, 아니오), CPU(14)는 제어 정보가 등록되지 않음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S401), 처리를 종료한다.
P1부(704) 및 P2부(705)의 파라미터와 일치하는 제어 정보가 성공적으로 특정된 경우(단계 S400, 예), CPU(14)는 제어 정보에 포함된 보안 조건 정보에 따라 설정된 보안 조건이 일치하는가의 여부를 확인한다(단계 S402). 상기 보안 조건이 일치하지 않는 경우(단계 S402, 아니오), CPU(14)는 보안 조건이 일치하지 않음을 나타내는 응답 상태를 리더/라이터(2)에 출력하고(단계 S403), 처리를 종료한다.
상기 보안 조건이 일치하는 경우(단계 S402, 예), CPU(14)는 제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정된다(단계 S404).
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되지 않는 경우(단계 S404, 아니오), CPU(14)는 제 1 계층 데이터가 설정되지 않는 것을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S405), 처리를 종료한다.
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되지 않는 경우(단계 S404, 아니오), CPU(14)는 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이가 제어 정보에 포함된 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위 내에 있는가의 여부를 확인한다(단계 S406).
제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 경우(단계 S406, 아니오), CPU(14)는 데이터 관리 정보가 비정상임을 나타내는(데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는) 응답 상태를 리더/라이터(2)에 출력하 고(단계 S407), 처리를 종료한다.
제 1 계층 데이터의 데이터 길이가 허용가능한 범위 내에 있는 경우(단계 S406, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보(222)에 따라 제 1 계층 데이터의 유효성을 확인한다(단계 S408).
제 1 계층 데이터의 유효성이 성공적으로 확인되지 않은 경우, 즉 제 1 계층 데이터가 비정상인 것으로 판정되는 경우(단계 S408, 아니오), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보가 비정상임을 나타내는(유효성이 성공적으로 확인되지 않은 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S409), 처리를 종료한다.
제 1 계층 데이터의 유효성이 성공적으로 확인된 경우(단계 S408, 예), CPU(14)는 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소 상의 데이터를 1 바이트 만큼 판독한다(단계 S410). 1 바이트의 데이터가 상기 단계 S410에서 판독되면, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S411). 다음 데이터가 식별자의 일부로서 제공된 것이 이같이 확인되는 경우(단계 S411, 예), CPU(14)는 데이터의 다음 1 바이트를 판독한다(단계 S412).
다음 데이터가 식별자의 일부로서 제공되지 않은 것이 확인되는 경우(단계 S411, 아니오), CPU(14)는 단계 S410 및 S412에서 판독된 데이터가 식별자를 나타내는 데이터로서 제공되는 것을 판정한다(단계 S412). 즉, CPU(14)는 단계 S410 ~ S412의 처리에 따라 제 2 계층 상의 제 1 데이터의 식별자를 판독하는 처리 동작을 실행한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 것이 확인되는 경우(단계 S411, 아니오), CPU(14)는 단계 S410 및 S412에서 판독된 제 2 계층 데이터의 식별자가 명령(700)의 데이터부(707)에 특정된 식별자와 일치하는가의 여부를 판정한다(단계 S413). 이 판정에서, 판독된 제 2 계층 데이터의 식별자가 삭제되는 제 2 계층 데이터의 식별자로서 제공되는가의 여부가 판정된다.
이 판정에 의해 판독된 식별자가 삭제되는 제 2 계층 데이터의 식별자와 일치하지 않는 것으로 판정되는 경우(단계 S413, 아니오), CPU(14)는 식별자 데이터의 데이터 길이로서 식별자 상의 다음 데이터를 판독한다(단계 S415). 데이터가 이같이 판독되면, CPU(14)는 판독 데이터 길이로부터 제 2 계층 상의 다음 데이터의 시작 주소(제 2 계층 상의 다음 데이터의 식별자)를 판정한다. 제 2 계층 상의 다음 데이터의 시작 주소가 판정되면, CPU(14)는 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소가 데이터 길이 관리 정보(220)와 일치하는가의 여부를 확인한다.
예컨대, 상기 단계 S416에서 일치는 식별자 데이터의 데이터 길이로부터 판정된 제 2 계층 상의 다음 데이터의 시작 주소(제 2 계층 상의 다음 데이터의 식별자의 시작 주소)가 데이터 길이 관리 정보(220)의 데이터 길이에 기초하여 주소의 허용가능한 범위를 초과하는가의 여부에 따라 확인된다. 즉, 단계 S416의 판정에서, 제 2 계층 상의 다음 데이터가 정상인가의 여부가 판정된다.
제 2 계층 상의 다음 데이터의 주소가 상기 판정에 의해 표시된 데이터 길이 와 일치하지 않는 것으로 판정되는 경우, 즉 데이터가 비정상인 것으로 판정되는 경우(단계 S416, 아니오), CPU(14)는 비정상 데이터가 탐색되었음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S417), 처리를 종료한다.
또한, 제 2 계층 상의 다음 데이터의 주소가 데이터 길이 관리 정보(220)와 일치하는 경우(단계 S416, 예), CPU(14)는 1 바이트 만큼 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소 상의 데이터를 판독한다(단계 S418). 1 바이트의 데이터가 단계 S418에서 판독되면, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S419). 다음 데이터가 식별자의 일부로서 제공되는 경우(단계 S419, 예), CPU(14)는 데이터의 다음 1 바이트를 판독한다(단계 S420).
다음 데이터가 식별자의 일부로서 제공되지 않는 경우(단계 S419, 아니오), CPU(14)는 단계 S418 및 S420 에서 판독된 데이터가 식별자를 표시하는 데이터로서 제공되는 것을 판정하고, 단계 S413으로 되돌아간다. 즉, CPU(14)는 명령의 데이터부(707)에 특정된 식별자와 일치하는 식별자가 발견될 때까지 상기 단계 S413 및 S420을 반복적으로 실행한다.
또한, 단계 S413의 판정에 의해 판독된 식별자가 수신된 명령의 데이터부(707)에 특정된 식별자와 일치하는 것으로 판정되는 경우, 즉, 판독된 식별자 상의 제 2 계층 데이터가 삭제되는 제 2 계층 데이터로서 제공되는 것으로 판정되는 경우(단계 S413, 예), CPU(14)는 식별자 데이터(삭제되는 데이터)의 데이터 길이(로서 식별자 상의 다음 데이터를 판독한다(단계 S414).
삭제되는 제 2 계층 데이터의 데이터 길이를 판독하면, CPU(14)는 판독 데이터 길이에 기초하여 제 2 계층 상의 다음 데이터의 시작 주소(제 2 계층 상의 다음 데이터의 식별자)를 판정한다. 다음 식별자에 상응하는 주소가 판정되면, CPU(14)는 다음 식별자에 상응하는 주소와 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이 사이의 일치를 확인한다(단계 S421). 이 단계 S421에서, 특히 CPU(14)는 제 1 계층 데이터가 정상 상태에 있는가의 여부 및 삭제되는 것으로 판정된 제 2 계층 데이터를 뒤따르는 제 2 계층 데이터가 존재하는가의 여부를 판정한다.
제 1 계층 데이터가 단계 S421에서 비정상인 것으로 판정되는 경우(단계 S421, 아니오), CPU(14)는 비정상 데이터가 탐색된 것을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S426), 처리를 종료한다.
또한, 단계 S421에서 삭제되는 제 2 계층 데이터를 뒤따르는 제 2 계층 데이터가 존재하지 않는 것으로 판정되는 경우(단계 S421, 어떤 다음 데이터도 존재하지 않음), CPU(14)는 제 2 계층을 삭제한다(단계 S422).
이 경우에, 제 1 계층 데이터의 데이터 길이는 제 2 계층 데이터를 삭제함으로써 변경된다. 따라서, CPU(14)는 제 1 계층 데이터의 데이터 길이를 변경할 필요가 있다.
그러므로, CPU(14)는 제 1 계층 상의 현재 데이터의 데이터 길이로부터 삭제된 제 2 계층 데이터의 데이터 길이를 뺌으로써 얻어진 데이터 길이를 계산한다. 계산된 새로운 제 1 계층 데이터의 데이터 길이에 기초하여, CPU(14)는 데이터 길이 관리 정보(220)의 데이터 길이를 보정한다(단계 S424).
이 처리가 정상적으로 완료되면, CPU(14)는 어떤 비정상도 발생하지 않았음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S425), 처리를 종료한다.
또한, 단계 S421에서 삭제되는 제 2 계층 데이터를 뒤따르는 제 2 계층 데이터가 존재하는 것으로 판정되는 경우(단계 S421, 다음 데이터 존재함), CPU는 먼저 제 2 계층 데이터를 삭제한다(단계 S422).
이 경우에, 삭제된 제 2 계층 데이터를 뒤따르는 제 2 계층 데이터를 이동하는 것이 필요하다. 따라서, CPU(14)는 삭제된 제 2 계층 데이터의 데이터 길이에 기초하여 다음 제 2 계층 데이터의 이동량을 판정한다. 이 이동량은 삭제된 제 2 계층 상의 전체 데이터의 길이를 나타낸다. 즉, CPU(14)는 다음 제 2 계층 데이터의 이동량으로서 "삭제된 제 2 계층 데이터의 전체 길이"에 의해 삭제된 제 2 계층 데이터를 뒤따르는 제 2 계층 데이터를 이동한다(단계 S423).
더욱이, 이 경우에, 제 1 계층 데이터는 제 2 계층 데이터의 삭제와 함께 다음 제 2 계층 데이터를 이동함으로써 변경된다. 따라서, CPU(14)는 제 1 계층 데이터의 데이터 길이를 변경하는 것이 필요하다. 그러므로, CPU(14)는 현재 제 1 계층 데이터의 데이터 길이로부터 삭제된 제 2 계층 데이터의 데이터 길이를 뺌으로써 얻어진 데이터 길이를 계산한다. 이같이 계산된 데이터 길이에 기초하여, CPU(14)는 제 1 계층 데이터 상의 데이터 길이 관리 정보의 데이터 길이를 보정한다(단계 S424).
이 처리가 정상적으로 완료되면, CPU(14)는 어떤 비정상도 발생하지 않음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S425), 처리를 종료한다.
상기한 바와 같이, 제 1 계층 데이터 및 삭제되는 제 2 계층 데이터를 특정한 삭제 명령을 성공적으로 수신한 경우, IC 카드는 특정된 제 2 계층 데이터 만을 삭제하고, 상기 데이터는 특정된 제 1 계층 데이터에 존재한다.
이 방법으로, 제 1 계층 상의 전체 데이터를 재쓰기함이 없이 특정된 제 1 계층 데이터로부터 특정된 제 2 계층 데이터를 쉽게 삭제하는 것이 가능하다. 결과적으로, 네스트 구조를 갖는 제 1 계층 데이터에 포함된 특정 제 2 계층 데이터를 효율적으로 삭제하는 것이 가능하게 된다.
이제부터, 제 1 계층 데이터로 제 2 계층 데이터를 추가하는 처리 동작(추가 재쓰기 처리 동작)에 관한 설명이 이루어질 것이다.
먼저, 제 1 계층 데이터에 제 2 계층 데이터를 추가하는 처리 동작이 특정 예를 참조하여 간단히 설명될 것이다.
도 27의 (a)는 식별자 A 및 B 상의 제 2 계층 데이터가 제 1 계층 데이터에 존재하는 경우의 데이터 구성의 일 예를 나타내는 도면이다. 도 27의 (b)는 식별자 C 상의 제 2 계층 데이터가 도 27의 (a)에 도시된 제 1 계층 데이터로 새로이 쓰여지는 경우의 데이터 구성의 일 예를 나타낸다.
즉, 식별자 C 상의 제 2 계층 데이터가 도 27의 (a)에 도시된 제 1 계층 데이터에 추가로 쓰여지는 경우, CPU(14)는 먼저 식별자 B 상의 제 2 계층 데이터를 뒤따르는 식별자 C 상의 데이터(식별자, 데이터 길이, 및 데이터 값(값))를 쓴다. 그다음, 제 1 계층 데이터의 데이터 값(값)은 추가로 쓰여진 식별자 C 상의 제 2 계층 데이터에 의해 변경된다. 따라서, CPU(14)는 데이터 길이 관리 정보(220)의 데이터 길이를 식별자 B 및 C 상의 제 2 계층 데이터로 구성되는 데이터 길이로 변경한다. 이 방법에서, 식별자 C 상의 제 2 계층 데이터는 제 1 계층 데이터로 새로이 추가되고, 데이터 길이 관리 정보는 정상 상태로 진입한다.
이제부터, 제 1 계층 데이터로의 제 2 계층 데이터의 추가 쓰기를 요청하는 지시 데이터(추가 쓰기 명령)에 관한 상세한 설명이 제공될 것이다.
도 28은 제 1 계층 데이터로의 제 2 계층 데이터의 추가 쓰기를 지시하는 지시 데이터(추가 쓰기 명령)(800)의 구성의 일 예를 도시한다. 이 추가 쓰기 명령(800)은 리더/라이터(2)로부터 IC 카드로 공급되는 명령으로서 제공된다.
도 28에 도시된 것과 같은 추가 쓰기 명령(800)은 명령 헤더부(801), Ls부(806), 및 데이터부(807)로 이루어진다. 명령 헤더부(801)는 명령의 종류, 지시, 및 파라미터 또는 그와 유사한 것을 표시하는 데이터를 저장한다. Ls부(806)는 명령의 데이터부(807)에 설정된 데이터의 데이터 길이를 표시하는 정보를 저장한다. 상기 데이터부(807)는 추가로 쓰여지는 제 2 계층 데이터의 식별자, 길이, 및 데이터 값(값)을 저장한다.
또한, 명령 헤더부(801)는 CLA(분류)부(802), INS(지시)부(803), 제 1 파라미터(P1)부(804), 및 제 2 파라미터(P2)부(805)로 이루어진다.
CLA부(802)는 명령의 종류(분류)를 나타내는 데이터를 저장한다. INS부(803)는 명령의 지시를 나타내는 데이터를 저장한다. 추가 쓰기 명령(800)에서, 데이터부(807)에 저장된 추가 쓰기 데이터에 대한 명령을 표시하는 데이터는 INS부 (803)에 설정된다.
상기 제 1 파라미터(P1)부(804) 및 제 2 파라미터(P2)부(805)는 각각 제 1 계층 데이터의 어떤 식별자가 삭제되는 제 2 계층 데이터의 식별자를 포함하는가를 나타내고, 상기 데이터는 데이터부(807)에 설정된다.
도 28에 도시된 것과 같은 추가 쓰기 명령(800)을 성공적으로 수신하는 경우, IC 카드(1)의 CPU(14)는 먼저 명령이 명령(800)의 CLA부(802) 및 INS부(803)에 설정된 데이터에 기초한 추가 쓰기 명령으로서 제공되는 것을 구별한다. 명령이 추가 쓰기 명령으로서 제공되는 것으로 구별되면, CPU(14)는 P1부(804) 및 P2부(805)에 설정된 파라미터(데이터)에 기초하여 제 2 계층 데이터가 추가로 쓰여지는 제 1 계층 데이터를 구별한다.
P1부(804) 및 P2부(805)에 의해 추가로 쓰여진 제 1 계층 데이터를 구별하면, CPU(14)는 쓰여지는 데이터(제 2 계층 데이터의 식별자, 길이, 및 데이터)를 P1부(804) 및 P2부(805)의 파라미터에 의해 특정된 제 1 계층 데이터로 쓰고, 상기 데이터는 데이터부(807)에 설정된다.
이제부터, 네스트 구조를 갖는 추가 쓰기 데이터에 대한 처리의 흐름이 설명될 것이다.
도 29는 네스트 구조를 갖는 제 2 계층 데이터를 추가로 쓰는 처리를 나타내는 흐름도이다.
먼저, 외부 장치로서 기능하는 리더/라이터(2)가 추가 쓰기 명령(800)을 IC 카드(1)로 공급한 것으로 가정된다. 그다음, IC 카드(1)에서, 통신부(12)는 추가 쓰기 명령(800)을 수신한다. 수신된 추가 쓰기 명령(800)이 통신부(12)로부터 CPU(14)로 공급된다. 그다음, CPU(14)는 명령이 수신된 명령(800)의 명령 헤더부(801)의 CLA부(802) 및 INS부(803)에 의한 추가 쓰기 명령으로서 제공되는 것을 판정한다.
수신된 명령이 추가 쓰기 명령(800)으로서 제공되는 것으로 판정되면, CPU(14)는 명령의 P1부(804) 및 P2부(805)에 설정된 파라미터와 일치하는 데이터를 탐색한다. 이 처리는 도 5에 도시된 데이터 관리 정보로부터 P1부(804) 및 P2부(805)에 특정된 식별자와 일치하는 제어 정보를 탐색한다(단계 S500).
P1부(804) 및 P2부(805)의 파라미터와 일치하는 제어 정보가 특정되지 않은 경우(단계 S500, 아니오), CPU(14)는 데이터 상의 제어 정보가 명령에 의해 특정된 것을 표시하는 응답 상태를 리더/라이터(2)로 출력하고(단계 S501), 처리를 종료한다.
P1부(704) 및 P2부(705)의 파라미터와 일치하는 제어 정보를 특정한 경우(단계 S500, 예), CPU(14)는 제어 정보에 포함된 보안 조건 정보(213)에 따르는 보안 조건이 충족되는지 여부를 확인한다(단계 S502). 상기 보안 조건이 충족되지 않는 경우(단계 S502, 아니오), CPU(14)는 보안 조건이 충족되지 않음을 나타내는 응답 상태를 리더/라이터(2)에 출력하고(단계 S503), 처리를 종료한다.
상기 보안 조건이 충족되는 경우(단계 S502, 예), CPU(14)는 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 데이터가 이미 설정되었는가의 여부를 확인한다(단계 S504). 어떤 데이터도 제어 정보에 포함된 설정 주소 정보 (211)에 의해 표시된 주소에 설정되지 않는 경우(단계 S504, 아니오), CPU(14)는 어떤 데이터도 설정되지 않는 것을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S505), 처리를 종료한다.
데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되는 경우(단계 S504, 예), CPU(14)는 명령에 의해 특정된 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이가 제어 정보에 포함된 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위 내에 있는가의 여부를 확인한다(단계 S506).
명령에 의해 특정된 제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 경우(단계 S506, 아니오), CPU(14)는 특정된 제 1 계층 데이터 상의 데이터 관리 정보를 나타내는(데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는) 응답 상태를 리더/라이터(2)에 출력하고(단계 S507), 처리를 종료한다.
명령에 의해 특정된 제 1 계층 데이터의 데이터 길이가 허용가능한 범위 내에 있는 것으로 확인되는 경우(단계 S506, 예), CPU(14)는 명령에 의해 특정된 제 1 계층 데이터 상의 데이터 유효성 관리 정보(222)에 따라 데이터의 유효성을 확인한다(단계 S508).
명령에 의해 특정된 제 1 계층 데이터의 유효성이 성공적으로 확인되지 않은 경우(단계 S508, 아니오), CPU(14)는 명령에 의해 특정된 제 1 계층 데이터 상의 데이터 유효성 관리 정보가 비정상임을 나타내는(데이터의 유효성이 성공적으로 확인되지 않은 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S509), 처리를 종료한다.
명령에 의해 특정된 제 1 계층 데이터의 유효성이 성공적으로 확인된 경우(단계 S508, 예), CPU(14)는 추가되는 제 2 계층 데이터 즉 명령의 데이터부(807)에 설정된 데이터 길이가 명령에 의해 특정된 제 1 계층 데이터의 현재 데이터 길이(데이터 길이 관리 정보)와 일치하는가의 여부를 확인한다(단계 S510).
상기 단계 S510에서, 추가 쓰기가 행해지는 경우에 메모리 오버플로가 발생하는가의 여부가 판정된다. 특히, 데이터부(807)에 설정된 데이터가 제 1 계층 데이터로 추가로 쓰여지는 경우, CPU(14)는 제 1 계층 데이터의 데이터 길이가 제어 정보에 포함된 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위를 초과하는가의 여부를 판정한다. 즉, CPU(14)는 현재의 제 1 계층 데이터의 데이터 길이 및 데이터부(807)에 설정된 데이터의 데이터 길이에 기초하여, 추가로 쓰여진 이후의 제 1 계층 데이터의 데이터 길이가 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위를 초과하는가의 여부를 판정한다.
데이터부(807)에 설정된 데이터 길이가 단계 S510의 판정에 의한 명령에 의해 특정된 제 1 계층 데이터의 현재 데이터 길이와 일치하지 않는 것으로 판정되는 경우, 즉 명령에 의해 특정된 데이터의 추가 쓰기가 불가능하게 된 것으로 판정되는 경우(단계 S510, 아니오), CPU(14)는 특정된 제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는(메모리 오버플로가 발생하는 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S511), 처리를 종료한다.
또한, 데이터부(807)에 설정된 데이터 길이가 단계 S510의 판정에 의한 명령 에 의해 특정된 제 1 계층 데이터의 현재 데이터 길이와 일치하는 것으로 판정되는 경우, 즉 명령에 의해 특정된 데이터가 추가로 쓰여질 수 있는 것으로 판정되는 경우(단계 S510, 예), CPU(14)는 명령(800)에 의해 특정된 제 1 계층 데이터의 데이터부(값)에 제 2 계층 데이터로서 명령(800)의 데이터부(807)에 설정된 데이터를 추가로 쓴다(단계 S511).
이 경우에, 제 1 계층 데이터의 데이터 길이는 추가로 쓰여진 제 2 계층 데이터에 의해 변경된다. 이와 같이, CPU(14)는 제 1 계층 데이터의 데이터 길이(데이터 길이 관리 정보)를 변경하는 것이 필요하다. 그러므로, CPU(14)는 제 1 계층 데이터의 현재 데이터 길이에 추가로 쓰여진 제 2 계층 데이터에 의해 추가된 데이터 길이를 계산한다. 계산된 새로운 제 1 계층 데이터의 데이터 길이에 기초하여, CPU(14)는 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)의 데이터 길이를 보정한다(단계 S513).
이 처리가 정상적으로 완료되면, CPU(14)는 어떤 비정상도 발생하지 않음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S514), 처리를 종료한다.
상기한 바와 같이, 제 1 계층 데이터 및 새로이 추가되는 제 2 계층 데이터를 특정한 추가 쓰기 명령을 성공적으로 수신한 경우, IC 카드는 특정된 제 1 계층 데이터에 특정된 제 2 계층 데이터를 추가로 쓴다.
이 방법에서, 새로운 제 2 계층 데이터는 전체 제 1 계층 데이터를 재쓰기함이 없이 제 1 계층 데이터에 쉽게 추가될 수 있다. 결과적으로, 네스트 구조를 갖는 제 1 계층 데이터에 제 2 계층 데이터의 추가 쓰기를 효율적으로 실행하는 것이 가능하다.
이제부터, 네스트 구조를 갖는 데이터를 탐색하는 처리 동작이 설명될 것이다.
먼저, 네스트 구조를 갖는 제 2 계층 데이터에 대한 탐색을 지시하는 지시 데이터(탐색 명령)에 관하여 상세한 설명이 제공된다.
도 30은 네스트 구조를 갖는 제 2 계층 데이터에 대한 탐색을 지시하는 탐색 명령의 구성의 일 예를 나타낸다. 이 탐색 명령(900)은 리더/라이터(2)로부터 IC카드로 공급되는 명령으로서 제공된다.
도 30에 도시된 것과 같은 상기 탐색 명령(300)은 명령 헤더부(901) 및 Le부(906)으로 이루어진다. 상기 명령 헤더부(901)는 명령의 종류, 지시, 및 파라미터를 나타내는 데이터를 저장한다. 상기 Le부(906)는 명령 헤더부(901)의 데이터 길이를 나타내는 데이터를 저장한다.
또한, 명령 헤더부(901)는 CLA(분류)부(902), INS(지시)부(903), 제 1 파라미터(P1)부(904), 및 제 2 파라미터(P2)부(905)로 이루어진다.
상기 CLA부(902)는 명령의 종류(분류)를 나타내는 데이터를 저장한다. 상기 INS부(903)는 명령의 지시를 나타내는 데이터를 저장한다. 탐색 명령(900)에서, P1부(904) 및 P2부(905)의 파라미터에 의해 특정된 식별자 상의 제 2 계층 데이터를 탐색하는 지시를 나타내는 데이터는 INS부(903)에 설정된다.
상기 제 1 파라미터(P1)부(904) 및 제 2 파라미터(P2)부(905)는 각각 탐색되는 제 2 계층 데이터의 식별자를 나타내는 데이터(파라미터)를 각각 저장한다. 예 컨대, 도 4a, 도 4b, 및 도 4c에 도시된 데이터에 대한 포인트의 최종 업데이트 날짜(도 4a에 도시된 포인트 X 상의 데이터의 포인트의 최종 업데이트 날짜 및 도 4c에 도시된 포인트 Z 상의 날짜의 포인트의 최종 업데이트 날짜)에 대한 탐색을 요청하는 명령에서, 탐색 명령을 나타내는 데이터는 CLA부(902) 및 INS부(903)에 설정되고, "DF"는 P1부(904)에 설정되고, "03"은 P2부(905)에 설정된다.
도 30에 도시된 탐색 명령(900)이 성공적으로 수신된 경우, IC 카드의 CPU(14)는 먼저 명령이 명령(900)의 CLA부(902) 및 INS부(903)에 설정된 날짜에 기초한 탐색 명령으로서 제공되는 것을 구별한다. 명령이 탐색 명령으로서 제공되는 것으로 판정되면, CPU(14)는 P1부(904) 및 P2부(905)에 설정된 파라미터(데이터)에 의해 특정된 식별자 상의 제 2 계층 데이터를 탐색한다. 이 탐색 결과는 탐색 명령(900)에 대한 응답으로서 리더/라이터로 전송된다.
도 31은 탐색 명령(900)에 대한 응답 데이터(1000)의 구성의 일 예를 나타낸다. 이 응답 데이터(1000)는 탐색 명령(900)의 실행 결과(응답)으로서 IC 카드(1)로부터 리더/라이터(2)로 출력되는 데이터로서 제공된다.
탐색 명령(900)에 대한 응답 데이터(1000)는 데이터부(1001), 제 1 상태 코드부(1002), 및 제 2 상태 코드부(1003)으로 이루어진다.
탐색 명령(900)과 관련된 탐색 결과는 데이터부(1001)에 설정된다. 데이터부(1001)에서, 특정된 식별자 상의 제 2 계층 데이터를 포함하는 제 1 계층 데이터의 식별자를 표시하는 정보는 탐색 명령(900)에 의해 특정된 제 2 계층 데이터의 식별자의 탐색 결과로서 설정된다. 또한, 제 1 상태 코드(1002) 및 제 2 상태 코 드(1003)는 탐색 명령(900)과 관련된 처리 결과를 각각 표시하는 상태 코드로서 설정된다.
예컨대, 도 4a, 도 4b 및 도 4c에 도시된 것과 같은 데이터를 갖는 IC 카드에서, 제 1 계층으로서 기능하는 포인트 X의 데이터 식별자 "E1" 및 포인트 Z의 데이터 식별자 "E3"를 설정함으로써 얻어진 응답 데이터는 제 2 계층 데이터로서 기능하는 포인트의 최종 업데이트 날짜의 식별자(DF03)를 특정하는 탐색 명령으로 출력된다.
도 32는 상기 응답 데이터를 저장하는 메모리(응답 데이터 메모리)의 구성의 일 예를 도시한다.
도 32에 도시된 것과 같은 응답 데이터 메모리(1100)는 예컨대 데이터 메모리(15)에 제공된다. 도 32에 도시된 것과 같은 이 응답 데이터 메모리(1100)는 응답 데이터 길이 관리 정보를 저장하는 영역(1101) 및 응답 데이터를 저장하는 영역(1102)으로 이루어진다. 응답 데이터 메모리(1100)에 저장된 데이터는 예컨대 도 31에 도시된 데이터부(1001)에 설정된 데이터로서 제공된다.
이제부터, 상기한 것과 같은 네스트 구조를 갖는 제 2 계층 데이터를 탐색하는 처리 동작(탐색 처리 동작)의 흐름에 관하여 상세한 설명이 제공될 것이다.
도 33 및 도 34는 IC 카드(1)에 구비된 데이터 메모리(15)에 저장된 네스트 구조를 갖는 제 2 계층 데이터를 탐색하는 처리를 각각 나타내는 흐름도이다.
먼저, 외부 장치로서 기능하는 리더/라이터(2)는 탐색 명령(900)를 IC 카드(1)에 공급하는 것으로 가정된다. IC 카드(1)에서, 통신부(12)는 탐색 명령(900) 을 수신한다. 수신된 명령은 통신부(12)로부터 CPU(14)로 공급된다. 그다음, CPU(14)는 명령이 수신된 명령(900)의 명령 헤더부(901)의 CLA부(902) 및 INS부(903)에 의한 탐색 명령으로서 제공된다.
수신된 명령이 탐색 명령(900)으로서 제공되는 것으로 판정되면, CPU(14)는 도 5에 도시된 데이터 관리 정보로부터 제 1 제어 정보를 판독한다(단계 S600). 상기 제어 정보가 판독되면, CPU(14)는 제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되는가의 여부를 확인한다(단계 S601).
제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되지 않는 경우(단계 S601, 아니오), CPU(14)는 이후에 설명될 단계 S622로 진행한다. 제 1 계층 데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되는 것으로 확인되는 경우(단계 S601, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이가 제어 정보에 포함된 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위 내에 있는가의 여부를 확인한다(단계 S603).
제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 경우(단계 S603, 아니오), CPU(14)는 제 1 계층 데이터 상의 데이터 관리 정보가 비정상임을 나타내는(데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는) 응답 상태를 리더/라이터(2)에 출력하고(단계 S604), 처리를 종료한다.
제 1 계층 데이터의 데이터 길이가 허용가능한 범위 내에 있는 것으로 확인 되는 경우(단계 S603, 예), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보(222)에 따라 제 1 계층 데이터의 유효성을 확인한다(단계 S605). 제 1 계층 데이터의 유효성이 성공적으로 확인되지 않은 경우, 즉 데이터가 비정상인 것으로 판정되는 경우(단계 S605, 아니오), CPU(14)는 제 1 계층 데이터 상의 데이터 유효성 관리 정보가 비정상임을 나타내는(데이터의 유효성이 성공적으로 확인되지 않은 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S606), 처리를 종료한다.
제 1 계층 데이터의 유효성이 성공적으로 확인된 경우(단계 S605, 예), CPU(14)는 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소 상의 데이터를 1 바이트 만큼 판독한다(단계 S607). 1 바이트의 데이터가 상기 단계 S607에서 판독되면, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S608). 다음 데이터가 식별자의 일부로서 제공되는 것으로 이같이 확인되면(단계 S608, 예), CPU(14)는 1 바이트 만큼 다음 데이터를 판독한다(단계 S609).
다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인되면(단계 S608, 아니오), CPU(14)는 단계 S607 및 S609에서 판독된 데이터가 식별자를 표시하는 데이터로서 제공되는 것을 판정한다. 즉, CPU(14)는 단계 S607 ~ S609의 처리에 따라 제 2 계층 데이터의 제 1 식별자를 판독한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인되는 경우, 즉 제 2 계층 데이터의 식별자가 판독되는 경우(단계 S608, 아니오), CPU(14)는 판독된 제 2 계층 데이터의 식별자가 탐색 명령(900)의 P1부(904) 및 P2부(905)에 특정된 식별자(탐색을 위해 목표된 데이터의 식별자)와 일치하는가의 여부를 판정한다(단계 S610).
이 판정에 의해 판독된 식별자가 수신된 명령(900)에 의해 특정된 식별자와 일치하지 않는 것으로 판정되는 경우(단계 S610, 아니오), CPU(14)는 데이터 길이로서 식별자를 뒤따르는 데이터를 판독한다(단계 S612). 데이터 길이가 이같이 판독되면, CPU(14)는 판독 데이터 길이에 기초하여 다음 데이터의 시작 주소(다음 식별자)를 판정한다.
다음 데이터의 식별자의 시작 주소가 판정되면, CPU(14)는 다음 데이터의 식별자에 상응하는 주소가 데이터 길이 관리 정보(220)와 일치하는가의 여부를 확인한다(단계 S613). 예컨대 이 판정에서, 일치는 단계 S612에서 판독된 데이터 길이에 기초하여 판정된 다음 데이터의 시작 주소가 데이터 길이 관리 정보(220)에 의해 표시된 제 1 계층 데이터의 데이터 길이의 주소에 기초하여 허용가능한 범위를 초과하는가의 여부에 따라 확인된다. 즉, 상기 단계 S613에서, 제 2 계층 상의 다음 데이터가 제 1 계층 데이터에 존재하는가의 여부가 판정된다.
다음 식별자의 주소가 상기 판정에 의해 데이터 길이 관리 정보(220)와 일치하지 않는 것으로 판정되는 경우, 즉 제 2 계층 상의 다음 데이터가 존재하지 않는 것으로 판정되는 경우(단계 S613, 데이터 없음), CPU(14)는 이후에 설명되는 단계 S622로 진행한다.
또한, 다음 식별자의 주소가 상기 판정에 의해 데이터 길이 관리 정보(220) 와 일치하는 것으로 판정되는 경우, 즉 제 2 계층 상의 다음 데이터가 존재하는 것으로 판정되는 경우(단계 S613, 예), CPU(14)는 단계 S612에서 판독된 데이터 길이에 기초하여 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소 상의 데이터를 판독한다(단계 S616). 데이터의 1 바이트가 단계 S616에서 판독되는 경우, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S617). 다음 데이터가 식별자의 일부로서 제공되는 것으로 이같이 확인되는 경우(단계 S617, 예), CPU(14)는 데이터의 다음 1 바이트를 판독한다(단계 S618).
다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 판정된 경우(단계 S617, 아니오), CPU(14)는 단계 S617 및 S618에서 판독된 데이터가 다음 데이터의 식별자를 나타내는 데이터로서 제공되는 것으로 판정한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 확인되는 경우, 즉 제 2 계층의 다음 데이터의 식별자가 판독되는 경우(단계 S617, 아니오), CPU(14)는 판독된 식별자가 명령(900)의 P1부(904) 및 P2부(905)에 특정된 식별자와 일치하는가의 여부가 판정되는 단계 S610으로 되돌아간다.(단계 S610).
또한, 단계 S610의 판정에 의해 판독된 식별자가 수신된 탐색 명령(900)의 P1부(904) 및 P2부(905)에 특정된 식별자와 일치하는 것으로 판정되는 경우(단계 S610, 예), CPU(14)는 상기 응답 데이터 메모리(1100)의 영역(1102)의 제어 정보(201a)(즉, 제 1 계층 데이터의 식별자)에 포함된 데이터 식별자 정보(210)에 포함된 데이터 식별자 정보(210)를 저장한다(단계 S620). 이 때에, 제 1 계층 데이터 의 식별자가 응답 데이터 메모리(1100)의 영역(1101)에 저장된 응답 데이터 길이 관리 정보로서 기능하는 데이터 길이를 오프셋한 주소에 설정된다.
식별자가 응답 데이터 메모리(1100)의 영역(1102)에 설정되면, CPU(14)는 응답 데이터 길이 관리 정보에 대해 "+1"을 추가함으로써 설정된 식별자에 대한 데이터에 상응하는 양 만큼 응답 데이터의 데이터 길이를 변경한다(단계 S621).
제어 정보(201)의 항목 중에서 제어 정보(201a, ...)의 한 항목에 의해 표시된 제 1 계층 데이터의 탐색이 이루어지면(단계 S601에서도 아님, 단계 S613 또는 단계 S621에서도 아님), CPU(14)는 다음 제어 정보가 존재하는가의 여부를 판정한다(단계 S622).
다음 제어 정보가 존재하는 것으로 판정되면(단계 S622, 예), CPU(14)는 다음 제어 정보를 판독하고(단계 S623), 단계 S601로 진행한다. 즉, CPU(14)는 모든 제어 정보에 대해 단계 S600 ~ S623에서의 처리를 실행한다. 이 방법에서, 탐색 명령(900)에 의해 특정된 식별자 상의 제 2 계층 데이터에 대한 탐색은 제어 정보의 각 항목에 의해 표시된 모든 제 1 계층 데이터에 대해 이루어진다.
또한, 다음 제어 정보가 존재하지 않는 것으로 판정되는 경우(단계 S622, 아니오), CPU(14)는 탐색 처리 동작이 제어 정보의 각 항목에 의해 표시된 모든 제 1 계층 데이터에 대해 완료된 것으로 판정한다. 탐색 처리 동작이 완료된 것으로 이같이 판정되는 경우, CPU(14)는 응답 데이터 메모리(1100)에 저장된 데이터에 대한 탐색의 결과로서 응답 데이터(1000)를 리더/라이터(2)로 전송한다(단계 S624).
상기 응답 데이터 메모리의 영역(1101)에 포함된 응답 데이터 길이 정보에 대한 영역(1102)에 포함된 데이터는 이 응답 데이터(1000)의 데이터부(1001)에 설정된다. 또한, 탐색 명령에 대한 처리 동작이 정상적으로 이루어진 것을 나타내는(어떤 비정상도 발생하지 않음을 나타내는) 응답 상태는 응답 데이터(1000)의 제 1 상태부 및 제 2 상태부에 설정된다.
상기한 바와 같이, 네스트 구조를 갖는 데이터에 포함된 제 2 계층 데이터의 식별자(태그)를 특정한 탐색 명령을 성공적으로 수신한 경우, IC 카드는 탐색 결과로서 특정된 식별자 상의 제 2 계층 데이터를 포함하는 모든 제 1 계층 데이터의 식별자를 출력하기 위해서 특정된 식별자 상의 제 2 계층 데이터를 포함하는 모든 제 1 계층 데이터(모(母) 태그)를 탐색한다.
이 방법에서, 특정 식별자 상의 제 2 계층 데이터를 포함하는 제 1 계층 데이터는 각각 네스트 구조를 갖는 복수의 제 1 계층 데이터의 각각의 하나를 분석함이 없이 쉽게 검출될 수 있다. 결과적으로, 제 2 계층 데이터의 탐색은 효율적으로 이루어질 수 있다.
이제부터, 제 1 계층 데이터(네스트 구조를 갖는 데이터)에 포함된 데이터 구조를 출력하는 처리 동작에 관하여 상세한 설명이 제공될 것이다.
먼저, 제 1 계층 데이터(네스트 구조를 갖는 데이터)에 포함된 데이터 구조의 출력을 지시하는 지시 데이터(데이터 구조 출력 명령)에 관하여 상세한 설명이 제공될 것이다.
도 35는 데이터의 구조 출력 명령의 구성의 일 예를 나타낸다. 이 데이터 구조 출력 명령(1200)은 리더/라이터(2)로부터 IC 카드(1)로 공급되는 명령으로서 제공된다.
도 35에 도시된 것과 같은, 이 데이터 구조 출력 명령(1200)은 명령 헤더부(1201) 및 Le부(1206)으로 이루어진다. 상기 명령 헤더부(1201)는 명령의 종류, 지시, 및 파라미터를 나타내는 데이터를 저장한다. 상기 Le부(1206)는 명령 헤더부(1201)의 데이터 길이를 나타내는 데이터를 저장한다.
또한, 명령 헤더부(1201)는 CLA(분류)부(1202), INS(지시)부(1203), 제 1 파라미터(P1)부(1204), 및 제 2 파라미터(P2)부(1205)로 이루어진다.
상기 CLA부(1202)는 명령의 종류(분류)를 나타내는 데이터를 저장한다. 상기 INS부(1203)는 명령의 지시를 나타내는 데이터를 저장한다. 데이터 구조 출력명령(1200)에서, P1부(1204) 및 P2부(1205)의 파라미터에 의해 특정된 식별자 상의 제 1 계층 데이터에 포함된 데이터 구조의 출력을 요청하는 지시를 표시하는 데이터는 INS부(1203)에 설정된다.
상기 제 1 파라미터(P1)부(1204) 및 제 2 파라미터(P2)부(1205)는 제 1 계층 데이터의 식별자를 나타내는 데이터(파라미터)를 저장한다. 예컨대, 도 4a에 도시된 포인트 X 상의 데이터(식별자 E1)에 포함된 데이터 구조의 출력을 요청하는 데이터 구조 출력 명령(1200)에서, 데이터 구조 출력 명령을 나타내는 데이터는 CLA부(1202) 및 INS부(1203)에 설정되고, "00"은 P1부(1204)에 설정되고, 및 "E2"는 P2부(1205)에 설정된다.
도 35에 도시된 것과 같은 데이터 구조 출력 명령(1200)을 수신한 IC 카드(1)의 CPU(14)는 명령이 명령(1200)의 CLA부(1202) 및 INS부(1203)에 설정된 데이 터에 기초한 데이터 구조 출력 명령으로서 제공되는 것을 구별한다. 명령이 데이터 구조 출력 명령으로서 제공되는 것으로 구별되면, CPU(14)는 P1부(1204) 및 P2부(1205)에 설정된 파라미터(데이터)에 의해 특정된 식별자 상의 제 1 계층 데이터에 포함된 데이터 구조를 분석한다. 이 분석 결과는 데이터 구조 출력 명령(1200)에 대한 응답으로서 리더/라이터(2)로 전송된다.
도 36은 데이터 구조 출력 명령에 대한 응답 데이터의 구성의 일 예를 나타낸다. 이 응답 데이터(1300)는 데이터 구조 출력 명령(1200)의 실행 결과(응답)으로서 IC 카드(1)로부터 리더/라이터(2)로 출력되는 데이터로서 제공된다.
데이터 구조 출력 명령(1200)에 대한 응답 데이터(1300)는 데이터부(1301), 제 1 상태 코드부(1302), 및 제 2 상태 코드부(1303)으로 이루어진다.
데이터 구조 출력 명령(1200)에 관련된 탐색 결과는 데이터부(1301), 제 1 상태 코드부(1302), 및 제 2 상태 코드부(1303)로 이루어진다.
데이터 구조 출력 명령(1200)과 관련된 탐색 결과는 데이터부(1301)에 설정된다. 데이터부(1301)에는, 특정된 식별자의 제 1 계층에 포함된 데이터 구조를 나타내는 데이터가 데이터 구조 출력 명령(1200)에 의해 특정된 제 1 계층 데이터에 포함된 데이터 구조의 분석 결과로서 설정된다. 또한, 제 1 상태 코드(1302) 및 제 2 상태 코드(1303)는 데이터 구조 출력 명령(1200)과 관련된 처리 결과를 각각 표시하는 상태 코드로서 설정된다.
예컨대, 도 4a에 도시된 포인트 X의 데이터(식별자 E1)의 데이터 구조의 출력을 요청하는 데이터 구조 출력 명령을 성공적으로 수신한 경우, IC 카드(1)는 포 인트 X 상의 데이터(특정된 제 1 계층 데이터)에 포함된 제 2 계층 데이터의 식별자로서 "DF01"(제 2 계층 데이터로서 기능하는 포인트의 식별자), "DF02"(제 2 계층 데이터로서 기능하는 포인트의 상위 한계값의 식별자), 및 "DF03"(제 2 계층 데이터로서 기능하는 포인트의 최종 업데이트 날짜의 식별자)를 갖는 응답 데이터를 출력하고, 상기 데이터는 데이터부(1301)에 포함된다.
또한, 도 32에 도시된 응답 데이터 메모리(1100)에 저장된 데이터는 도 36에 도시된 것과 같은 응답 데이터(1300)의 데이터부(1301)에 설정된다.
이제부터, 네스트 구조를 갖는 제 1 계층 데이터의 데이터 구조를 출력하는 처리 동작(데이터 구조 출력 처리 동작)의 흐름에 관하여 상세한 설명이 제공될 것이다.
도 37 및 도 38은 네스트 구조를 갖는 제 1 계층 데이터에 포함된 데이터 구조를 출력하는 처리를 각각 나타내는 흐름도이다.
먼저, 외부 장치로서 기능하는 리더/라이터(2)는 데이터 구조 출력 명령을 IC 카드(1)에 공급한 것으로 가정된다. IC 카드(1)에서, 통신부(12)는 데이터 구조 출력 명령(1200)을 수신한다. 수신된 명령은 통신부(12)로부터 CPU(14)로 공급된다. 그다음, CPU(14)는 명령이 수신된 명령(1200)의 명령 헤더부(1201)의 CLA부(1202) 및 INS부(1203)에 의한 데이터 구조 출력 명령으로서 제공된다.
수신된 명령이 데이터 구조 출력 명령(1200)으로서 제공되는 것으로 판정되면, CPU(14)는 명령의 P1부(1204) 및 P2부(1205)에 설정된 파라미터와 일치하는 식별자 상의 제 1 계층 데이터 상의 제어 정보를 탐색한다. 이 처리는 도 5에 도시 된 데이터 관리 정보로부터 P1부(1204) 및 P2부(1205)에 특정된 식별자와 일치하는 제어 정보를 탐색한다(단계 S700).
P1부(1204) 및 P2부(1205)에 설정된 파라미터와 일치하지 않는 식별자 상의 제어 정보가 성공적으로 특정되지 않은 경우(단계 S700, 아니오), CPU(14)는 명령에 의해 특정된 데이터 상의 제어 정보가 등록되지 않음을 나타내는 응답 상태를 리더/라이터(2)에 출력하고(단계 S701), 처리를 종료한다.
P1부(1204) 및 P2부(1205)에 설정된 파라미터와 일치하는 식별자 상의 제어 정보가 성공적으로 특정된 경우(단계 S700, 예), CPU(14)는 제어 정보에 포함된 설정된 주소 정보(211)에 의해 표시된 주소에서 이미 설정되었는가의 여부를 확인한다(단계 S702). 어떤 데이터도 제어 정보에 포함된 설정된 주소 정보(211)에 의해 표시된 주소에 설정되지 않는 경우(단계 S702, 아니오), CPU(14)는 데이터가 등록되지 않음을 나타내는 응답 상태를 리더/라이터(2)로 출력하고(단계 S703), 처리를 종료한다.
데이터가 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소에 설정되는 경우(단계 S702, 예), CPU(14)는 명령에 의해 특정된 제 1 계층 데이터 상의 데이터 길이 관리 정보(220)에 의해 표시된 데이터 길이가 제어 정보에 포함된 설정가능한 크기 정보(212)에 의해 표시된 허용가능한 범위 내에 있는가의 여부를 확인한다(단계 S704).
명령에 의해 특정된 제 1 계층 데이터의 데이터 길이가 허용가능한 범위를 초과하는 경우(단계 S704, 아니오), CPU(14)는 특정된 제 1 계층 데이터 상의 데이 터 관리 정보가 비정상적임을 나타내는(데이터 길이가 허용가능한 범위를 초과하는 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S705), 처리를 종료한다.
명령에 의해 특정된 제 1 계층 데이터의 데이터 길이가 허용가능한 범위 내에 있는 것이 확인되는 경우(단계 S704, 예), CPU(14)는 명령에 의해 특정된 제 1 계층 데이터 상의 데이터 유효성 관리 정보(222)에 따라 제 1 계층 데이터의 유효성을 확인한다(단계 S706).
명령에 의해 특정된 제 1 계층 데이터의 유효성이 성공적으로 확인되지 않는 경우(단계 S706, 아니오), CPU(14)는 제 1 계층 데이터 상의 비정상 데이터 유효성 관리 정보가 명령에 의해 특정된 것을 나타내는(데이터의 유효성이 성공적으로 확인되지 않은 것을 나타내는) 응답 상태를 리더/라이터(2)로 출력하고(단계 S707), 처리를 종료한다.
명령에 의해 특정된 제 1 계층 데이터의 유효성이 성공적으로 확인된 경우(단계 S706, 예), CPU(14)는 제어 정보에 포함된 설정 주소 정보(211)에 의해 표시된 주소 상의 데이터를 1 바이트 만큼 판독한다(단계 S708). 1 바이트의 데이터가 상기 단계 S708에서 판독되면, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S709). 다음 데이터가 식별자의 일부로서 제공되는 경우(단계 S709, 예), CPU(14)는 1 바이트 만큼 다음 데이터를 판독한다(단계 S710).
다음 데이터가 식별자의 일부로서 제공되지 않는 경우(단계 S709, 아니오), CPU(14)는 단계 S708 및 S710에서 판독된 데이터가 제 1 계층 데이터에 포함된 제 2 계층 데이터의 식별자로서 제공되는 것을 판정한다. 즉, CPU(14)는 단계 S708 ~ S710의 처리에 의해 특정된 제 1 계층 데이터에 포함된 제 2 계층 상의 제 1 식별자를 판독한다.
그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 경우, 즉 특정된 제 1 계층 데이터에 포함된 제 2 계층 데이터 상의 제 1 데이터가 성공적으로 판독된 경우(단계 S709, 아니오), CPU(14)는 응답 데이터 메모리(1199)의 영역(1102)의 판독된 제 2 계층 데이터의 식별자(즉, 특정된 제 1 계층 데이터에 존재하는 제 2 계층 데이터의 식별자)를 저장한다(단계 S711). 이 때에, 제 2 계층 데이터의 식별자는 응답 데이터 메모리(1100)의 영역(1101)에 저장된 응답 데이터 길이 관리 정보로서 기능하는 데이터 길이를 오프셋한 주소에 설정된다.
식별자가 응답 데이터 메모리(1100)의 영역(1102)에 설정되면, CPU(14)는 응답 데이터 길이 관리 정보에 대해 "+2"를 추가함으로써 설정 식별자 상의 데이터에 상응하는 양 만큼의 응답 데이터의 데이터 길이를 변경한다(단계 S712).
응답 데이터 메모리(100)에서 판독된 제 2 식별자가 설정되면, CPU(14)는 식별자 데이터의 데이터 길이로서 식별자를 뒤따르는 데이터를 판독한다(단계 S713). 데이터 길이가 이같이 판독되면, CPU(14)는 판독 데이터 길이에 기초하여 다음 제 2 계층 데이터(다음 데이터)의 시작 주소를 판정한다.
다음 데이터 식별자의 시작 주소가 판정되면, CPU(14)는 다음 데이터 식별자에 상응하는 주소가 데이터 길이 관리 정보(220)의 데이터 길이와 일치하는가의 여 부를 확인한다(단계 S714). 예컨대 단계 S714의 판정에서, 일치는 단계 S713에서 판독된 데이터 길이에 기초하여 판정된 다음 데이터의 시작 주소가 데이터 길이 관리 정보(220)에 의해 표시된 제 1 계층 데이터의 데이터 길이에 기초한 주소의 범위를 초과하는가의 여부에 따라 확인된다. 즉, 상기 단계 S714에서, 제 2 계층 상의 다음 데이터가 제 1 계층 데이터에 존재하는가의 여부가 판정된다.
다음 식별자의 주소가 단계 S714의 데이터 길이 관리 정보(220)의 데이터 길이와 일치하는 것으로 판정되는 경우, 즉 제 2 계층 상의 다음 데이터가 존재하는 것으로 판정되는 경우(단계 S714, 예), CPU(14)는 1 바이트 만큼 단계 S713에서 판독된 데이터 길이에 기초한 제 2 계층 상의 다음 데이터의 식별자에 상응하는 주소 상의 데이터를 판독한다(단계 S715). 데이터의 1 바이트가 단계 S715에서 판독되는 경우, CPU(14)는 다음 데이터(다음 1 바이트)가 식별자의 일부로서 제공되는가의 여부를 확인한다(단계 S716). 다음 데이터가 식별자의 일부로서 제공되는 경우(단계 S716, 예), CPU(14)는 1 바이트 만큼 다음 데이터를 판독한다(단계 S717).
다음 데이터가 식별자의 일부로서 제공되지 않는 것으로 판정된 경우(단계 S716, 아니오), CPU(14)는 단계 S617 및 S618에서 판독된 데이터가 다음 데이터의 식별자를 나타내는 데이터로서 제공되는 것을 판정한다. 그러므로, 다음 데이터가 식별자의 일부로서 제공되지 않는 경우, 즉 제 2 계층의 다음 데이터의 식별자가 판독된 경우(단계 S716, 아니오), CPU(14)는 단계 S711으로 돌아가고, 응답 데이터 메모리에 대해 판독된 식별자(제 2 계층 데이터의 식별자)를 설정하는 처리 동작을 실행한다.
단계 S711 ~ S717의 처리가 제 2 계층 상의 다음 데이터의 식별자가 단계 S714에 존재하지 않는 것으로 판정될 때까지 반복적으로 실행된다. 즉, 데이터 구조 출력 명령(1200)에 의해 특정된 제 1 계층 데이터 상의 데이터 구조(제 1 계층 데이터에 존재하는 모든 제 2 계층 데이터의 식별자)를 나타내는 정보는 단계 S711 ~ S717의 처리에 따라 응답 데이터 메모리(1100)에 설정된다.
즉, 제 2 계층 상의 다음 데이터의 식별자의 주소가 단계 S714의 판정에 의해 데이터 길이 관리 정보(220)의 데이터 길이와 일치하지 않는 것으로 판정되는 경우(단계 S714, 데이터 없음), CPU(14)는 분석 처리 동작이 데이터 구조 출력 명령(1200)에 의해 특정된 제 1 계층 데이터의 데이터 구조를 완료한 것을 판정한다. 탐색 처리 동작이 완료된 것으로 이같이 판정되는 경우, CPU(14)는 응답 데이터 메모리(1100)에 저장된 데이터를 분석한 결과로서 응답 데이터(1300)를 리더/라이터(2)에 전송한다(단계 S718).
응답 데이터 메모리(1100)의 영역(1101)에 포함된 응답 데이터 길이 관리 정보에 대한 영역(1102)에 포함된 데이터는 이 응답 데이터(1300)의 데이터부(1301)에 설정된다. 또한, 처리가 데이터 구조 출력 명령(1200)에 대해 정상적으로 실행된 것을 각각 나타내는(어떤 비정상도 발생하지 않음을 나타내는) 응답 상태는 응답 데이터(1300)의 제 1 상태부(1302) 및 제 2 상태부(1303)에 설정된다.
상기한 바와 같이, 네스트 구조를 갖는 제 1 계층 데이터의 식별자를 특정한 데이터 구조 출력 명령이 성공적으로 수신된 경우, IC 카드는 이 분석 결과로서 특정된 제 1 계층 데이터에 포함된 모든 제 2 계층 데이터의 식별자를 출력하기 위해 서 특정된 제 1 계층 데이터에 포함된 모든 제 2 계층 데이터의 식별자를 분석한다.
이 방법에서, 네스트 구조를 갖는 제 1 계층 데이터에 포함된 제 2 계층 데이터의 콘텐츠는 쉽게 검출될 수 있다.
추가적인 장점 및 변형은 통상의 지식인에게 쉽게 발생될 것이다. 그러므로, 더 넓은 측면에서의 발명은 여기에서 나타나고 설명된 특정 상세 및 대표적인 실시예에 한정되지 않는다. 따라서, 다양한 변형은 첨부된 특허청구범위 및 그들의 균등물에 의해 한정된 것과 같은 일반적인 발명의 개념의 기술적 사상 또는 정신으로부터 벗어남이 없이 이루어질 수 있다.
본 발명은 네스트 구조를 갖는 데이터에 액세스를 효율적으로 제공할 수 있는 효과가 있다.

Claims (10)

  1. 휴대가능한 전자 장치에 있어서,
    복수의 하위 계층 데이터가 상위 계층 데이터에 존재하는 네스트(nest) 구조를 갖는 데이터를 저장하는 메모리와,
    상기 메모리에 저장된 네스트 구조를 갖는 상기 데이터에 관하여 상기 상위 계층 데이터에 존재하는 상기 복수의 하위 계층 데이터 중에서 단지 특정 하위 계층 데이터로만 다이렉트 액세스를 제공하는 제어부를
    포함하는 것을 특징으로 하는 휴대가능한 전자 장치.
  2. 제 1 항에 있어서,
    상기 상위 계층 데이터 및 상기 하위 계층 데이터는 태그, 길이, 및 값으로 이루어진 표현 포맷인 것을 특징으로 하는 휴대가능한 전자 장치.
  3. 제 1 항에 있어서,
    외부 장치와 통신하는 통신부를 추가로 포함하고,
    상기 통신부에 의해 특정되는 상기 하위 계층 데이터 및 상기 상위 계층 데이터를 갖는 명령이 성공적으로 수신된 경우, 상기 제어부는 상기 명령에 의해 특정된 상기 상위 계층 데이터에 존재하는 상기 복수의 하위 계층 데이터 중에서 상기 명령에 의해 특정된 상기 하위 계층 데이터에 다이렉트 액세스를 제공하는 것을 특징으로 하는 휴대가능한 전자 장치.
  4. 제 3 항에 있어서,
    상기 통신부에 의해 특정된 상기 상위 계층 데이터 및 상기 하위 계층 데이터를 갖는 판독 명령이 성공적으로 수신된 경우, 상기 제어부는 상기 명령에 의해 특정된 상기 상위 계층 데이터에 존재하는 상기 복수의 하위 계층 데이터 중에서 상기 명령에 의해 특정된 단지 상기 하위 계층 데이터 만을 판독하는 것을 특징으로 하는 휴대가능한 전자 장치.
  5. 제 3 항에 있어서,
    상기 통신부에 의해 특정된 상기 상위 계층 데이터 및 상기 하위 계층 데이터를 갖는 데이터 변경 명령이 성공적으로 수신된 경우, 상기 제어부는 상기 명령에 의해 특정된 단지 상기 하위 계층 데이터만을 상기 명령에 의해 특정된 상기 상위 계층 데이터에 존재하는 상기 복수의 하위 계층 데이터 중에서 변경되는 데이터로 재쓰기하고,
    상기 데이터는 상기 명령에 의해 할당되는 것을 특징으로 하는 휴대가능한 전자 장치.
  6. 제 3 항에 있어서,
    상기 통신부에 의해 특정된 상기 상위 계층 데이터, 상기 하위 계층 데이터 및 시퀀스를 갖는 상기 시퀀스 특정 판독 명령이 성공적으로 수신된 경우, 상기 제어부는 상기 명령에 의해 특정된 상기 상위 계층 데이터 중에서 상기 명령에 의해 특정된 시퀀스의 단지 하위 계층 데이터만을 판독하고,
    상기 하위 계층 데이터는 상기 명령에 의해 특정된 상기 상위 계층 데이터에 존재하는 것을 특징으로 하는 휴대가능한 전자 장치.
  7. 제 3 항에 있어서,
    상기 통신부에 의해 특정된 상기 상위 계층 데이터 및 상기 하위 계층 데이터를 갖는 삭제 명령이 성공적으로 수신된 경우, 상기 제어부는 상기 명령에 의해 특정된 상기 상위 계층 데이터 중에 존재하는 상기 복수의 하위 계층 데이터 중에서 상기 명령에 의해 특정된 단지 상기 하위 계층 데이터 만을 삭제하는 것을 특징으로 하는 휴대가능한 전자 장치.
  8. 제 3 항에 있어서,
    상기 통신부에 의해 특정된 상기 상위 계층 데이터를 갖는 추가 쓰기 명령이 성공적으로 수신된 경우, 상기 제어부는 추가로 쓰여지는 데이터를 상기 명령에 의해 특정된 상기 상위 계층 데이터로의 하위 계층 데이터로서 추가로 쓰고,
    상기 추가적으로 기록되는 데이터는 상기 명령에 의해 할당되는 것을 특징으로 하는 휴대가능한 전자 장치.
  9. 제 3 항에 있어서,
    상기 통신부에 의해 특정된 상기 하위 계층 데이터를 갖는 탐색 명령이 성공적으로 수신된 경우, 상기 제어부는 상기 메모리 내에 저장된 상기 네스트 구조를 갖는 상기 데이터 중에서 상기 명령에 의해 특정된 상기 하위 계층 데이터를 포함하는 상기 상위 계층 데이터를 탐색하는 것을 특징으로 하는 휴대가능한 전자 장치.
  10. 제 3 항에 있어서,
    상기 통신부에 의해 특정된 상기 상위 계층 데이터를 갖는 데이터 출력 명령이 성공적으로 수신된 경우, 상기 제어부는 상기 명령에 의해 특정된 상기 상위 계층 데이터에 존재하는 모든 상기 하위 계층 데이터를 나타내는 정보를 추출하는 것을 특징으로 하는 휴대가능한 전자 장치.
KR1020050023237A 2004-03-31 2005-03-21 휴대가능한 전자 장치 KR20060044484A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00104275 2004-03-31
JP2004104275A JP4594639B2 (ja) 2004-03-31 2004-03-31 携帯可能電子装置
JPJP-P-2004-00258624 2004-09-06
JP2004258624A JP4621459B2 (ja) 2004-09-06 2004-09-06 携帯可能電子装置

Publications (1)

Publication Number Publication Date
KR20060044484A true KR20060044484A (ko) 2006-05-16

Family

ID=34889457

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050023237A KR20060044484A (ko) 2004-03-31 2005-03-21 휴대가능한 전자 장치

Country Status (4)

Country Link
US (1) US7343452B2 (ko)
EP (1) EP1582988B8 (ko)
KR (1) KR20060044484A (ko)
SG (1) SG120215A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008096759A1 (ja) * 2007-02-07 2008-08-14 Kabushiki Kaisha Toshiba 情報記憶媒体及び媒体処理システム
JP2010182270A (ja) * 2009-02-09 2010-08-19 Toshiba Corp 携帯可能電子装置および携帯可能電子装置におけるデータ管理方法
JP2010211516A (ja) * 2009-03-10 2010-09-24 Toshiba Corp 携帯可能電子装置および携帯可能電子装置におけるアクセス制御方法
CN103124959A (zh) * 2010-05-19 2013-05-29 凯姆莱西·甘地 数据对象的组合
FR2983622B1 (fr) * 2011-12-02 2014-01-24 Morpho Ecriture de donnees dans une memoire non volatile de carte a puce

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274397A (ja) 1993-03-24 1994-09-30 Toshiba Corp ファイル管理方式
JPH11282989A (ja) 1998-03-26 1999-10-15 Toshiba Corp 携帯可能電子装置
JP3782261B2 (ja) 1999-07-23 2006-06-07 株式会社東芝 携帯可能電子装置
WO2002097670A1 (fr) 2001-05-30 2002-12-05 Matsushita Electric Industrial Co.,Ltd. Terminal, serveur, procede de stockage de donnees et programme d'execution dudit procede
JP2003288258A (ja) 2002-03-28 2003-10-10 Toppan Printing Co Ltd Icカード及びicカードのメモリ管理方法

Also Published As

Publication number Publication date
US7343452B2 (en) 2008-03-11
SG120215A1 (en) 2006-03-28
EP1582988B1 (en) 2011-08-10
US20050234855A1 (en) 2005-10-20
EP1582988A3 (en) 2007-01-17
EP1582988B8 (en) 2012-02-22
EP1582988A2 (en) 2005-10-05

Similar Documents

Publication Publication Date Title
JP5329884B2 (ja) 携帯可能電子装置および携帯可能電子装置におけるデータ処理方法
CN102087715B (zh) 信息处理设备、信息处理方法和程序
EP1770659B1 (en) Portable electronic device and IC card
EP2278501B1 (en) Smartcard for portable electronic device
KR20060044484A (ko) 휴대가능한 전자 장치
EP2270758B1 (en) Portable electronic apparatus, processing apparatus for portable electronic apparatus, and data processing method in portable electronic apparatus
JP4594639B2 (ja) 携帯可能電子装置
JP5301018B2 (ja) 携帯可能電子装置
JP4621459B2 (ja) 携帯可能電子装置
JP5823109B2 (ja) 携帯可能電子装置、及び携帯可能電子装置の制御方法
JP4921729B2 (ja) 携帯可能電子装置、icカードおよびicモジュール
JP5085055B2 (ja) Icカードおよびicモジュール
JP2010211516A (ja) 携帯可能電子装置および携帯可能電子装置におけるアクセス制御方法
JP5198607B2 (ja) 携帯可能電子装置、icカードおよびicモジュール
JP5269179B2 (ja) 携帯可能電子装置、icカードおよびicモジュール
EP1600900B1 (en) Mobile electronic device
JP2011060136A (ja) 携帯可能電子装置、および、携帯可能電子装置におけるデータ管理方法
JP2003150913A (ja) 携帯可能電子装置、携帯可能電子装置のファイル選択方法、及び上位装置
JP2005346338A (ja) 携帯型情報記憶媒体、そのプログラム及び携帯型情報記憶媒体の処理解析方法
JP2018194995A (ja) 電子情報記憶媒体、icカード、データ送信方法、データ書き込み方法、データ送信プログラム及びデータ書き込みプログラム
JP2007102559A (ja) 携帯可能電子装置
JP2017021443A (ja) 電子情報記憶媒体、情報処理方法及び代表アプリケーション
JP6178387B2 (ja) 電子装置、及び電子装置の制御方法
JP2014160499A (ja) 携帯可能電子装置、及び携帯可能電子装置の制御方法
JP2019008671A (ja) 電子情報記憶装置、icカード、データ復元方法、及びデータ復元プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee