android - ECC key generation error -
android - ECC key generation error -
hi trying implement code provided anindonesian in flexiprovider - how encrypt/de formatted keypair on android.
i getting nullpointerexception kpg.initialize(brainpoolp160r1);
i new android , cryptography help appreciated. here have created page generates ecc key , encrypts/decrypts info , displays in text box.
import android.os.bundle; import android.support.v7.app.actionbaractivity; import android.util.base64; import android.view.menu; import android.view.menuitem; import android.widget.textview; import org.bouncycastle.jce.provider.bouncycastleprovider; import java.security.invalidalgorithmparameterexception; import java.security.invalidkeyexception; import java.security.keypair; import java.security.keypairgenerator; import java.security.nosuchalgorithmexception; import java.security.nosuchproviderexception; import java.security.privatekey; import java.security.publickey; import java.security.security; import java.security.spec.ecgenparameterspec; import javax.crypto.badpaddingexception; import javax.crypto.cipher; import javax.crypto.illegalblocksizeexception; import javax.crypto.nosuchpaddingexception; public class ecc_page extends actionbaractivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_ecc_page); security.addprovider(new bouncycastleprovider()); keypairgenerator kpg = null; seek { kpg = keypairgenerator.getinstance("ecies", "bc"); } grab (nosuchalgorithmexception | nosuchproviderexception e) { e.printstacktrace(); } ecgenparameterspec brainpoolp160r1 = new ecgenparameterspec("brainpoolp160r1"); seek { assert kpg != null; kpg.initialize(brainpoolp160r1); //i getting error here } grab (invalidalgorithmparameterexception ignored) { } keypair kp = kpg.generatekeypair(); publickey publickey = kp.getpublic(); privatekey privatekey = kp.getprivate(); byte[] publickey = publickey.getencoded(); byte[] privatekey = privatekey.getencoded(); cipher c = null; seek { c = cipher.getinstance("ecieswithaes/dhaes/nopadding", "bc"); } grab (nosuchalgorithmexception | nosuchpaddingexception | nosuchproviderexception e) { e.printstacktrace(); } seek { c.init(cipher.encrypt_mode, publickey); } grab (invalidkeyexception e) { e.printstacktrace(); } byte[] cipher = new byte[0]; seek { cipher = c.dofinal("this message".getbytes()); } grab (illegalblocksizeexception | badpaddingexception e) { e.printstacktrace(); } textview eccencoded = (textview) findviewbyid(r.id.eccencoded); eccencoded.settext("[encoded]:\n" + base64.encodetostring(cipher, base64.default) + "\n"); seek { c.init(cipher.decrypt_mode, privatekey); } grab (invalidkeyexception e) { e.printstacktrace(); } byte[] plaintext = new byte[0]; seek { plaintext = c.dofinal(cipher); } grab (illegalblocksizeexception | badpaddingexception e) { e.printstacktrace(); } textview eccdecoded = (textview) findviewbyid(r.id.eccdecoded); eccdecoded.settext("[decoded]:\n" + base64.encodetostring(plaintext, base64.default) + "\n"); } }
i have inserted apacheds-all-1.5.5.jar in libs folder..
the error java.security.nosuchalgorithmexception: keypairgenerator ecies implementation not found caused by: java.lang.nullpointerexception @ com.example.vinay.myapplication.ecc_page.oncreate(ecc_page.java:47)
also please point out errors in code if possible... jar file insert suggested android studio..
the flexiprovider not bouncy castle ("bc"
).
try:
kpg = keypairgenerator.getinstance("ecies");
or:
kpg = keypairgenerator.getinstance("ecies", "flexiec");
for specific provider selection.
note elliptic curve key pair generation identicial ecdh (key agreement), ecdsa (digital signature generation) , ecies (hybrid encryption). try:
kpg = keypairgenerator.getinstance("ec");
or:
kpg = keypairgenerator.getinstance("ec", "flexiec");
adding flexi providers instead of bouncy castle provider may help:
security.addprovider(new bouncycastleprovider());
is incorrect.
android cryptography bouncycastle public-key-encryption
Comments
Post a Comment