当前位置: 首页>>代码示例>>Java>>正文


Java ISOException类代码示例

本文整理汇总了Java中javacard.framework.ISOException的典型用法代码示例。如果您正苦于以下问题:Java ISOException类的具体用法?Java ISOException怎么用?Java ISOException使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


ISOException类属于javacard.framework包,在下文中一共展示了ISOException类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: copy

import javacard.framework.ISOException; //导入依赖的package包/类
/**
* Copies {@code other} into this. No size requirements. If {@code other}
* has more digits then the superfluous leading digits of {@code other} are
* asserted to be zero. If this bignat has more digits than its leading
* digits are correctly initilized to zero. This function will not change size 
* attribute of this object.
* 
* @param other
*            Bignat to copy into this object.
*/
public void copy(Bignat other) {
    short this_start, other_start, len;
    if (this.size >= other.size) {
        this_start = (short) (this.size - other.size);
        other_start = 0;
        len = other.size;
    } else {
        this_start = 0;
        other_start = (short) (other.size - this.size);
        len = this.size;
        // Verify here that other have leading zeroes up to other_start
        for (short i = 0; i < other_start; i ++) {
            if (other.value[i] != 0) {
                ISOException.throwIt(ReturnCodes.SW_BIGNAT_INVALIDCOPYOTHER);
            }
        }
    }

    if (this_start > 0) {
        // if this bignat has more digits than its leading digits are initilized to zero
        Util.arrayFillNonAtomic(this.value, (short) 0, this_start, (byte) 0);
    }
    Util.arrayCopyNonAtomic(other.value, other_start, this.value, this_start, len);
}
 
开发者ID:OpenCryptoProject,项目名称:JCMathLib,代码行数:35,代码来源:Bignat.java

示例2: clone

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * Copies content of {@code other} into this and set size of this to {@code other}. 
 * The size attribute (returned by length()) is updated. If {@code other}
 * is longer than maximum capacity of this, internal buffer is reallocated if enabled 
 * (ALLOW_RUNTIME_REALLOCATION), otherwise exception is thrown.
 * @param other 
 *            Bignat to clone into this object.
 */    
public void clone(Bignat other) { 
    // Reallocate array only if current array cannot store the other value and reallocation is enabled by ALLOW_RUNTIME_REALLOCATION
    if (this.max_size < other.length()) {
        // Reallocation necessary
        if (ALLOW_RUNTIME_REALLOCATION) {
            allocate_storage_array(other.length(), this.allocatorType);
        }
        else {
            ISOException.throwIt(ReturnCodes.SW_BIGNAT_REALLOCATIONNOTALLOWED);
        }
    }
    
    // copy value from other into proper place in this (this can be longer than other so rest of bytes wil be filled with 0)
    other.copy_to_buffer(this.value, (short) 0);
    if (this.max_size > other.length()) {
        Util.arrayFillNonAtomic(this.value, other.length(), (short) (this.max_size - other.length()), (byte) 0);
    }
    this.size = other.length();
}
 
开发者ID:OpenCryptoProject,项目名称:JCMathLib,代码行数:28,代码来源:Bignat.java

示例3: n_mod_exp

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * Calculates {@code res := base ** exp mod mod} using RSA engine. 
 * Requirements:
 * 1. Modulo must be either 521, 1024, 2048 or other lengths supported by RSA (see appendzeros() and mod() method)
 * 2. Base must have the same size as modulo (see prependzeros())
 * @param baseLen   length of base rounded to size of RSA engine
 * @param base      value of base (if size is not equal to baseLen then zeroes are appended)
 * @param exponent  array with exponent
 * @param exponentLen length of exponent
 * @param modulo    value of modulo 
 * @param resultArray array for the computed result
 * @param resultOffset start offset of resultArray
 */
