001 /* 002 * =========================================================================================== 003 * = COPYRIGHT 004 * PAX Computer Technology (Shenzhen) Co., Ltd. PROPRIETARY INFORMATION 005 * This software is supplied under the terms of a license agreement or nondisclosure 006 * agreement with PAX Computer Technology (Shenzhen) Co., Ltd. and may not be copied or 007 * disclosed except in accordance with the terms in that agreement. 008 * Copyright (C) 2017-2023 PAX Computer Technology (Shenzhen) Co., Ltd. All rights reserved. 009 * Description: // Detail description about the function of this module, 010 * // interfaces with the other modules, and dependencies. 011 * Revision History: 012 * Date Author Action 013 * 2017/04/01 PAX Create/Add/Modify/Delete 014 * =========================================================================================== 015 */ 016 017package com.pax.dal.memorycard; 018 019import com.pax.dal.entity.QInfo; 020import com.pax.dal.exceptions.AT88SC1608DevException; 021 022public interface ICardAT88SC1608 extends IMemoryCard { 023 024 /** 025 * <div class="zh"> 重置 AT88SC1608. </div> <div class="en"> Reset AT88SC1608. </div> 026 * 027 * @return <div class="zh"> 重置返回数据,4字节 </div> <div class="en"> data of reset, 4 bytes </div> 028 * @throws AT88SC1608DevException 029 */ 030 public byte[] open() throws AT88SC1608DevException; 031 032 /** 033 * <div class="zh"> 关闭 AT88SC1608. </div> <div class="en"> Close AT88SC1608. </div> 034 * 035 * @throws AT88SC1608DevException 036 */ 037 public void close() throws AT88SC1608DevException; 038 039 /** 040 * <div class="zh"> 选择用户区 </div> <div class="en"> Choose user zone. </div> 041 * 042 * @param userZoneIndex 043 * <div class="zh"> 用户区索引 </div> <div class="en"> the user zone index </div> 044 * @throws AT88SC1608DevException 045 */ 046 public void setUserZone(int userZoneIndex) throws AT88SC1608DevException; 047 048 /** 049 * <div class="zh"> 读取用户区 </div> <div class="en"> Read user zone. </div> 050 * 051 * @param baddr 052 * <div class="zh"> 起始地址 </div> <div class="en"> begin address </div> 053 * @param nums 054 * <div class="zh"> 要读取的字节数 </div> <div class="en"> bytes to be read </div> 055 * @return <div class="zh"> n字节数据 </div> <div class="en"> n bytes data </div> 056 * @throws AT88SC1608DevException 057 */ 058 public byte[] readUserZone(int baddr, int nums) throws AT88SC1608DevException; 059 060 /** 061 * <div class="zh"> 写用户区 </div> <div class="en"> Write user zone. </div> 062 * 063 * @param baddr 064 * <div class="zh"> 起始地址 </div> <div class="en"> begin address </div> 065 * @param dataBlock 066 * <div class="zh"> 写的数据 </div> <div class="en"> data to be write </div> 067 * @throws AT88SC1608DevException 068 */ 069 public void progUserZone(int baddr, byte[] dataBlock) throws AT88SC1608DevException; 070 071 /** 072 * <div class="zh"> 读取配置区 </div> <div class="en"> Read config zone. </div> 073 * 074 * @param baddr 075 * <div class="zh"> 起始地址 </div> <div class="en"> begin address </div> 076 * @param nums 077 * <div class="zh"> 要读取的字节数 </div> <div class="en"> bytes to be read </div> 078 * @return <div class="zh"> n字节数据 </div> <div class="en"> n bytes data </div> 079 * @throws AT88SC1608DevException 080 */ 081 public byte[] readConfigZone(int baddr, int nums) throws AT88SC1608DevException; 082 083 /** 084 * <div class="zh"> 写配置区 </div> <div class="en"> Write config zone. </div> 085 * 086 * @param baddr 087 * <div class="zh"> 起始地址 </div> <div class="en"> begin address </div> 088 * @param dataBlock 089 * <div class="zh"> 要写的数据 </div> <div class="en"> data to be write </div> 090 * @throws AT88SC1608DevException 091 */ 092 public void progConfigZone(int baddr, byte[] dataBlock) throws AT88SC1608DevException; 093 094 /** 095 * <div class="zh"> 验证密码 </div> <div class="en"> Verify password. </div> 096 * 097 * @param index 098 * <div class="zh"> 索引 </div> <div class="en"> index </div> 099 * @param rwp 100 * <div class="zh"> 101 * <ul> 102 * <li>!=0: 读取操作密码</li> 103 * <li>==0: 写入操作密码</li> 104 * </ul> 105 * </div> <div class="en"> 106 * <ul> 107 * <li>!=0: read operation password</li> 108 * <li>==0: write operation password</li> 109 * </ul> 110 * </div> 111 * @param password 112 * <div class="zh"> 密码,3字节 </div> <div class="en"> password, 3 bytes </div> 113 * @throws AT88SC1608DevException 114 */ 115 public void verifySC(int index, int rwp, byte[] password) throws AT88SC1608DevException; 116 117 /** 118 * <div class="zh"> 初始化授权 </div> <div class="en"> Initialize authorization </div> 119 * 120 * @param randNumber 121 * <div class="zh"> 随机数,8字节 </div> <div class="en"> random numbers, 8 bytes </div> 122 * @throws AT88SC1608DevException 123 */ 124 public void initAuth(byte[] randNumber) throws AT88SC1608DevException; 125 126 /** 127 * <div class="zh"> 验证授权 </div> <div class="en"> Verify authorization </div> 128 * 129 * @param challenge 130 * @throws AT88SC1608DevException 131 */ 132 public void verifyAuth(byte[] challenge) throws AT88SC1608DevException; 133 134 /** 135 * <div class="zh"> 读取熔断字节 </div> <div class="en"> Read fuse byte. </div> 136 * 137 * @return <div class="zh"> 1字节熔断数据 </div> <div class="en"> a byte fuse data </div> 138 * @throws AT88SC1608DevException 139 */ 140 public byte readFuse() throws AT88SC1608DevException; 141 142 /** 143 * <div class="zh"> 写熔断字节 </div> <div class="en"> Write fuse byte. </div> 144 * 145 * @throws AT88SC1608DevException 146 */ 147 public void progFuse() throws AT88SC1608DevException; 148 149 /** 150 * <div class="zh"> ATMEL ELVA 算法 </div> <div class="en"> ATMEL ELVA algorithm </div> 151 * 152 * @param Ci 153 * <div class="zh"> 随机数,由卡生成,8字节 </div> <div class="en"> random numbers,generated by card, 8 bytes </div> 154 * @param Gc 155 * <div class="zh"> 密码子,8字节 </div> <div class="en"> password seed, 8bytes </div> 156 * @param Q0 157 * <div class="zh"> 随机数,由终端生成,8字节 </div> <div class="en"> random numbers,generated by terminal, 8 bytes 158 * </div> 159 * @return <div class="zh"> QInfo{@link QInfo} QInfo 有两个成员: byte[] Q1, byte[] Q2 </div> <div class="en"> QInfo 160 * {@link QInfo} QInfo has two members: byte[] Q1, byte[] Q2 </div> 161 * @throws AT88SC1608DevException 162 */ 163 public QInfo cryptoF2(byte[] Ci, byte[] Gc, byte[] Q0) throws AT88SC1608DevException; 164 165}