2016-11-23 14:26:25 +00:00
|
|
|
|
/*
|
|
|
|
|
* Copyright 2013, 2014 Megion Research and Development GmbH
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Microsoft Reference Source License (MS-RSL)
|
|
|
|
|
*
|
|
|
|
|
* This license governs use of the accompanying software. If you use the software, you accept this license.
|
|
|
|
|
* If you do not accept the license, do not use the software.
|
|
|
|
|
*
|
|
|
|
|
* 1. Definitions
|
|
|
|
|
* The terms "reproduce," "reproduction," and "distribution" have the same meaning here as under U.S. copyright law.
|
|
|
|
|
* "You" means the licensee of the software.
|
|
|
|
|
* "Your company" means the company you worked for when you downloaded the software.
|
|
|
|
|
* "Reference use" means use of the software within your company as a reference, in read only form, for the sole purposes
|
|
|
|
|
* of debugging your products, maintaining your products, or enhancing the interoperability of your products with the
|
|
|
|
|
* software, and specifically excludes the right to distribute the software outside of your company.
|
|
|
|
|
* "Licensed patents" means any Licensor patent claims which read directly on the software as distributed by the Licensor
|
|
|
|
|
* under this license.
|
|
|
|
|
*
|
|
|
|
|
* 2. Grant of Rights
|
|
|
|
|
* (A) Copyright Grant- Subject to the terms of this license, the Licensor grants you a non-transferable, non-exclusive,
|
|
|
|
|
* worldwide, royalty-free copyright license to reproduce the software for reference use.
|
|
|
|
|
* (B) Patent Grant- Subject to the terms of this license, the Licensor grants you a non-transferable, non-exclusive,
|
|
|
|
|
* worldwide, royalty-free patent license under licensed patents for reference use.
|
|
|
|
|
*
|
|
|
|
|
* 3. Limitations
|
|
|
|
|
* (A) No Trademark License- This license does not grant you any rights to use the Licensor’s name, logo, or trademarks.
|
|
|
|
|
* (B) If you begin patent litigation against the Licensor over patents that you think may apply to the software
|
|
|
|
|
* (including a cross-claim or counterclaim in a lawsuit), your license to the software ends automatically.
|
|
|
|
|
* (C) The software is licensed "as-is." You bear the risk of using it. The Licensor gives no express warranties,
|
|
|
|
|
* guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot
|
|
|
|
|
* change. To the extent permitted under your local laws, the Licensor excludes the implied warranties of merchantability,
|
|
|
|
|
* fitness for a particular purpose and non-infringement.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package com.luminiasoft.bitshares.crypto;
|
|
|
|
|
|
|
|
|
|
import java.io.DataInputStream;
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.FileInputStream;
|
|
|
|
|
import java.io.IOException;
|
2016-11-23 17:20:24 +00:00
|
|
|
|
import java.nio.ByteBuffer;
|
2016-11-23 14:26:25 +00:00
|
|
|
|
|
|
|
|
|
|
2016-11-23 17:20:24 +00:00
|
|
|
|
public class AndroidRandomSource implements RandomSource, EntropySource {
|
2016-11-23 14:26:25 +00:00
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public synchronized void nextBytes(byte[] bytes) {
|
|
|
|
|
// On Android we use /dev/urandom for providing random data
|
|
|
|
|
File file = new File("/dev/urandom");
|
|
|
|
|
if (!file.exists()) {
|
|
|
|
|
throw new RuntimeException("Unable to generate random bytes on this Android device");
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
FileInputStream stream = new FileInputStream(file);
|
|
|
|
|
DataInputStream dis = new DataInputStream(stream);
|
|
|
|
|
dis.readFully(bytes);
|
|
|
|
|
dis.close();
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
throw new RuntimeException("Unable to generate random bytes on this Android device", e);
|
|
|
|
|
}
|
|
|
|
|
}
|
2016-11-23 17:20:24 +00:00
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ByteBuffer provideEntropy() {
|
|
|
|
|
byte[] buffer = new byte[ 256 / 8];
|
|
|
|
|
nextBytes(buffer);
|
|
|
|
|
ByteBuffer byteBuffer = ByteBuffer.allocate(buffer.length);
|
|
|
|
|
byteBuffer.put(buffer, 0, buffer.length);
|
|
|
|
|
return byteBuffer;
|
|
|
|
|
}
|
2016-11-23 14:26:25 +00:00
|
|
|
|
}
|