private short n_mod_exp(short baseLen, Bignat base, byte[] exponent, short exponentLen, Bignat modulo, byte[] resultArray, short resultOffset) {
    // Verify if pre-allocated engine match the required values
    if (bnh.fnc_NmodE_pubKey.getSize() < (short) (modulo.length() * 8)) {
        // attempt to perform modulu with higher or smaller than supported length - try change constant MODULO_ENGINE_MAX_LENGTH
        ISOException.throwIt(ReturnCodes.SW_BIGNAT_MODULOTOOLARGE);
    }
    if (bnh.fnc_NmodE_pubKey.getSize() < (short) (base.length() * 8)) {
        ISOException.throwIt(ReturnCodes.SW_BIGNAT_MODULOTOOLARGE);
    }
    // Potential problem: we are changing key value for publicKey already used before with occ.bnHelper.modCipher. 
    // Simulator and potentially some cards fail to initialize this new value properly (probably assuming that same key object will always have same value)
    // Fix (if problem occure): generate new key object: RSAPublicKey publicKey = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, (short) (baseLen * 8), false);

    bnh.fnc_NmodE_pubKey.setExponent(exponent, (short) 0, exponentLen);
    bnh.lock(bnh.fnc_deep_resize_tmp);
    modulo.append_zeros(baseLen, bnh.fnc_deep_resize_tmp, (short) 0);
    bnh.fnc_NmodE_pubKey.setModulus(bnh.fnc_deep_resize_tmp, (short) 0, baseLen);
    bnh.fnc_NmodE_cipher.init(bnh.fnc_NmodE_pubKey, Cipher.MODE_DECRYPT);        
    base.prepend_zeros(baseLen, bnh.fnc_deep_resize_tmp, (short) 0);
    // BUGBUG: Check if input is not all zeroes (causes out-of-bound exception on some cards)
    short len = bnh.fnc_NmodE_cipher.doFinal(bnh.fnc_deep_resize_tmp, (short) 0, baseLen, resultArray, resultOffset); 
    bnh.unlock(bnh.fnc_deep_resize_tmp);
    return len;
}
 
开发者ID:OpenCryptoProject,项目名称:JCMathLib,代码行数:38,代码来源:Bignat.java

示例4: registerLock

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * Register new object for lock guarding. 
 * @param objToLock object to be guarded
 * @return index to internal array where registered object is stored (if known, lock/unlock is faster)
 */
public short registerLock(Object objToLock) {
    short i;
    for (i = 0; i < (short) lockedObjects.length; i += 2) {
        if (lockedObjects[i] == null) {
            // Free slot found
            lockedObjects[i] = objToLock;
            lockedObjects[(short) (i + 1)] = null; // null means array is unlocked
            lockedObjectsPersistent[i] = objToLock; // Store same into persistent array as well
            lockedObjectsPersistent[(short) (i + 1)] = null; 
            return i; // Return index for potential speedup of locking
        }
    }
    ISOException.throwIt(ReturnCodes.SW_LOCK_NOFREESLOT);
    return -1;
}
 
开发者ID:OpenCryptoProject,项目名称:JCMathLib,代码行数:21,代码来源:ObjectLocker.java

示例5: lock

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * Lock/reserve provided object for subsequent use. Used to protect corruption
 * of pre-allocated shared objects in different, potentially nested,
 * operations. Must be unlocked later on.
 *
 * @param objToLock array to be locked
 * @throws SW_ALREADYLOCKED if already locked (is already in use by
 * other operation)
 */
public void lock(Object objToLock) {
    if (!bLockingActive) {
        return;
    }
    // Find object to lock
    short i;
    for (i = 0; i < (short) lockedObjects.length; i += 2) {
        if (lockedObjects[i] != null && lockedObjects[i].equals(objToLock)) {
            lock(objToLock, i);
            break;
        }
    }
    // If reached here, required array was not found
    if (i == (short) lockedObjects.length) {
        ISOException.throwIt(ReturnCodes.SW_LOCK_OBJECT_NOT_FOUND);
    }
}
 
开发者ID:OpenCryptoProject,项目名称:JCMathLib,代码行数:27,代码来源:ObjectLocker.java

示例6: unlock

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * Unlock/release object from use. Used to protect corruption of
 * pre-allocated objects used in different nested operations. Must
 * be locked before.
 *
 * @param objToUnlock object to unlock
 * @throws SW_NOTLOCKED_BIGNAT if was not locked before (inconsistence in
 * lock/unlock sequence)
 */

