一种调用瞬态对象的管理方法、设备及智能卡的制作方法

文档序号:9524133阅读:238来源:国知局
一种调用瞬态对象的管理方法、设备及智能卡的制作方法
【技术领域】
[0001]本发明涉及智能卡技术领域,尤其涉及一种可基于智能卡的调用瞬态对象的管理方法、设备及相应的智能卡。
【背景技术】
[0002]智能卡上存在一类具有Init (初始化)、Dofinal (结束)两个方法成员的特殊对象,在该类特殊对象中,Init方法和Dofinal方法成对使用,组合起来完成某一个具体的功能目标,其中,Init方法可用于完成初始化,Dofinal方法可用于完成功能目标并结束此次组合调用。具体地,可将此类对象称为C10(Couple Invoke Object,组合调用对象)。比如,在 Java Card V2.2.1 的 javacardx.crypto 包中定义了 API (Applicat1n ProgramInterface,应用程序接口)性质的Cipher虚类,该Cipher虚类中即具有Init方法和Dofinal方法,Init方法用于对算法进行初始化,Dofinal用于得到计算结果并结束算法运算。所有的加解密算法功能的实现都必须继承Cipher虚类实现其定义的接口函数,比如实现DES(Data Encrypt1n Algorithm,数据加密算法)算法的DesCipher类就继承了 Cipher虚类。相应地,由DesCipher类实例出来的对象则具有Init方法和Dofinal方法两个方法成员,即属于C10。另外,各C1中一般还具有一个或多个用于存储上下文等中间结果的数据成员。比如DesCipher类中还定义了用于缓存DES块运算中间结果的Byte型数组等,这些数据成员只有在其所属C10调用Init方法之后和调用Dofinal方法返回之前具有使用价值,具有瞬态性。
[0003]但是,目前,在现有技术中,并未对C10中的上述具备相应瞬态性的数据成员进行特殊的处理,而是将其作为一般的TO (Transient Object,瞬态对象)进行处理,如,在C1实例化时即为上述数据成员分配相应的TR(Transient Ram,瞬态空间),并在C10被回收时才释放上述数据成员所占据的瞬态空间,从而使得在上述数据成员并不具备相应的使用价值的期间仍占据智能卡中的相应瞬态空间,导致智能卡中的瞬态空间的利用率并不高。

【发明内容】

