javacard.security.ECPublicKey Java Examples
The following examples show how to use
javacard.security.ECPublicKey.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: GaussKeyCard.java From gauss-key-card with Apache License 2.0 | 5 votes |
private void processGetPublicKey(APDU apdu) { final byte[] buffer = apdu.getBuffer(); final short le = apdu.setOutgoing(); final ECPublicKey epubk = (ECPublicKey)key1.getPublic(); short len = epubk.getW(buffer, (short)0); len = le > 0 ? (le > len ? len : le) : len; apdu.setOutgoingLength(len); apdu.sendBytes((short)0, len); }
Example #2
Source File: ECPoint.java From JCMathLib with MIT License | 5 votes |
/** * Generates new random point value. */ public void randomize(){ if (this.thePointKeyPair == null) { this.thePointKeyPair = this.theCurve.newKeyPair(this.thePointKeyPair); this.thePoint = (ECPublicKey) thePointKeyPair.getPublic(); } else { this.thePointKeyPair.genKeyPair(); } }
Example #3
Source File: FIDOCCImplementation.java From CCU2F with Apache License 2.0 | 5 votes |
public FIDOCCImplementation() { random = RandomData.getInstance(RandomData.ALG_SECURE_RANDOM); scratch = JCSystem.makeTransientByteArray((short)128, JCSystem.CLEAR_ON_DESELECT); //seed = new byte[64]; keyPair = new KeyPair( (ECPublicKey)KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PUBLIC, KeyBuilder.LENGTH_EC_FP_256, false), (ECPrivateKey)KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PRIVATE, KeyBuilder.LENGTH_EC_FP_256, false)); Secp256r1.setCommonCurveParameters((ECKey)keyPair.getPrivate()); Secp256r1.setCommonCurveParameters((ECKey)keyPair.getPublic()); // Initialize the unique seed for DRNG function //random.generateData(seed, (short)0, (short)64); // Initialize the unique seed for DRNG function drngSeed1 = (AESKey)KeyBuilderX.buildKey(KeyBuilderX.TYPE_AES_STATIC, KeyBuilder.LENGTH_AES_256, false); drngSeed2 = (AESKey)KeyBuilderX.buildKey(KeyBuilderX.TYPE_AES_STATIC, KeyBuilder.LENGTH_AES_256, false); random.generateData(scratch, (short)0, (short)32); drngSeed1.setKey(scratch, (short)0); random.generateData(scratch, (short)0, (short)32); drngSeed2.setKey(scratch, (short)0); sha256 = MessageDigest.getInstance(MessageDigest.ALG_SHA_256, false); // Initialize the unique keys for MAC function macKey1 = (AESKey)KeyBuilderX.buildKey(KeyBuilderX.TYPE_AES_STATIC, KeyBuilder.LENGTH_AES_128, false); macKey2 = (AESKey)KeyBuilderX.buildKey(KeyBuilderX.TYPE_AES_STATIC, KeyBuilder.LENGTH_AES_128, false); random.generateData(scratch, (short)0, (short)16); macKey1.setKey(scratch, (short)0); random.generateData(scratch, (short)0, (short)16); macKey2.setKey(scratch, (short)0); // Initialize ecMultiplier ecMultiplyHelper = KeyAgreementX.getInstance(KeyAgreementX.ALG_EC_SVDP_DH_PLAIN_XY, false); }
Example #4
Source File: LedgerWalletApplet.java From ledger-javacard with GNU Affero General Public License v3.0 | 5 votes |
private static void handleAirgapKeyAgreement(APDU apdu) throws ISOException { short offset = (short)0; byte[] buffer = apdu.getBuffer(); apdu.setIncomingAndReceive(); checkAirgapPersonalizationAvailable(); if (buffer[ISO7816.OFFSET_P1] == P1_INITIATE_PAIRING) { if (buffer[ISO7816.OFFSET_LC] != (byte)65) { ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); } pairingDone = false; Crypto.keyPair.genKeyPair(); Crypto.keyAgreement.init((ECPrivateKey)Crypto.keyPair.getPrivate()); Crypto.keyAgreement.generateSecret(buffer, ISO7816.OFFSET_CDATA, (short)65, scratch256, (short)0); pairingKey.setKey(scratch256, (short)0); ((ECPublicKey)Crypto.keyPair.getPublic()).getW(buffer, offset); offset += (short)65; Crypto.signature.init(attestationPrivate, Signature.MODE_SIGN); Crypto.signature.sign(buffer, (short)0, (short)65, buffer, offset); offset += (short)(buffer[(short)(offset + 1)] + 2); apdu.setOutgoingAndSend((short)0, offset); } else if (buffer[ISO7816.OFFSET_P1] == P1_CONFIRM_PAIRING) { if (buffer[ISO7816.OFFSET_LC] != (byte)32) { ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); } Crypto.initCipherAES(pairingKey, false); Crypto.blobEncryptDecryptAES.doFinal(buffer, ISO7816.OFFSET_CDATA, (short)32, scratch256, (short)0); pairingKey.setKey(scratch256, (short)0); pairingDone = true; } else { ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2); } }
Example #5
Source File: ECPoint.java From JCMathLib with MIT License | 4 votes |
/** * Properly updates all point values in case of a change of an underlying curve. * New random point value is generated. */ public final void updatePointObjects() { this.thePointKeyPair = this.theCurve.newKeyPair(this.thePointKeyPair); this.thePoint = (ECPublicKey) thePointKeyPair.getPublic(); }
Example #6
Source File: ECPoint.java From JCMathLib with MIT License | 4 votes |
public static boolean SignVerifyECDSA(ECPrivateKey privateKey, ECPublicKey publicKey, Signature signEngine, byte[] tmpSignArray) { signEngine.init(privateKey, Signature.MODE_SIGN); short signLen = signEngine.sign(msg, (short) 0, (short) msg.length, tmpSignArray, (short) 0); signEngine.init(publicKey, Signature.MODE_VERIFY); return signEngine.verify(msg, (short) 0, (short) msg.length, tmpSignArray, (short) 0, signLen); }
Example #7
Source File: ECPoint.java From JCMathLib with MIT License | 2 votes |
/** * Returns this point value as ECPublicKey object. No copy of point is made * before return, so change of returned object will also change this point value. * @return point as ECPublicKey object */ public ECPublicKey asPublicKey() { return this.thePoint; }