public void unlock(Object objToUnlock) {
    if (!bLockingActive) {
        return;
    }
    // Find object to unlock
    short i;
    for (i = 0; i < (short) lockedObjects.length; i += 2) {
        if (lockedObjects[i] != null && lockedObjects[i].equals(objToUnlock)) {
            unlock(objToUnlock, i);
            break;
        }
    }
    // If reached here, required array was not found
    if (i == (short) lockedObjects.length) {
        ISOException.throwIt(ReturnCodes.SW_LOCK_OBJECT_NOT_FOUND);
    }
}
 
开发者ID:OpenCryptoProject,项目名称:JCMathLib,代码行数:28,代码来源:ObjectLocker.java

示例7: isLocked

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * Check if provided object is logically locked
 * @param objToUnlock object to be checked
 * @return true of array is logically locked, false otherwise 
 */

public boolean isLocked(Object objToUnlock) {
    if (!bLockingActive) {
        return false;
    }
    // Find object to unlock
    short i;
    for (i = 0; i < (short) lockedObjects.length; i += 2) {
        if (lockedObjects[i] != null && lockedObjects[i].equals(objToUnlock)) {
            return lockedObjects[(short) (i + 1)] != null;
        }
    }
    // If reached here, required object was not found
    if (i == (short) lockedObjects.length) {
        ISOException.throwIt(ReturnCodes.SW_LOCK_OBJECT_NOT_FOUND);
    }
    return false;
}
 
开发者ID:OpenCryptoProject,项目名称:JCMathLib,代码行数:24,代码来源:ObjectLocker.java

示例8: process

import javacard.framework.ISOException; //导入依赖的package包/类
public void process(APDU apdu) {
	// Good practice: Return 9000 on SELECT
	if (selectingApplet()) {
		return;
	}

	byte[] buf = apdu.getBuffer();
	switch (buf[ISO7816.OFFSET_INS]) {
	case (byte) 0x00:
		handleGetPRand(apdu);
		break;
	case (byte) 0x01:
		handleGetCmac(apdu);
		break;
	default:
		// good practice: If you don't know the INStruction, say so:
		ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
	}
}
 
开发者ID:tsenger,项目名称:CCU2F,代码行数:20,代码来源:PRNGTest.java

示例9: createPoint

import javacard.framework.ISOException; //导入依赖的package包/类
static ECPointBase createPoint(short keyLen) {
    switch (ECPOINT_LIB) {
        case ECPOINT_INSTANCE_TYPE_SW: 
            return ECPoint_SW.createPoint(ecc);
        case ECPOINT_INSTANCE_TYPE_NXP: 
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        case ECPOINT_INSTANCE_TYPE_GEMALTO:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        case ECPOINT_INSTANCE_TYPE_GD:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        case ECPOINT_INSTANCE_TYPE_FEITIAN:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        default: 
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
    }
    return null;
}
 
开发者ID:OpenCryptoProject,项目名称:Myst,代码行数:22,代码来源:ECPointBuilder.java

示例10: allocate

import javacard.framework.ISOException; //导入依赖的package包/类
public static void allocate(ECCurve curve, ECConfig ecCfg) {
    theCurve = curve;
    ecc = ecCfg;
    
    switch (ECPOINT_LIB) {
        case ECPOINT_INSTANCE_TYPE_SW:
            ECPoint_SW.allocate(ecc, theCurve);
            break;
        case ECPOINT_INSTANCE_TYPE_NXP:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        case ECPOINT_INSTANCE_TYPE_GEMALTO:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        case ECPOINT_INSTANCE_TYPE_GD:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        case ECPOINT_INSTANCE_TYPE_FEITIAN:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
            break;
        default:
            ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);
    }
}
 
开发者ID:OpenCryptoProject,项目名称:Myst,代码行数:25,代码来源:ECPointBuilder.java

示例11: copy

