2

I'm trying to create an android app which can sign a String with an privatekey I got passed and 100% working on vb and php im really confused and tried everything to fix the issue!!!

I'm kinda new to crypto and would like to get any help possible

signkey = key
trying: signing bytes with the key and sending it back with base64 to an server...


The Key is alright and looks like the php one but if i use another test key it works fine but i need that one!!!!

Code VB:

        Dim textReader As TextReader = New StringReader(tmp_key)
        Dim pemReader As PemReader = New PemReader(textReader)
        Dim _keyPair As AsymmetricCipherKeyPair = pemReader.ReadObject()
        Dim _privateKeyParams As ECPrivateKeyParameters = _keyPair.Private
        Dim _publicKeyParams As ECPublicKeyParameters = _keyPair.Public



        Dim signer As ISigner = SignerUtilities.GetSigner("SHA-256withECDSA")
        signer.Init(True, _keyPair.Private)
        Dim bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(info)
        signer.BlockUpdate(bytes, 0, bytes.Length)
        Dim signature As Byte() = signer.GenerateSignature()

RE Code Java:

 try{
        System.out.println("UNSIGNED: "+done);



            Security.addProvider(new BouncyCastleProvider());
        signkey = "-----BEGIN EC PRIVATE KEY-----\n"+
                "MIIBCwIBAQQgJ6TxAzr3IXM5u5M16+smwl/oDSpe3ycrWv7MgPfUyvqggeMwgeAC\n" +
                "AQEwLAYHKoZIzj0BAQIhAP////////////////////////////////////7///wv\n" +
                "MEQEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAAAAAAAAAAAA\n" +
                "AAAAAAAAAAAAAAAAAAAAAAAAAAAABwRBBHm+Zn753LusVaBilc6HCwcCm/zbLc4o\n" +
                "2VnygVsW+BeYSDradyajxGVdpPv8DhEIqP0XtEimhVQZnEfQj/sQ1LgCIQD/////\n" +
                "///////////////+uq7c5q9IoDu/0l6M0DZBQQIBAQ==\n"+"-----END EC PRIVATE KEY-----\n";
            Reader rdr = new StringReader (signkey);
            System.out.println(rdr);
            Object parsed = new PEMParser(rdr).readObject();
            KeyPair pair = new JcaPEMKeyConverter().getKeyPair((PEMKeyPair)parsed);
            System.out.println ("ALGORITHM:"+pair.getPrivate().getAlgorithm());
            PrivateKey key = pair.getPrivate();
        Signature sig = Signature.getInstance("SHA256withECDSA");
        sig.initSign(key);
        sig.update(done.getBytes());
        byte[] signatureBytes = sig.sign();


        System.out.println("SIGNED: "+encode(signatureBytes));
        return encode(signatureBytes);
    }catch (Exception e)
    {
e.printStackTrace();
    }

Error:

             org.spongycastle.openssl.PEMException: problem creating EC private key: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] org.spongycastle.asn1.DERBitString.getBytes()' on a null object reference
         at org.spongycastle.openssl.PEMParser$KeyPairParser.parseObject(PEMParser.java:164)
         at org.spongycastle.openssl.PEMParser.readObject(PEMParser.java:92)
         at arionum.net.cubedpixels.utils.Base58.getSignature(Base58.java:201)
         at arionum.net.cubedpixels.views.HomeView$12$1.onClick(HomeView.java:471)
         at com.afollestad.materialdialogs.MaterialDialog.onClick(MaterialDialog.java:410)
         at android.view.View.performClick(View.java:6199)
         at android.widget.TextView.performClick(TextView.java:11090)
         at android.view.View$PerformClick.run(View.java:23647)
         at android.os.Handler.handleCallback(Handler.java:751)
         at android.os.Handler.dispatchMessage(Handler.java:95)
         at android.os.Looper.loop(Looper.java:154)
         at android.app.ActivityThread.main(ActivityThread.java:6682)
         at java.lang.reflect.Method.invoke(Native Method)
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
     Caused by: org.spongycastle.openssl.PEMException: problem creating EC private key: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] org.spongycastle.asn1.DERBitString.getBytes()' on a null object reference
         at org.spongycastle.openssl.PEMParser$ECDSAKeyPairParser.parse(PEMParser.java:243)
         at org.spongycastle.openssl.PEMParser$KeyPairParser.parseObject(PEMParser.java:154)
        ... 14 more
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'byte[] org.spongycastle.asn1.DERBitString.getBytes()' on a null object reference
         at org.spongycastle.openssl.PEMParser$ECDSAKeyPairParser.parse(PEMParser.java:232)
        ... 15 more
  • Does the key that doesn't work have the same size as the key that does work? There is a rather specific encoding of the key (which I'm not sure is OK) and there is a base point (0, 7) of which I'm not sure of. You can compare the structures of the keys [here](https://lapo.it/asn1js/) by pasting (just) the base 64 within the PEM object. – Maarten Bodewes Apr 12 '18 at 21:15
  • the keys are different and have different encodings... the one that worked was used was an random ec key found in the www – Amelia Donser Apr 13 '18 at 17:35
  • https://lapo.it/asn1js/#3082010B020101042027A4F1033AF7217339BB9335EBEB26C25FE80D2A5EDF272B5AFECC80F7D4CAFAA081E33081E0020101302C06072A8648CE3D0101022100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F3044042000000000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000000704410479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8022100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141020101 seems to be an valid key? – Amelia Donser Apr 13 '18 at 17:37

0 Answers0