Java Examples for javax.crypto.AEADBadTagException
The following java examples will help you to understand the usage of javax.crypto.AEADBadTagException. These source code samples are taken from different open source projects.
Example 1
Project: keywhiz-master File: AuthenticatedEncryptedCookieFactory.java View source code |
/**
* Produces an authenticating token.
*
* @param user identity the token will authenticate.
* @param expiration timestamp when token should expire.
* @return token which can be used to authenticate as user until expiration.
*/
public String getSession(User user, ZonedDateTime expiration) {
try {
String cookieJson = mapper.writeValueAsString(new UserCookieData(user, expiration));
byte[] cookieBody = encryptor.encrypt(cookieJson.getBytes(UTF_8));
return Base64.getEncoder().encodeToString(cookieBody);
} catch (AEADBadTagException e) {
logger.error("Could not encrypt cookie", e);
throw Throwables.propagate(e);
} catch (JsonProcessingException e) {
throw Throwables.propagate(e);
}
}
Example 2
Project: openjdk-master File: CipherInputStreamExceptions.java View source code |
/* Full read stream, check that getMoreData() is throwing an exception
* This test
* 1) Encrypt 100 bytes with AES/GCM/PKCS5Padding
* 2) Changes the last byte to invalidate the authetication tag.
* 3) Fully reads CipherInputStream to decrypt the message and closes
*/
static void gcm_AEADBadTag() throws Exception {
Cipher c;
byte[] read = new byte[200];
System.out.println("Running gcm_AEADBadTag");
// Encrypt 100 bytes with AES/GCM/PKCS5Padding
byte[] ct = encryptedText("GCM", 100);
// Corrupt the encrypted message
ct = corruptGCM(ct);
// Create stream for decryption
CipherInputStream in = getStream("GCM", ct);
try {
int size = in.read(read);
throw new RuntimeException("Fail: CipherInputStream.read() " + "returned " + size + " and didn't throw an exception.");
} catch (IOException e) {
Throwable ec = e.getCause();
if (ec instanceof AEADBadTagException) {
System.out.println(" Pass.");
} else {
System.out.println(" Fail: " + ec.getMessage());
throw new RuntimeException(ec);
}
} finally {
in.close();
}
}
Example 3
Project: jdk7u-jdk-master File: GCMParameterSpecTest.java View source code |
public static void main(String[] args) throws Exception { newGCMParameterSpecFail(-1, bytes); newGCMParameterSpecFail(128, null); newGCMParameterSpecPass(128, bytes); newGCMParameterSpecFail(-1, bytes, 2, 4); newGCMParameterSpecFail(128, null, 2, 4); newGCMParameterSpecFail(128, bytes, -2, 4); newGCMParameterSpecFail(128, bytes, 2, -4); // one too many newGCMParameterSpecFail(128, bytes, 2, 15); // ok. newGCMParameterSpecPass(128, bytes, 2, 14); newGCMParameterSpecPass(96, bytes, 4, 4); newGCMParameterSpecPass(96, bytes, 0, 0); // Might as well check the Exception constructors. try { new AEADBadTagException(); new AEADBadTagException("Bad Tag Seen"); } catch (Exception e) { e.printStackTrace(); failed++; } if (failed != 0) { throw new Exception("Test(s) failed"); } }
Example 4
Project: bc-java-master File: AEADTest.java View source code |
private void testTampering(boolean aeadAvailable) throws InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException { Cipher eax = Cipher.getInstance("AES/EAX/NoPadding", "BC"); final SecretKeySpec key = new SecretKeySpec(new byte[eax.getBlockSize()], eax.getAlgorithm()); final IvParameterSpec iv = new IvParameterSpec(new byte[eax.getBlockSize()]); eax.init(Cipher.ENCRYPT_MODE, key, iv); byte[] ciphertext = eax.doFinal(new byte[100]); // Tamper ciphertext[0] = (byte) (ciphertext[0] + 1); try { eax.init(Cipher.DECRYPT_MODE, key, iv); eax.doFinal(ciphertext); fail("Tampered ciphertext should be invalid"); } catch (BadPaddingException e) { if (aeadAvailable) { if (!e.getClass().getName().equals("javax.crypto.AEADBadTagException")) { fail("Tampered AEAD ciphertext should fail with AEADBadTagException when available."); } } } }
Example 5
Project: PanBox-master File: AESGCMRandomAccessFile.java View source code |
@Override
protected byte[] _readChunk(long index) throws IOException, FileEncryptionException, FileIntegrityException {
// first, get chunk iv for decryption
long oldpos = backingRandomAccessFile.getFilePointer();
backingRandomAccessFile.seek(chunkOffset(index));
// read iv
byte[] iv = new byte[CHUNK_IV_SIZE];
int ret = backingRandomAccessFile.read(iv);
if (ret != CHUNK_IV_SIZE) {
throw new FileEncryptionException("Size mismatch reading chunk IV!");
}
GCMParameterSpec spec = new GCMParameterSpec(GCM_AUTHENTICATION_TAG_LEN, iv);
byte[] res, buf;
try {
decCipher.init(Cipher.DECRYPT_MODE, getFileKey(), spec);
// set chunk metadata for verifying metadata integrity
// index of current chunk
decCipher.updateAAD(LongByteConv.long2Bytes(index));
// flag indicating if we're writing the last chunk
decCipher.updateAAD(BooleanByteConv.bool2byte(false));
buf = new byte[CHUNK_ENC_DATA_SIZE];
ret = backingRandomAccessFile.read(buf);
backingRandomAccessFile.seek(oldpos);
if (ret != CHUNK_ENC_DATA_SIZE) {
throw new FileEncryptionException("Size mismatch reading encrypted chunk data!");
}
// decrypt data
res = decCipher.doFinal(buf);
} catch (AEADBadTagException e) {
throw new FileIntegrityException("Decryption error in chunk " + index + ". Possible file integrity violation.", e);
} catch (InvalidKeyExceptionInvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException | e) {
throw new FileEncryptionException("Decryption error in chunk " + index + ": " + e.getMessage(), e);
}
if ((res == null) || (res.length != CHUNK_DATA_SIZE)) {
throw new FileEncryptionException("Decryption error or chunk size mismatch during decryption!");
} else {
if (implementsAuthentication()) {
// check authentication tag for integrity
byte[] tag = Arrays.copyOfRange(buf, res.length, buf.length);
if (!getAuthTagVerifier().verifyChunkAuthTag((int) index, tag)) {
throw new FileIntegrityException("File authentication tag verification failed in chunk " + index);
}
}
return res;
}
}
Example 6
Project: platform_frameworks_base-master File: AndroidKeyStoreCipherSpiBase.java View source code |
@Override protected final byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException { if (mCachedException != null) { throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(mCachedException); } try { ensureKeystoreOperationInitialized(); } catch (InvalidKeyExceptionInvalidAlgorithmParameterException | e) { throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); } byte[] output; try { flushAAD(); byte[] additionalEntropy = KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(mRng, getAdditionalEntropyAmountForFinish()); output = mMainDataStreamer.doFinal(input, inputOffset, inputLen, // no signature involved null, additionalEntropy); } catch (KeyStoreException e) { switch(e.getErrorCode()) { case KeymasterDefs.KM_ERROR_INVALID_INPUT_LENGTH: throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); case KeymasterDefs.KM_ERROR_INVALID_ARGUMENT: throw (BadPaddingException) new BadPaddingException().initCause(e); case KeymasterDefs.KM_ERROR_VERIFICATION_FAILED: throw (AEADBadTagException) new AEADBadTagException().initCause(e); default: throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); } } resetWhilePreservingInitState(); return output; }
Example 7
Project: openjdk8-jdk-master File: GCMParameterSpecTest.java View source code |
public static void main(String[] args) throws Exception { newGCMParameterSpecFail(-1, bytes); newGCMParameterSpecFail(128, null); newGCMParameterSpecPass(128, bytes); newGCMParameterSpecFail(-1, bytes, 2, 4); newGCMParameterSpecFail(128, null, 2, 4); newGCMParameterSpecFail(128, bytes, -2, 4); newGCMParameterSpecFail(128, bytes, 2, -4); // one too many newGCMParameterSpecFail(128, bytes, 2, 15); // ok. newGCMParameterSpecPass(128, bytes, 2, 14); newGCMParameterSpecPass(96, bytes, 4, 4); newGCMParameterSpecPass(96, bytes, 0, 0); // Might as well check the Exception constructors. try { new AEADBadTagException(); new AEADBadTagException("Bad Tag Seen"); } catch (Exception e) { e.printStackTrace(); failed++; } if (failed != 0) { throw new Exception("Test(s) failed"); } }
Example 8
Project: android_frameworks_base-master File: AndroidKeyStoreCipherSpiBase.java View source code |
@Override protected final byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException { if (mCachedException != null) { throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(mCachedException); } try { ensureKeystoreOperationInitialized(); } catch (InvalidKeyExceptionInvalidAlgorithmParameterException | e) { throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); } byte[] output; try { flushAAD(); byte[] additionalEntropy = KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(mRng, getAdditionalEntropyAmountForFinish()); output = mMainDataStreamer.doFinal(input, inputOffset, inputLen, // no signature involved null, additionalEntropy); } catch (KeyStoreException e) { switch(e.getErrorCode()) { case KeymasterDefs.KM_ERROR_INVALID_INPUT_LENGTH: throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); case KeymasterDefs.KM_ERROR_INVALID_ARGUMENT: throw (BadPaddingException) new BadPaddingException().initCause(e); case KeymasterDefs.KM_ERROR_VERIFICATION_FAILED: throw (AEADBadTagException) new AEADBadTagException().initCause(e); default: throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); } } resetWhilePreservingInitState(); return output; }
Example 9
Project: android-sdk-sources-for-api-level-23-master File: AndroidKeyStoreCipherSpiBase.java View source code |
@Override protected final byte[] engineDoFinal(byte[] input, int inputOffset, int inputLen) throws IllegalBlockSizeException, BadPaddingException { if (mCachedException != null) { throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(mCachedException); } try { ensureKeystoreOperationInitialized(); } catch (InvalidKeyExceptionInvalidAlgorithmParameterException | e) { throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); } byte[] output; try { flushAAD(); byte[] additionalEntropy = KeyStoreCryptoOperationUtils.getRandomBytesToMixIntoKeystoreRng(mRng, getAdditionalEntropyAmountForFinish()); output = mMainDataStreamer.doFinal(input, inputOffset, inputLen, // no signature involved null, additionalEntropy); } catch (KeyStoreException e) { switch(e.getErrorCode()) { case KeymasterDefs.KM_ERROR_INVALID_INPUT_LENGTH: throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); case KeymasterDefs.KM_ERROR_INVALID_ARGUMENT: throw (BadPaddingException) new BadPaddingException().initCause(e); case KeymasterDefs.KM_ERROR_VERIFICATION_FAILED: throw (AEADBadTagException) new AEADBadTagException().initCause(e); default: throw (IllegalBlockSizeException) new IllegalBlockSizeException().initCause(e); } } resetWhilePreservingInitState(); return output; }