import javacard.framework.ISOException; //导入依赖的package包/类
/**
* Copies {@code other} into this. No size requirements. If {@code other}
* has more digits then the superfluous leading digits of {@code other} are
* asserted to be zero. If this bignat has more digits than its leading
* digits are correctly initilized to zero. This function will not change size 
* attribute of this object.
* 
* @param other
*            Bignat to copy into this object.
*/
public void copy(Bignat other) {
    short this_start, other_start, len;
    if (this.size >= other.size) {
        this_start = (short) (this.size - other.size);
        other_start = 0;
        len = other.size;
    } else {
        this_start = 0;
        other_start = (short) (other.size - this.size);
        len = this.size;
        // Verify here that other have leading zeroes up to other_start
        for (short i = 0; i < other_start; i ++) {
            if (other.value[i] != 0) {
                ISOException.throwIt(ReturnCodes.SW_BIGNAT_INVALIDCOPYOTHER);
            }
        }
    }
    
    if (this_start > 0) {
        // if this bignat has more digits than its leading digits are initilized to zero
        Util.arrayFillNonAtomic(this.value, (short) 0, this_start, (byte) 0);
    }
    Util.arrayCopyNonAtomic(other.value, other_start, this.value, this_start, len);
}
 
开发者ID:OpenCryptoProject,项目名称:Myst,代码行数:35,代码来源:jcmathlib.java

示例12: n_mod_exp

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * Calculates {@code res := base ** exp mod mod} using RSA engine. 
 * Requirements:
 * 1. Modulo must be either 521, 1024, 2048 or other lengths supported by RSA (see appendzeros() and mod() method)
 * 2. Base must have the same size as modulo (see prependzeros())
 * @param baseLen   length of base rounded to size of RSA engine
 * @param base      value of base (if size is not equal to baseLen then zeroes are appended)
 * @param exponent  array with exponent
 * @param exponentLen length of exponent
 * @param modulo    value of modulo 
 * @param resultArray array for the computed result
 * @param resultOffset start offset of resultArray
 */
private short n_mod_exp(short baseLen, Bignat base, byte[] exponent, short exponentLen, Bignat modulo, byte[] resultArray, short resultOffset) {
    // Verify if pre-allocated engine match the required values
    if (bnh.fnc_NmodE_pubKey.getSize() < (short) (modulo.length() * 8)) {
        // attempt to perform modulu with higher or smaller than supported length - try change constant MODULO_ENGINE_MAX_LENGTH
        ISOException.throwIt(ReturnCodes.SW_BIGNAT_MODULOTOOLARGE);
    }
    if (bnh.fnc_NmodE_pubKey.getSize() < (short) (base.length() * 8)) {
        ISOException.throwIt(ReturnCodes.SW_BIGNAT_MODULOTOOLARGE);
    }
    // Potential problem: we are changing key value for publicKey already used before with occ.bnHelper.modCipher. 
    // Simulator and potentially some cards fail to initialize this new value properly (probably assuming that same key object will always have same value)
    // Fix (if problem occure): generate new key object: RSAPublicKey publicKey = (RSAPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_RSA_PUBLIC, (short) (baseLen * 8), false);
    
    bnh.fnc_NmodE_pubKey.setExponent(exponent, (short) 0, exponentLen);
    bnh.lock(bnh.fnc_deep_resize_tmp);
    modulo.append_zeros(baseLen, bnh.fnc_deep_resize_tmp, (short) 0);
    bnh.fnc_NmodE_pubKey.setModulus(bnh.fnc_deep_resize_tmp, (short) 0, baseLen);
    bnh.fnc_NmodE_cipher.init(bnh.fnc_NmodE_pubKey, Cipher.MODE_DECRYPT);        
    base.prepend_zeros(baseLen, bnh.fnc_deep_resize_tmp, (short) 0);
    // BUGBUG: Check if input is not all zeroes (causes out-of-bound exception on some cards)
    short len = bnh.fnc_NmodE_cipher.doFinal(bnh.fnc_deep_resize_tmp, (short) 0, baseLen, resultArray, resultOffset); 
    bnh.unlock(bnh.fnc_deep_resize_tmp);
    return len;
}
 
开发者ID:OpenCryptoProject,项目名称:Myst,代码行数:38,代码来源:jcmathlib.java

示例13: MPCApplet

