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}