[0004]本发明实施例提供了一种IT0(Invoke Transient 0bject,调用瞬态对象)的管理方法、设备及相应的智能卡,用以解决目前存在的将具备瞬态性的数据成员作为普通的瞬态对象进行处理时所导致的智能卡中的瞬态空间的利用率较低的问题。
[0005]本发明实施例提供了一种ΙΤ0的管理方法,包括:
[0006]针对智能卡中的任一具有Init方法成员以及Dofinal方法成员的C10,在所述C10调用所述C1中的Init方法的过程中,从ITR(Invoke Transient Ram,调用瞬态空间)共享区域中为所述C10中的各ΙΤ0分配相应的ITR,并在所述C10调用所述C10中的Dofinal方法的过程中,释放所述C10中的各ΙΤ0占据的ITR ;
[0007]其中,所述ITR共享区域为预先分配的、能够被所述智能卡中的所有ΙΤ0所共享的瞬态空间,所述C10中的各ΙΤ0为用于在所述C10中的Init方法成员以及Dofinal方法成员组合调用期间缓存中间结果的数据成员。
[0008]进一步地,在从ITR共享区域中为所述C1中的各ΙΤ0分配相应的ITR之前,所述方法还包括:
[0009]在实例化所述C1时,通过创建所述C1中的各ΙΤ0的对象头的方式创建所述C1中的各ΙΤ0 ;其中,针对所述C1中的任一 ΙΤ0,所述ΙΤ0的对象头中具备用于记录所述ΙΤ0的变量类型以及所占用的数组大小的变量类型和数组大小位段,以及,用于指向所述ΙΤ0的数据体的首地址的数据体指针位段。
[0010]进一步地,在所述C10调用所述C10中的Init方法的过程中,从ITR共享区域中为所述C10中的各ΙΤ0分配相应的ITR,包括:
[0011]在所述C10调用所述C10中的Init方法之后、且在所述C10中的Init方法返回之前,针对所述C10中的任一 ΙΤ0,根据所述ΙΤ0的对象头中的变量类型和数组大小位段的取值计算得到所述ΙΤ0所需占用的ITR字节大小,并根据计算得到的ITR字节大小,从所述ITR共享区域的闲置空间中分配与所述ITR字节大小相匹配的空间作为所述ΙΤ0的ITR,以及,将分配的所述空间的首地址作为所述ΙΤ0的ITR的首地址写入所述ΙΤ0的对象头中的数据体指针位段。
[0012]进一步地,在从ITR共享区域中为所述C10中的各ΙΤ0分配相应的ITR之后,且在释放所述C10中的各ΙΤ0占据的ITR之前,所述方法还包括:
[0013]通过访问为所述C10中的各ΙΤ0分配的ITR的方式,实现对所述C10中的各ΙΤ0的访问。
[0014]进一步地,在所述C10调用所述C10中的Dofinal方法的过程中,释放所述C10中的各ΙΤ0占据的ITR,包括:
[0015]在所述C10调用所述C10中的Dofinal方法之后、且在所述C10中的Dofinal方法返回之前,针对所述C10中的任一 ΙΤ0,根据所述ΙΤ0的对象头中的变量类型和数组大小位段的取值,计算得到所述Ι??所占用的ITR字节大小,并从所述ΙΤ0的对象头中的数据体指针位段获取所述ΙΤ0的ITR的首地址;根据所述ΙΤ0所占用的ITR字节大小以及所述ΙΤ0的ITR的首地址,将所述ITR共享区域中的以所述首地址为起始地址且占用所述ITR字节大小的连续空间进行清零操作。
[0016]进一步地,在释放所述C10中的各ΙΤ0占据的ITR之后,所述方法还包括:
[0017]在回收所述C10时,通过删除所述C10中的各ΙΤ0的对象头的方式删除所述C10中的各ΙΤ0。
[0018]相应地,本发明实施例还提供了一种ΙΤ0的管理设备,包括:
[0019]分配模块,用于针对智能卡中的任一具有初始化Init方法成员以及结束Dofinal方法成员的组合调用对象C10,在所述C10调用所述C10中的Init方法的过程中,从ITR共享区域中为所述C10中的各ΙΤ0分配相应的ITR ;其中,所述ITR共享区域为预先分配的、能够被所述智能卡中的所有ΙΤ0所共享的瞬态空间,所述C10中的各ΙΤ0为用于在所述C10中的Init方法成员以及Dofinal方法成员组合调用期间缓存中间结果的数据成员;
[0020]释放模块,用于在所述C10调用所述C10中的Dofinal方法的过程中,释放所述C1中的各ΙΤ0占据的ITR。
[0021 ] 进一步地,所述管理设备还包括创建模块:
[0022]所述创建模块,用于在从ITR共享区域中为所述C1中的各ΙΤ0分配相应的ITR之前,在实例化所述C1时,通过创建所述C1中的各ΙΤ0的对象头的方式创建所述C1中的各ΙΤ0 ;其中,针对所述C1中的任一 ΙΤ0,所述ΙΤ0的对象头中具备用于记录所述ΙΤ0的变量类型以及所占用的数组大小的变量类型和数组大小位段,以及,用于指向所述ΙΤ0的数据体的首地址的数据体指针位段。
[0023]进一步地,所述分配模块,具体用于在所述C1调用所述C1中的Init方法之后、且在所述C1中的Init方法返回之前,针对所述C1中的任一 ΙΤ0,根据所述ΙΤ0的对象头中的变量类型和数组大小位段的取值计算得到所述ΙΤ0所需占用的ITR字节大小,并根据计算得到的ITR字节大小,从所述ITR共享区域的闲置空间中分配与所述ITR字节大小相匹配的空间作为所述ΙΤ0的ITR,以及,将分配的所述空间的首地址作为所述ΙΤ0的ITR的首地址写入所述ΙΤ0的对象头中的数据体指针位段。
[0024]进一步地,所述管理设备还包括访问模块:
[0025]所述访问模块,用于在从ITR共享区域中为所述C10中的各ΙΤ0分配相应的ITR之后,且在释放所述C10中的各ΙΤ0占据的ITR之前,通过访问为所述C10中的各ΙΤ0分配的ITR的方式,实现对所述C10中的各ΙΤ0的访问。
[0026]进一步地,所述释放模块,具体用于在所述C10调用所述C10中的Dofinal方法之后、且在所述C10中的Dofinal方法返回之前,针对所述C10中的任一 ΙΤ0,根据所述ΙΤ0的对象头中的变量类型和数组大小位段的取值,计算得到所述ΙΤ0所占用的ITR字节大小,并从所述ΙΤ0的对象头中的数据体指针位段获取所述ΙΤ0的ITR的首地址;根据所述ΙΤ0所占用的ITR字节大小以及所述ΙΤ0的ITR的首地址,将所述ITR共享区域中的以所述首地址为起始地址且占用所述ITR字节大小的连续空间进行清零操作。
[0027]进一步地,所述管理设备还包括删除模块:
[0028]所述删除模块,用于在释放所述C10中的各ΙΤ0占据的ITR之后,在回收所述C10时,通过删除所述C10中的各ΙΤ0的对象头的方式删除所述C10中的各ΙΤ0。
[0029]进一步地,本发明实施例还提供了一种智能卡,所述
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1