import javacard.framework.ISOException; //导入依赖的package包/类
public MPCApplet() {
    m_ecc = new ECConfig((short) 256);
    m_ecc.bnh.bIsSimulator = bIsSimulator;
    m_curve = new ECCurve(false, SecP256r1.p, SecP256r1.a, SecP256r1.b, SecP256r1.G, SecP256r1.r);

    ECPointBuilder.allocate(m_curve, m_ecc);
    ECPointBase.allocate(m_curve);
    if (m_ecc.MULT_RSA_ENGINE_MAX_LENGTH_BITS < (short) 1024) {
        ISOException.throwIt(Consts.SW_INCORRECTJCMATHLIBSETTINGS);
    }
    
    m_cryptoOps = new MPCCryptoOps(m_ecc);
    
    m_quorums = new QuorumContext[Consts.MAX_QUORUMS];
    for (short i = 0; i < (short) m_quorums.length; i++) {
        m_quorums[i] = new QuorumContext(m_ecc, m_curve, m_cryptoOps);
    }
    
    // Generate random unique card ID
    cardIDLong = new byte[Consts.CARD_ID_LONG_LENGTH];
    m_cryptoOps.randomData.generateData(cardIDLong, (short) 0, (short) cardIDLong.length);
}
 
开发者ID:OpenCryptoProject,项目名称:Myst,代码行数:23,代码来源:MPCApplet.java

示例14: GenerateRandomData

import javacard.framework.ISOException; //导入依赖的package包/类
/**
 * The remote host submits a request for randomness to all actors
 * participating in the quorum. Subsequently, each actor independently
 * generates a random share bi , encrypts it with the public key of the
 * host, and signs the ciphertext with its private key. Once the host
 * receives all the shares, he combines them to retrieve the b and then uses
 * an one way function (e.g., SHA3-512) to convert it to a fixed length
 * string.
 */
void GenerateRandomData(APDU apdu) {
    ISOException.throwIt(Consts.SW_NOTSUPPORTEDYET);

    byte[] apdubuf = apdu.getBuffer();
    short paramsOffset = GetOperationParamsOffset(Consts.INS_GENERATE_RANDOM, apdu);
    // Parse incoming apdu to obtain target quorum context
    QuorumContext quorumCtx = GetTargetQuorumContext(apdubuf, paramsOffset);
    // Verify authorization
    quorumCtx.VerifyCallerAuthorization(apdu, StateModel.FNC_QuorumContext_GenerateRandomData);
    
    // TODO: Check state
    // TODO: Verify signature on request
    // TODO: Generate share
    // TODO: Encrypt share with host public key
    // TODO: Sign output share

    //apdu.setOutgoingAndSend((short) 0, len);
}
 
开发者ID:OpenCryptoProject,项目名称:Myst,代码行数:28,代码来源:MPCApplet.java

示例15: StoreCommitment

import javacard.framework.ISOException; //导入依赖的package包/类
public void StoreCommitment(short id, byte[] commitment, short commitmentOffset, short commitmentLength) {
    state.CheckAllowedFunction(StateModel.FNC_QuorumContext_StoreCommitment);

    if (id < 0 || id == CARD_INDEX_THIS || id >= NUM_PLAYERS) {
        ISOException.throwIt(Consts.SW_INVALIDPLAYERINDEX);
    }
    if (commitmentLength != players[id].YsCommitment.length) {
        ISOException.throwIt(Consts.SW_INVALIDCOMMITMENTLENGTH);
    }
    if (players[id].bYsCommitmentValid) {
        // commitment already stored
        ISOException.throwIt(Consts.SW_COMMITMENTALREADYSTORED);
    }
    else {
        Util.arrayCopyNonAtomic(commitment, commitmentOffset, players[id].YsCommitment, (short) 0, commitmentLength);
        players[id].bYsCommitmentValid = true;
        num_commitments_count++;

        if (num_commitments_count == NUM_PLAYERS) {
            // All commitments were collected, allow for export of this card share
            state.MakeStateTransition(StateModel.STATE_KEYGEN_COMMITMENTSCOLLECTED);  
        }
        
    }
}
 
开发者ID:OpenCryptoProject,项目名称:Myst,代码行数:26,代码来源:QuorumContext.java


注:本文中的javacard.framework.ISOException类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。