Java Examples for org.bouncycastle.crypto.macs.HMac
The following java examples will help you to understand the usage of org.bouncycastle.crypto.macs.HMac. These source code samples are taken from different open source projects.
Example 1
Project: java_security-master File: HMACTest.java View source code |
// 用bouncy castle实现: public static void bcHmacMD5() { HMac hmac = new HMac(new MD5Digest()); // 必须是16进制的å—符,长度必须是2çš„å€?æ•° hmac.init(new KeyParameter(org.bouncycastle.util.encoders.Hex.decode("123456789abcde"))); hmac.update(src.getBytes(), 0, src.getBytes().length); // 执行摘è¦? byte[] hmacMD5Bytes = new byte[hmac.getMacSize()]; hmac.doFinal(hmacMD5Bytes, 0); System.out.println("bc hmacMD5:" + org.bouncycastle.util.encoders.Hex.toHexString(hmacMD5Bytes)); }
Example 2
Project: totp-me-master File: TOTPMIDlet.java View source code |
/** * Handles command actions from all forms. * * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command, * javax.microedition.lcdui.Displayable) */ public void commandAction(Command aCmd, Displayable aDisp) { if (DEBUG && aCmd != null) { debug("Options - Command action: " + aCmd.getLabel()); } final Display display = Display.getDisplay(this); if (aDisp == fConfirm) { if (aCmd == cmdOK) { removeProfile(listProfiles.getSelectedIndex()); } display.setCurrent(listProfiles); return; } if (aCmd == cmdOK) { final String warning = validateInput(); if (warning.length() == 0) { siProfile.setText(tfProfile.getString()); final int algorithmIdx = chgHmacAlgorithm.getSelectedIndex(); final byte[] secretKey = base32Decode(tfSecret.getString()); HMac newHmac = null; if (secretKey != null) { Digest digest = null; if (SHA1.equals(HMAC_ALGORITHMS[algorithmIdx])) { digest = new SHA1Digest(); } else if (SHA256.equals(HMAC_ALGORITHMS[algorithmIdx])) { digest = new SHA256Digest(); } else if (SHA512.equals(HMAC_ALGORITHMS[algorithmIdx])) { digest = new SHA512Digest(); } newHmac = new HMac(digest); newHmac.init(new KeyParameter(secretKey)); } setHMac(newHmac); refreshTokenTask.run(); display.setCurrent(fMain); if (aDisp != null) save(); reorderProfiles(); } else { displayAlert("Invalid input:\n" + warning, fOptions); } } else if (aCmd == cmdGenerator) { final byte[] key = base32Decode(tfSecret.getString()); // set current key siKeyHex.setText(key == null ? "" : toHexString(key, 0, key.length)); siKeyBase32.setText(base32Encode(key)); display.setCurrent(fGenerator); } else if (aCmd == cmdProfiles) { display.setCurrent(listProfiles); } else if (aCmd == cmdAddProfile) { final Calendar cal = Calendar.getInstance(); // use date-time as generated profile name YYYYMMDD-HHMMSS final String profileName = cal.get(Calendar.YEAR) + zeroLeftPad(cal.get(Calendar.MONTH) + 1, 2) + zeroLeftPad(cal.get(Calendar.DAY_OF_MONTH), 2) + "-" + zeroLeftPad(cal.get(Calendar.HOUR_OF_DAY), 2) + zeroLeftPad(cal.get(Calendar.MINUTE), 2) + zeroLeftPad(cal.get(Calendar.SECOND), 2); if (DEBUG) debug("Creating profile" + profileName); int newPos = 0; while (newPos < listProfiles.size() && profileName.compareTo(listProfiles.getString(newPos)) > 0) { newPos++; } listProfiles.insert(newPos, profileName, null); listProfiles.setSelectedIndex(newPos, true); int[] newRecIds = new int[recordIds.length + 1]; System.arraycopy(recordIds, 0, newRecIds, 0, newPos); System.arraycopy(recordIds, newPos, newRecIds, newPos + 1, recordIds.length - newPos); recordIds = newRecIds; final byte[] profileConfig = getProfileConfig(profileName, EMPTY_BYTE_ARRAY, DEFAULT_TIMESTEP, DEFAULT_HMAC_ALG_IDX, DEFAULT_DIGITS, DEFAULT_DELTA); recordIds[newPos] = addProfileToRecordStore(profileConfig); } else if (aDisp == listProfiles && aCmd == List.SELECT_COMMAND) { if (listProfiles.getSelectedIndex() >= 0) loadSelectedProfile(); } else if (aCmd == cmdRemoveProfile) { switch(listProfiles.size()) { case 0: displayAlert("There is no profile to delete.", listProfiles); break; case 1: displayAlert("You can't remove the last profile.", listProfiles); break; default: if (listProfiles.getSelectedIndex() >= 0) { siConfirm.setText("Do you really want to delete profile " + listProfiles.getString(listProfiles.getSelectedIndex()) + "?"); display.setCurrent(fConfirm); } break; } } else if (aCmd == cmdNewKey) { final byte[] secretKey = generateNewKey(); siKeyHex.setText(toHexString(secretKey, 0, secretKey.length)); siKeyBase32.setText(base32Encode(secretKey)); tfSecret.setString(siKeyBase32.getText()); } else if (aCmd == cmdGeneratorOK) { display.setCurrent(fOptions); } else if (aCmd == cmdOptions) { display.setCurrent(fOptions); } else if (aCmd == cmdReset) { setHMac(null); gauValidity.setMaxValue(INDEFINITE); gauValidity.setValue(IDLE); tfSecret.setString(base32Encode(DEFAULT_SECRET)); tfTimeStep.setString(Integer.toString(DEFAULT_TIMESTEP)); tfDigits.setString(Integer.toString(DEFAULT_DIGITS)); chgHmacAlgorithm.setSelectedIndex(DEFAULT_HMAC_ALG_IDX, true); tfDelta.setString(Long.toString(DEFAULT_DELTA)); tfProfile.setString(listProfiles.getString(listProfiles.getSelectedIndex())); } else if (aCmd == cmdExit) { destroyApp(false); } cachedCounter = INVALID_COUNTER; }
Example 3
Project: bc-java-master File: TlsUtils.java View source code |
static void hmac_hash(Digest digest, byte[] secret, byte[] seed, byte[] out) { HMac mac = new HMac(digest); mac.init(new KeyParameter(secret)); byte[] a = seed; int size = digest.getDigestSize(); int iterations = (out.length + size - 1) / size; byte[] buf = new byte[mac.getMacSize()]; byte[] buf2 = new byte[mac.getMacSize()]; for (int i = 0; i < iterations; i++) { mac.update(a, 0, a.length); mac.doFinal(buf, 0); a = buf; mac.update(a, 0, a.length); mac.update(seed, 0, seed.length); mac.doFinal(buf2, 0); System.arraycopy(buf2, 0, out, (size * i), Math.min(size, out.length - (size * i))); } }
Example 4
Project: dc---master File: TlsUtils.java View source code |
private static void hmac_hash(Digest digest, byte[] secret, byte[] seed, byte[] out) { HMac mac = new HMac(digest); KeyParameter param = new KeyParameter(secret); byte[] a = seed; int size = digest.getDigestSize(); int iterations = (out.length + size - 1) / size; byte[] buf = new byte[mac.getMacSize()]; byte[] buf2 = new byte[mac.getMacSize()]; for (int i = 0; i < iterations; i++) { mac.init(param); mac.update(a, 0, a.length); mac.doFinal(buf, 0); a = buf; mac.init(param); mac.update(a, 0, a.length); mac.update(seed, 0, seed.length); mac.doFinal(buf2, 0); System.arraycopy(buf2, 0, out, (size * i), Math.min(size, out.length - (size * i))); } }
Example 5
Project: gupa-j2me-midlet-master File: HMACSHA1Signature.java View source code |
public String getSignature() { try { HMac m = new HMac(new SHA1Digest()); m.init(new KeyParameter(key.getBytes("UTF-8"))); byte[] bytes = message.getBytes("UTF-8"); m.update(bytes, 0, bytes.length); byte[] mac = new byte[m.getMacSize()]; m.doFinal(mac, 0); signature = new String(Util.base64Encode(mac)); // debug System.out.println("mac alg: " + m.getAlgorithmName()); System.out.println("dig alg: " + m.getUnderlyingDigest().getAlgorithmName()); System.out.println("key: " + key); System.out.println("message: " + message); System.out.println("unencoded: " + new String(mac)); System.out.println("sig: " + signature); } catch (java.io.UnsupportedEncodingException e) { ; } catch (Exception e) { ; } return signature; }
Example 6
Project: irma_future_id-master File: HMacDRBGTest.java View source code |
public void performTest() throws Exception { DRBGTestVector[] tests = createTestVectorData(); for (int i = 0; i != tests.length; i++) { DRBGTestVector tv = tests[i]; byte[] nonce = tv.nonce(); byte[] personalisationString = tv.personalizationString(); SP80090DRBG d = new HMacSP800DRBG(new HMac(tv.getDigest()), tv.securityStrength(), tv.entropySource(), personalisationString, nonce); byte[] output = new byte[tv.expectedValue(0).length]; d.generate(output, tv.additionalInput(0), tv.predictionResistance()); byte[] expected = tv.expectedValue(0); if (!areEqual(expected, output)) { fail("Test #" + (i + 1) + ".1 failed, expected " + new String(Hex.encode(tv.expectedValue(0))) + " got " + new String(Hex.encode(output))); } output = new byte[tv.expectedValue(0).length]; d.generate(output, tv.additionalInput(1), tv.predictionResistance()); expected = tv.expectedValue(1); if (!areEqual(expected, output)) { fail("Test #" + (i + 1) + ".2 failed, expected " + new String(Hex.encode(tv.expectedValue(1))) + " got " + new String(Hex.encode(output))); } } // Exception tests // SP80090DRBG d; try { d = new HMacSP800DRBG(new HMac(new SHA256Digest()), 256, new SHA256EntropyProvider().get(128), null, null); fail("no exception thrown"); } catch (IllegalArgumentException e) { if (!e.getMessage().equals("Not enough entropy for security strength required")) { fail("Wrong exception", e); } } }
Example 7
Project: j2me-oauth-master File: HMACSHA1Signature.java View source code |
public String getSignature() { try { HMac m = new HMac(new SHA1Digest()); m.init(new KeyParameter(key.getBytes("UTF-8"))); byte[] bytes = message.getBytes("UTF-8"); m.update(bytes, 0, bytes.length); byte[] mac = new byte[m.getMacSize()]; m.doFinal(mac, 0); signature = new String(Util.base64Encode(mac)); // debug System.out.println("mac alg: " + m.getAlgorithmName()); System.out.println("dig alg: " + m.getUnderlyingDigest().getAlgorithmName()); System.out.println("key: " + key); System.out.println("message: " + message); System.out.println("unencoded: " + new String(mac)); System.out.println("sig: " + signature); } catch (java.io.UnsupportedEncodingException e) { ; } catch (Exception e) { ; } return signature; }
Example 8
Project: modrupal-master File: AuthInterface.java View source code |
/** * Generates a HMAC SHA256 hash for the given method using * the current authentication data. * * @param method the method to call * @return the hashed authentication string */ public String get_hash(String method) { this.timestamp = Long.toString(getTime()); this.nonce = getRandomString(); this.method = method; HMac hmac = new HMac(new SHA256Digest()); byte[] resBuf = new byte[hmac.getMacSize()]; //byte[] keyBytes = Hex.decode(api_key); byte[] keyBytes = api_key.getBytes(); hmac.init(new KeyParameter(keyBytes)); String msg = getMessage(); byte[] m = msg.getBytes(); hmac.update(m, 0, m.length); hmac.doFinal(resBuf, 0); this.hash = new String(Hex.encode(resBuf)); //this.hash = new String(resBuf); return this.hash; }
Example 9
Project: openiam-idm-master File: SHA2Hash.java View source code |
/* (non-Javadoc) * @see org.openiam.util.encrypt.HashDigest#hash(java.lang.String) */ public byte[] hash(String msg) { // get instance of the SHA Message Digest object. HMac hmac = new HMac(new SHA256Digest()); byte[] result = new byte[hmac.getMacSize()]; byte[] msgAry = msg.getBytes(); if (key == null) { readKey(); } KeyParameter kp = new KeyParameter(key); hmac.init(kp); hmac.update(msgAry, 0, msgAry.length); hmac.doFinal(result, 0); return result; }
Example 10
Project: SawGoo_iappli-master File: HMACSHA1Signature.java View source code |
public String getSignature() { try { HMac m = new HMac(new SHA1Digest()); m.init(new KeyParameter(key.getBytes("UTF-8"))); byte[] bytes = message.getBytes("UTF-8"); m.update(bytes, 0, bytes.length); byte[] mac = new byte[m.getMacSize()]; m.doFinal(mac, 0); signature = new String(Util.base64Encode(mac)); // debug System.out.println("mac alg: " + m.getAlgorithmName()); System.out.println("dig alg: " + m.getUnderlyingDigest().getAlgorithmName()); System.out.println("key: " + key); System.out.println("message: " + message); System.out.println("unencoded: " + new String(mac)); System.out.println("sig: " + signature); } catch (UnsupportedEncodingException e) { ; } catch (Exception e) { ; } return signature; }
Example 11
Project: TinyTravelTracker-master File: TlsUtils.java View source code |
static void hmac_hash(Digest digest, byte[] secret, byte[] seed, byte[] out) { HMac mac = new HMac(digest); mac.init(new KeyParameter(secret)); byte[] a = seed; int size = digest.getDigestSize(); int iterations = (out.length + size - 1) / size; byte[] buf = new byte[mac.getMacSize()]; byte[] buf2 = new byte[mac.getMacSize()]; for (int i = 0; i < iterations; i++) { mac.update(a, 0, a.length); mac.doFinal(buf, 0); a = buf; mac.update(a, 0, a.length); mac.update(seed, 0, seed.length); mac.doFinal(buf2, 0); System.arraycopy(buf2, 0, out, (size * i), Math.min(size, out.length - (size * i))); } }
Example 12
Project: fred-master File: HMACTest.java View source code |
// ant -Dtest.skip=false -Dtest.class=freenet.crypt.HMACTest -Dtest.benchmark=true unit public void testBenchmark() { if (!TestProperty.BENCHMARK) { return; } int count = 0; System.out.println("We're getting ready to benchmark HMACs"); Random r = new Random(0xBBBBBBBB); for (int len = 8; len <= 32768; len *= 4) { byte[] plaintext = new byte[len]; r.nextBytes(plaintext); System.out.println("plaintext len " + len); int ITERATIONS = 10000000 / len; long t1 = System.currentTimeMillis(); for (int i = 0; i < ITERATIONS; i++) { byte[] r1 = HMAC_legacy.macWithSHA256(knownKey, plaintext, 32); for (int j = 0; j < r1.length; j++) { count += r1[j]; } } long legacyLength = System.currentTimeMillis() - t1; t1 = System.currentTimeMillis(); for (int i = 0; i < ITERATIONS; i++) { byte[] r1 = HMAC.macWithSHA256(knownKey, plaintext); for (int j = 0; j < r1.length; j++) { count += r1[j]; } } long currentLength = System.currentTimeMillis() - t1; t1 = System.currentTimeMillis(); for (int i = 0; i < ITERATIONS; i++) { byte[] r1 = new byte[32]; HMac hmac = new HMac(new SHA256Digest()); KeyParameter kp = new KeyParameter(knownKey); hmac.init(kp); hmac.update(plaintext, 0, plaintext.length); hmac.doFinal(r1, 0); for (int j = 0; j < r1.length; j++) { count += r1[j]; } } long BCLength = System.currentTimeMillis() - t1; System.out.println("Legacy HMAC took " + TimeUtil.formatTime(legacyLength, 6, true)); System.out.println("Current HMAC took " + TimeUtil.formatTime(currentLength, 6, true)); System.out.println("BC HMAC took " + TimeUtil.formatTime(BCLength, 6, true)); } }
Example 13
Project: android-rackspacecloud-master File: BouncyCastleEncryptionService.java View source code |
public byte[] hmac(String toEncode, byte[] key, Digest digest) { HMac hmac = new HMac(digest); byte[] resBuf = new byte[hmac.getMacSize()]; byte[] plainBytes = Utils.encodeString(toEncode); byte[] keyBytes = key; hmac.init(new KeyParameter(keyBytes)); hmac.update(plainBytes, 0, plainBytes.length); hmac.doFinal(resBuf, 0); return resBuf; }
Example 14
Project: Android-Shapeways-master File: Request.java View source code |
/** * Generate HMAC-SHA1 for message * * @param key * @param message * @return * @throws Exception */ private static String generateHmac(String key, String message) throws Exception { Log.d(LOG_TAG, "generateHmac: " + key + "=" + message); byte[] keyBytes = key.getBytes(ShapewaysClient.ENCODING); byte[] data = message.getBytes(ShapewaysClient.ENCODING); HMac macProvider = new HMac(new SHA1Digest()); macProvider.init(new KeyParameter(keyBytes)); macProvider.reset(); macProvider.update(data, 0, data.length); byte[] output = new byte[macProvider.getMacSize()]; macProvider.doFinal(output, 0); byte[] hmac = Base64.encode(output); return new String(hmac).replaceAll("\r\n", ""); }
Example 15
Project: atlas-lb-master File: JDKKeyStore.java View source code |
public void engineLoad(InputStream stream, char[] password) throws IOException { table.clear(); if (// just initialising stream == null) { return; } DataInputStream dIn = new DataInputStream(stream); int version = dIn.readInt(); if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } } byte[] salt = new byte[dIn.readInt()]; dIn.readFully(salt); int iterationCount = dIn.readInt(); // // we only do an integrity check if the password is provided. // HMac hMac = new HMac(new SHA1Digest()); if (password != null && password.length != 0) { byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); pbeGen.init(passKey, salt, iterationCount); CipherParameters macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize()); Arrays.fill(passKey, (byte) 0); hMac.init(macParams); MacInputStream mIn = new MacInputStream(dIn, hMac); loadStore(mIn); // Finalise our mac calculation byte[] mac = new byte[hMac.getMacSize()]; hMac.doFinal(mac, 0); // TODO Should this actually be reading the remainder of the stream? // Read the original mac from the stream byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); if (!Arrays.constantTimeAreEqual(mac, oldMac)) { table.clear(); throw new IOException("KeyStore integrity check failed."); } } else { loadStore(dIn); // TODO Should this actually be reading the remainder of the stream? // Parse the original mac from the stream too byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); } }
Example 16
Project: cachewolf-master File: TlsUtils.java View source code |
private static void hmac_hash(Digest digest, byte[] secret, byte[] seed, byte[] out) { HMac mac = new HMac(digest); KeyParameter param = new KeyParameter(secret); byte[] a = seed; int size = digest.getDigestSize(); int iterations = (out.length + size - 1) / size; byte[] buf = new byte[mac.getMacSize()]; byte[] buf2 = new byte[mac.getMacSize()]; for (int i = 0; i < iterations; i++) { mac.init(param); mac.update(a, 0, a.length); mac.doFinal(buf, 0); a = buf; mac.init(param); mac.update(a, 0, a.length); mac.update(seed, 0, seed.length); mac.doFinal(buf2, 0); System.arraycopy(buf2, 0, out, (size * i), Math.min(size, out.length - (size * i))); } }
Example 17
Project: jcardsim-master File: SymmetricSignatureImpl.java View source code |
public void init(Key theKey, byte theMode, byte[] bArray, short bOff, short bLen) throws CryptoException { if (theKey == null) { CryptoException.throwIt(CryptoException.UNINITIALIZED_KEY); } if (!theKey.isInitialized()) { CryptoException.throwIt(CryptoException.UNINITIALIZED_KEY); } if (!(theKey instanceof SymmetricKeyImpl)) { CryptoException.throwIt(CryptoException.ILLEGAL_VALUE); } CipherParameters cipherParams = null; BlockCipher cipher = ((SymmetricKeyImpl) theKey).getCipher(); if (bArray == null) { cipherParams = ((SymmetricKeyImpl) theKey).getParameters(); } else { if (bLen != cipher.getBlockSize()) { CryptoException.throwIt(CryptoException.ILLEGAL_VALUE); } cipherParams = new ParametersWithIV(((SymmetricKeyImpl) theKey).getParameters(), bArray, bOff, bLen); } switch(algorithm) { case ALG_DES_MAC4_NOPAD: engine = new CBCBlockCipherMac(cipher, 32, null); break; case ALG_DES_MAC8_NOPAD: engine = new CBCBlockCipherMac(cipher, 64, null); break; case ALG_DES_MAC4_ISO9797_M1: engine = new CBCBlockCipherMac(cipher, 32, new ZeroBytePadding()); break; case ALG_DES_MAC8_ISO9797_M1: engine = new CBCBlockCipherMac(cipher, 64, new ZeroBytePadding()); break; case ALG_DES_MAC4_ISO9797_M2: engine = new CBCBlockCipherMac(cipher, 32, new ISO7816d4Padding()); break; case ALG_DES_MAC8_ISO9797_M2: engine = new CBCBlockCipherMac(cipher, 64, new ISO7816d4Padding()); break; case ALG_DES_MAC8_ISO9797_1_M2_ALG3: engine = new ISO9797Alg3Mac(new DESEngine(), 64, new ISO7816d4Padding()); break; case ALG_DES_MAC4_PKCS5: engine = new CBCBlockCipherMac(cipher, 32, new PKCS7Padding()); break; case ALG_DES_MAC8_PKCS5: engine = new CBCBlockCipherMac(cipher, 64, new PKCS7Padding()); break; case ALG_AES_MAC_128_NOPAD: engine = new CBCBlockCipherMac(cipher, 128, null); break; case ALG_AES_CMAC_128: engine = new CMac(cipher, 128); break; case ALG_HMAC_SHA1: engine = new HMac(new SHA1Digest()); break; case ALG_HMAC_SHA_256: engine = new HMac(new SHA256Digest()); break; case ALG_HMAC_SHA_384: engine = new HMac(new SHA384Digest()); break; case ALG_HMAC_SHA_512: engine = new HMac(new SHA512Digest()); break; case ALG_HMAC_MD5: engine = new HMac(new MD5Digest()); break; case ALG_HMAC_RIPEMD160: engine = new HMac(new RIPEMD160Digest()); break; default: CryptoException.throwIt(CryptoException.NO_SUCH_ALGORITHM); break; } engine.init(cipherParams); isInitialized = true; }
Example 18
Project: jradius-master File: TlsUtils.java View source code |
private static void hmac_hash(Digest digest, byte[] secret, byte[] seed, byte[] out) { HMac mac = new HMac(digest); KeyParameter param = new KeyParameter(secret); byte[] a = seed; int size = digest.getDigestSize(); int iterations = (out.length + size - 1) / size; byte[] buf = new byte[mac.getMacSize()]; byte[] buf2 = new byte[mac.getMacSize()]; for (int i = 0; i < iterations; i++) { mac.init(param); mac.update(a, 0, a.length); mac.doFinal(buf, 0); a = buf; mac.init(param); mac.update(a, 0, a.length); mac.update(seed, 0, seed.length); mac.doFinal(buf2, 0); System.arraycopy(buf2, 0, out, (size * i), Math.min(size, out.length - (size * i))); } }
Example 19
Project: trsst-master File: Crypto.java View source code |
private static byte[] _cryptIES(byte[] input, Key recipient, boolean forEncryption) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
IESCipher cipher = new IESCipher(new IESEngine(new ECDHBasicAgreement(), new KDF2BytesGenerator(new SHA1Digest()), new HMac(new SHA256Digest()), new PaddedBufferedBlockCipher(new CBCBlockCipher(new AESEngine()))));
cipher.engineInit(forEncryption ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, recipient, new SecureRandom());
return cipher.engineDoFinal(input, 0, input.length);
}
Example 20
Project: twim-master File: XAuth.java View source code |
public String getSignature(String message, String key) { try { HMac m = new HMac(new SHA1Digest()); m.init(new KeyParameter(key.getBytes("UTF-8"))); byte[] bytes = message.getBytes("UTF-8"); m.update(bytes, 0, bytes.length); byte[] mac = new byte[m.getMacSize()]; m.doFinal(mac, 0); String signature = new Base64().encode(mac); return signature; } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); } return null; }
Example 21
Project: xwiki-social-login-master File: PBKDF2KeyDerivationFunction.java View source code |
/**
* Generate the PBKDF2 derived key.
* This is an implementation of PBKDF2(P, S, c, dkLen) defined in http://www.ietf.org/rfc/rfc2898.txt
*
* @param password the user supplied password expressed as a byte array.
* @param salt the random salt to add to the password before hashing.
* @param iterationCount the number of iterations which the internal function (F) should run.
* @param derivedKeyLength the number of bytes of length the derived key should be (dkLen)
* @return a byte array of length derivedKeyLength containing data derived from the password and salt.
* suitable for a key.
*/
public synchronized byte[] generateDerivedKey(final byte[] password, final byte[] salt, final int iterationCount, final int derivedKeyLength) {
// If this was deserialized, then the hmac must be loaded.
if (this.hMac == null) {
try {
this.hMac = new HMac((Digest) Class.forName(this.digestClassName).newInstance());
this.state = new byte[this.hMac.getMacSize()];
} catch (Exception e) {
throw new RuntimeException("Apparently this object was serialized when a digest (" + this.digestClassName + ") was available which is not available now.", e);
}
}
try {
int hLen = hMac.getMacSize();
// "Let l be the number of hLen-octet blocks in the derived key" (rfc2898)
int numberOfBlocks = (derivedKeyLength + hLen - 1) / hLen;
final byte[] currentIterationAsByteArray = new byte[4];
final byte[] key = new byte[numberOfBlocks * hLen];
for (int i = 1; i <= numberOfBlocks; i++) {
this.integerToByteArray(i, currentIterationAsByteArray);
this.functionF(password, salt, iterationCount, currentIterationAsByteArray, key, (i - 1) * hLen);
}
// Usually the key ends up being longer than the desired key length so it must be truncated
byte[] out = new byte[derivedKeyLength];
System.arraycopy(key, 0, out, 0, derivedKeyLength);
return out;
} finally {
// Set state to 0's in order to prevent the last state being read later.
System.arraycopy(new byte[this.state.length], 0, this.state, 0, this.state.length);
}
}
Example 22
Project: authenticator-master File: AuthenticatorScreen.java View source code |
/**
* Computes the one-time PIN given the secret key.
*
* @param secret
* the secret key
* @return the PIN
* @throws GeneralSecurityException
* @throws DecodingException
* If the key string is improperly encoded.
*/
public static String computePin(String secret, Long counter) {
try {
final byte[] keyBytes = Base32String.decode(secret);
Mac mac = new HMac(new SHA1Digest());
mac.init(new KeyParameter(keyBytes));
PasscodeGenerator pcg = new PasscodeGenerator(mac);
if (counter == null) {
// time-based totp
return pcg.generateTimeoutCode();
} else {
// counter-based hotp
return pcg.generateResponseCode(counter.longValue());
}
} catch (RuntimeException e) {
return "General security exception";
} catch (DecodingException e) {
return "Decoding exception";
}
}
Example 23
Project: google-authenticator-master File: AuthenticatorScreen.java View source code |
/**
* Computes the one-time PIN given the secret key.
*
* @param secret
* the secret key
* @return the PIN
* @throws GeneralSecurityException
* @throws DecodingException
* If the key string is improperly encoded.
*/
public static String computePin(String secret, Long counter) {
try {
final byte[] keyBytes = Base32String.decode(secret);
Mac mac = new HMac(new SHA1Digest());
mac.init(new KeyParameter(keyBytes));
PasscodeGenerator pcg = new PasscodeGenerator(mac);
if (counter == null) {
// time-based totp
return pcg.generateTimeoutCode();
} else {
// counter-based hotp
return pcg.generateResponseCode(counter.longValue());
}
} catch (RuntimeException e) {
return "General security exception";
} catch (DecodingException e) {
return "Decoding exception";
}
}
Example 24
Project: PanBox-master File: EncRandomAccessFile.java View source code |
/**
* writes header data to the file
*
* @throws FileEncryptionException
* @throws IOException
* @throws InvalidKeyException
* @throws BadPaddingException
* @throws IllegalBlockSizeException
*/
protected synchronized void write() throws FileEncryptionException, IOException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
// check if all necessary data has been set
if ((getDecryptedFileKey() == null) || (getDecryptedFileKey().getEncoded().length == 0)) {
throw new FileEncryptionException("Decrypted file key has not been set!");
}
if (getShareKeyVersion() < 0) {
throw new FileEncryptionException("Share key version number has not been set!");
}
// if all data have been set, initialize HMac with shareKey
if (shareKey == null || shareKey.getEncoded().length == 0) {
throw new FileEncryptionException("Invalid share key in encrypting random access file!");
} else {
headerAuthHMac.reset();
KeyParameter keyParameter = new KeyParameter(shareKey.getEncoded());
headerAuthHMac.init(keyParameter);
}
// encrypt file key
byte[] tmpencryptedFileKey = new byte[KeyConstants.SYMMETRIC_FILE_KEY_SIZE_BYTES];
filekeyCipher.init(Cipher.ENCRYPT_MODE, shareKey);
byte[] t2 = decryptedFileKey.getEncoded();
if ((t2 == null) || (t2.length != KeyConstants.SYMMETRIC_FILE_KEY_SIZE_BYTES)) {
throw new FileEncryptionException("Encoded file key null or invalid length!");
}
tmpencryptedFileKey = filekeyCipher.doFinal(t2);
// create output buffer & write header data
ByteArrayOutputStream bstream = new ByteArrayOutputStream();
DataOutputStream ostream = new DataOutputStream(bstream);
ostream.write(PANBOX_FILE_MAGIC);
ostream.write(PANBOX_FILE_VERSION);
ostream.writeInt(shareKeyVersion);
ostream.write(tmpencryptedFileKey);
if (implementsAuthentication()) {
if (getFileAuthTag() == null) {
// if no chunks have been stored yet, the initial file auth
// tag will be set to zero
byte[] emptyAuthTag = new byte[AuthTagVerifier.AUTH_TAG_SIZE];
Arrays.fill(emptyAuthTag, (byte) 0x00);
ostream.write(emptyAuthTag);
// setFileAuthTag(null);
} else {
ostream.write(fileAuthTag);
}
}
ostream.close();
// all data have been written to stream, get array
byte[] header_data = bstream.toByteArray();
// calculate hmac
headerAuthHMac.update(header_data, 0, header_data.length);
headerAuthHMac.doFinal(headerAuthTag, 0);
// write data and hmac
long oldpos = backingRandomAccessFile.getFilePointer();
backingRandomAccessFile.seek(0);
backingRandomAccessFile.write(header_data);
backingRandomAccessFile.write(headerAuthTag);
backingRandomAccessFile.seek(oldpos);
}
Example 25
Project: android_libcore-master File: JDKKeyStore.java View source code |
public void engineLoad(InputStream stream, char[] password) throws IOException { table.clear(); if (// just initialising stream == null) { return; } DataInputStream dIn = new DataInputStream(stream); int version = dIn.readInt(); if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } } byte[] salt = new byte[dIn.readInt()]; dIn.readFully(salt); int iterationCount = dIn.readInt(); // BEGIN android-removed // HMac hMac = new HMac(new SHA1Digest()); // MacInputStream mIn = new MacInputStream(dIn, hMac); // PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); // END android-removed // BEGIN android-added HMac hMac = new HMac(OpenSSLMessageDigest.getInstance("SHA-1")); MacInputStream mIn = new MacInputStream(dIn, hMac); PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(OpenSSLMessageDigest.getInstance("SHA-1")); // END android-added byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); pbeGen.init(passKey, salt, iterationCount); hMac.init(pbeGen.generateDerivedMacParameters(hMac.getMacSize())); for (int i = 0; i != passKey.length; i++) { passKey[i] = 0; } loadStore(mIn); byte[] mac = new byte[hMac.getMacSize()]; byte[] oldMac = new byte[hMac.getMacSize()]; hMac.doFinal(mac, 0); for (int i = 0; i != oldMac.length; i++) { oldMac[i] = (byte) dIn.read(); } // if ((password != null && password.length != 0) && !isSameAs(mac, oldMac)) { table.clear(); throw new IOException("KeyStore integrity check failed."); } }
Example 26
Project: bugvm-master File: BcKeyStoreSpi.java View source code |
public void engineLoad(InputStream stream, char[] password) throws IOException { table.clear(); if (// just initialising stream == null) { return; } DataInputStream dIn = new DataInputStream(stream); int version = dIn.readInt(); if (version != STORE_VERSION) { if (version != 0 && version != 1) { throw new IOException("Wrong version of key store."); } } int saltLength = dIn.readInt(); if (saltLength <= 0) { throw new IOException("Invalid salt detected"); } byte[] salt = new byte[saltLength]; dIn.readFully(salt); int iterationCount = dIn.readInt(); // // we only do an integrity check if the password is provided. // HMac hMac = new HMac(new SHA1Digest()); if (password != null && password.length != 0) { byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); pbeGen.init(passKey, salt, iterationCount); CipherParameters macParams; if (version != 2) { macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize()); } else { macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize() * 8); } Arrays.fill(passKey, (byte) 0); hMac.init(macParams); MacInputStream mIn = new MacInputStream(dIn, hMac); loadStore(mIn); // Finalise our mac calculation byte[] mac = new byte[hMac.getMacSize()]; hMac.doFinal(mac, 0); // TODO Should this actually be reading the remainder of the stream? // Read the original mac from the stream byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); if (!Arrays.constantTimeAreEqual(mac, oldMac)) { table.clear(); throw new IOException("KeyStore integrity check failed."); } } else { loadStore(dIn); // TODO Should this actually be reading the remainder of the stream? // Parse the original mac from the stream too byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); } }
Example 27
Project: open-mika-master File: JDKKeyStore.java View source code |
public void engineLoad(InputStream stream, char[] password) throws IOException { table.clear(); if (// just initialising stream == null) { return; } DataInputStream dIn = new DataInputStream(stream); int version = dIn.readInt(); if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } } byte[] salt = new byte[dIn.readInt()]; dIn.readFully(salt); int iterationCount = dIn.readInt(); // BEGIN android-removed // HMac hMac = new HMac(new SHA1Digest()); // MacInputStream mIn = new MacInputStream(dIn, hMac); // PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); // END android-removed // BEGIN android-added HMac hMac = new HMac(OpenSSLMessageDigest.getInstance("SHA-1")); MacInputStream mIn = new MacInputStream(dIn, hMac); PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(OpenSSLMessageDigest.getInstance("SHA-1")); // END android-added byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); pbeGen.init(passKey, salt, iterationCount); hMac.init(pbeGen.generateDerivedMacParameters(hMac.getMacSize())); for (int i = 0; i != passKey.length; i++) { passKey[i] = 0; } loadStore(mIn); byte[] mac = new byte[hMac.getMacSize()]; byte[] oldMac = new byte[hMac.getMacSize()]; hMac.doFinal(mac, 0); for (int i = 0; i != oldMac.length; i++) { oldMac[i] = (byte) dIn.read(); } // if ((password != null && password.length != 0) && !isSameAs(mac, oldMac)) { table.clear(); throw new IOException("KeyStore integrity check failed."); } }
Example 28
Project: QRCode-APG-master File: JDKKeyStore.java View source code |
public void engineLoad(InputStream stream, char[] password) throws IOException { table.clear(); if (// just initialising stream == null) { return; } DataInputStream dIn = new DataInputStream(stream); int version = dIn.readInt(); if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } } byte[] salt = new byte[dIn.readInt()]; dIn.readFully(salt); int iterationCount = dIn.readInt(); // // we only do an integrity check if the password is provided. // HMac hMac = new HMac(new SHA1Digest()); if (password != null && password.length != 0) { byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); pbeGen.init(passKey, salt, iterationCount); CipherParameters macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize()); Arrays.fill(passKey, (byte) 0); hMac.init(macParams); MacInputStream mIn = new MacInputStream(dIn, hMac); loadStore(mIn); // Finalise our mac calculation byte[] mac = new byte[hMac.getMacSize()]; hMac.doFinal(mac, 0); // TODO Should this actually be reading the remainder of the stream? // Read the original mac from the stream byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); if (!Arrays.constantTimeAreEqual(mac, oldMac)) { table.clear(); throw new IOException("KeyStore integrity check failed."); } } else { loadStore(dIn); // TODO Should this actually be reading the remainder of the stream? // Parse the original mac from the stream too byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); } }
Example 29
Project: robovm-master File: BcKeyStoreSpi.java View source code |
public void engineLoad(InputStream stream, char[] password) throws IOException { table.clear(); if (// just initialising stream == null) { return; } DataInputStream dIn = new DataInputStream(stream); int version = dIn.readInt(); if (version != STORE_VERSION) { if (version != 0 && version != 1) { throw new IOException("Wrong version of key store."); } } int saltLength = dIn.readInt(); if (saltLength <= 0) { throw new IOException("Invalid salt detected"); } byte[] salt = new byte[saltLength]; dIn.readFully(salt); int iterationCount = dIn.readInt(); // // we only do an integrity check if the password is provided. // HMac hMac = new HMac(new SHA1Digest()); if (password != null && password.length != 0) { byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new SHA1Digest()); pbeGen.init(passKey, salt, iterationCount); CipherParameters macParams; if (version != 2) { macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize()); } else { macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize() * 8); } Arrays.fill(passKey, (byte) 0); hMac.init(macParams); MacInputStream mIn = new MacInputStream(dIn, hMac); loadStore(mIn); // Finalise our mac calculation byte[] mac = new byte[hMac.getMacSize()]; hMac.doFinal(mac, 0); // TODO Should this actually be reading the remainder of the stream? // Read the original mac from the stream byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); if (!Arrays.constantTimeAreEqual(mac, oldMac)) { table.clear(); throw new IOException("KeyStore integrity check failed."); } } else { loadStore(dIn); // TODO Should this actually be reading the remainder of the stream? // Parse the original mac from the stream too byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); } }
Example 30
Project: XobotOS-master File: JDKKeyStore.java View source code |
public void engineLoad(InputStream stream, char[] password) throws IOException { table.clear(); if (// just initialising stream == null) { return; } DataInputStream dIn = new DataInputStream(stream); int version = dIn.readInt(); if (version != STORE_VERSION) { if (version != 0) { throw new IOException("Wrong version of key store."); } } byte[] salt = new byte[dIn.readInt()]; dIn.readFully(salt); int iterationCount = dIn.readInt(); // // we only do an integrity check if the password is provided. // // BEGIN android-changed HMac hMac = new HMac(new OpenSSLDigest.SHA1()); // END android-changed if (password != null && password.length != 0) { byte[] passKey = PBEParametersGenerator.PKCS12PasswordToBytes(password); // BEGIN android-changed PBEParametersGenerator pbeGen = new PKCS12ParametersGenerator(new OpenSSLDigest.SHA1()); // END android-changed pbeGen.init(passKey, salt, iterationCount); CipherParameters macParams = pbeGen.generateDerivedMacParameters(hMac.getMacSize()); Arrays.fill(passKey, (byte) 0); hMac.init(macParams); MacInputStream mIn = new MacInputStream(dIn, hMac); loadStore(mIn); // Finalise our mac calculation byte[] mac = new byte[hMac.getMacSize()]; hMac.doFinal(mac, 0); // TODO Should this actually be reading the remainder of the stream? // Read the original mac from the stream byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); if (!Arrays.constantTimeAreEqual(mac, oldMac)) { table.clear(); throw new IOException("KeyStore integrity check failed."); } } else { loadStore(dIn); // TODO Should this actually be reading the remainder of the stream? // Parse the original mac from the stream too byte[] oldMac = new byte[hMac.getMacSize()]; dIn.readFully(oldMac); } }
Example 31
Project: nem.core-master File: SecP256K1BlockCipher.java View source code |
private static IESEngine createIesEngine() {
return new IESEngine(new ECDHBasicAgreement(), new KDF2BytesGenerator(new SHA1Digest()), new HMac(new SHA1Digest()));
}
Example 32
Project: cryptacular-master File: AbstractOTPGenerator.java View source code |
/** * Internal OTP generation method. * * @param key Per-user key. * @param count Counter moving factor. * * @return Integer OTP. */ protected int generateInternal(final byte[] key, final long count) { final HMac hmac = new HMac(getDigest()); final byte[] output = new byte[hmac.getMacSize()]; hmac.init(new KeyParameter(key)); hmac.update(ByteUtil.toBytes(count), 0, 8); hmac.doFinal(output, 0); return truncate(output) % MODULUS[numberOfDigits]; }
Example 33
Project: TwoFactorBtcWallet-master File: HDUtils.java View source code |
static HMac createHmacSha512Digest(byte[] key) { SHA512Digest digest = new SHA512Digest(); HMac hMac = new HMac(digest); hMac.init(new KeyParameter(key)); return hMac; }