Back to project page BLEMeshChat.
The source code is released under:
GNU General Public License
If you think the Android project BLEMeshChat listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package pro.dbro.ble.crypto; // w w w . jav a2 s. c o m import android.support.annotation.NonNull; import org.abstractj.kalium.NaCl; import org.abstractj.kalium.Sodium; /** * Wrapper around libsodium functions. * * Created by davidbrodsky on 10/13/14. */ public class SodiumShaker { private static final String TAG = "Identity"; public static final int crypto_sign_PUBLICKEYBYTES = 32; private static final int crypto_sign_SECRETKEYBYTES = 64; public static final int crypto_sign_BYTES = 64; static { // Load native libraries NaCl.sodium(); // Initialize libsodium if (Sodium.sodium_init() == -1) { throw new IllegalStateException("sodiun_init failed!"); } } public static KeyPair generateKeyPair() { byte[] pk = new byte[crypto_sign_PUBLICKEYBYTES]; byte[] sk = new byte[crypto_sign_SECRETKEYBYTES]; Sodium.crypto_sign_ed25519_keypair(pk, sk); return new KeyPair(pk, sk); } public static byte[] generateSignatureForMessage(@NonNull byte[] secret_key, @NonNull byte[] message, int message_len) { if (secret_key.length != crypto_sign_SECRETKEYBYTES) throw new IllegalArgumentException("secret_key is incorrect length"); byte[] signature = new byte[crypto_sign_BYTES]; int[] signature_len = new int[0]; Sodium.crypto_sign_ed25519_detached(signature, signature_len, message, message_len, secret_key); return signature; } /** * Very that signature and public_key verify message * * @param public_key the public key corresponding to signature * @param signature the signature of message decipherable with public_key * @param message the data with signature */ public static boolean verifySignature(@NonNull byte[] public_key, @NonNull byte[] signature, @NonNull byte[] message) { // Verify signature if (Sodium.crypto_sign_ed25519_verify_detached(signature, message, message.length, public_key) != 0) { /* Incorrect signature! */ return false; } return true; } }