Small-OS中的变量基本上可分为RAM和EEPROM变量。RAM变量在每次智能卡复位后都要重新初始化并仅在会话期内保存这些值。然雨,数据可以不失时地存储在RAM变量中,而且写循环的次数不受限制。EEPROM变量相反,都是用于实现文件管理器的,对于这些数据的内容和访问条件在会话期间必须存在,所有这些变量均列举在表1~表5中。
表1 Small-OS所用的回送代码常数
表2 Small-OS中用于传送给和传送自智能卡的数据的变量(所列举的是典型地保存在RAM中的变量)
表3 Small-OS中用于文件管理和文件访问的变量(所列举的是典型地保存在RAM中的变量)
表4 Small-OS中用于文件管理的通用数据结构(所列举的是典型地保存在EEPROM中的变量)
表5 Small-OS中管理线性可变结构的内部EF用的数据结构(这些EF用于存储PIN和密钥,所列举的是典型地保存在EEPROM中的变量)
表6 Small-OS中管理透明和线性固定结构的工作EF用的数据结构(所列举的是典型地保存在EEPROM中的变量)
1)Small-OS的BAM变量
发送和接收缓存器区占据了RAM变量的主要部分。一个APDU的所有数据元可以经过它自己的专门变量来访问 。为了管理这些少量的可用之RAM,在实际上发送和接收缓存器有时被安排得部分重叠。于是,某些命令必 须从操作系统例外处理器了解到只有在接收缓存器中的所有数据都被处理之后才能写人发送缓存器之中。为 了提高可理解性,此处未采用这样的存储量化,因而发送和接收缓存器彼此是完全分开的。
RAM变量的第2大群与文件树的管理有关,提供了几个指针,它们指向当前的目录(…Prt。CurrentDE), 当前的文件(…Ptr。CurrentWEE)和当前有效的密钥文件(…Ptr。CurrentEFKey)。对于面向记录的EF( 线性固定的FF),也指派了一个当前选择记录的指针(…Ptr.CurrentRecord)。所有的指针都用前缀Ptr 来标识,当它们不被允许使用时,其值都被明显地设置为C-InvalidPointer。利用这些指针可对目录(MF和 DF)和文件(EF)寻址,如图1所示。
图1 Small-OS中用来对目录(ME和DE)和文件(EF)寻址的数据结构之例
两个变量SecurityState.MF和SecurityState.DF相应地标识着MF和现行选择的DF的安全状态。文件所达到 的安全状态以正整数存储在这些变量之中。这里,“0”值表示没有达到安全状态,当Small-OS在复位后被 初始化时,其值被自动设定。 另外的RAM存储量是程序堆栈,DES加密算法和工作寄存器所需要的。这里假设它们都是隐含的,所以没有为它们指派专门的变量。
2)Small-OS的EEPROM变量
为了简单起见,智能卡的文件树被实现为多维数组。在一个真正的智能卡操作系统中用这种方法时要用的存储量太多了。在真正的文件管理系统中通常所用的基本结构是单向链接表。借TLV编码之助,表中数据元的长度能保持为可变的。这样减少了为文件管理需用的存储量,因为只有必需的数据元才被存储在存储器中。DE和EF的文件头标的大小,包括了这些文件必需的所有信息,通常在20~40字节之间。然而,当操作系统用语言实现而且运行在存储量限制比较少的硬件环境中时,在Small-OS中所用的多维数组文件结构可以毫无问题的提供一个简单并较为有效的方案。例如,在“智能卡仿真器”中就采用了接近相同的结构。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。