Intel SGX Enclave сгенерировал ключ ecc и считал на сервере Java - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь прочитать ECPublicKey в моей программе Java.Этот ключ был сгенерирован в анклаве Intel SGX и отправлен на сервер через сокет.

Это мой код Java (я пропустил часть сокета чтения и вставил сгенерированный ключ напрямую.

 byte[] otherPub = Hex.decode("74044d458d4a462205d29fd59dfa3142a821f614879c5c010a20e05867def6a188c9c057225e20f73a4731f8eae265fdf999da4e19df7d11115e269791282b05");
 byte [] x =  new byte [32];
 byte [] y =  new byte [32];
 for (int i = 0; i<32; i++)
 {
       x[i] = otherPub[i];         
 }
 for (int i = 0; i<32; i++)
 {
        y[i] = otherPub[i+32];

  }  
  BigInteger myX= new BigInteger(x);
  BigInteger myY= new BigInteger(y);
  ECPoint w = new ECPoint (myX,myY);
  ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec("secp256r1");
  KeyFactory kf = KeyFactory.getInstance("ECDH", new BouncyCastleProvider());
  ECNamedCurveSpec params = new ECNamedCurveSpec("secp256r1", spec.getCurve(), spec.getG(), spec.getN());
  ECPublicKeySpec pubKeySpec = new ECPublicKeySpec(w, params);
  ECPublicKey pk = (ECPublicKey) kf.generatePublic(pubKeySpec);

Каждый раз, когда я получаю следующую ошибку

 Exception in thread "main" java.security.spec.InvalidKeySpecException: invalid KeySpec: x value invalid for SecP256R1FieldElement
at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source)
at java.security.KeyFactory.generatePublic(Unknown Source)
at Connection.serverConnection(Connection.java:158)
at main.main(main.java:12)
Caused by: java.lang.IllegalArgumentException: x value invalid for SecP256R1FieldElement
at org.bouncycastle.math.ec.custom.sec.SecP256R1FieldElement.<init>(Unknown Source)
at org.bouncycastle.math.ec.custom.sec.SecP256R1Curve.fromBigInteger(Unknown Source)
at org.bouncycastle.math.ec.ECCurve.createPoint(Unknown Source)
at org.bouncycastle.math.ec.ECCurve.createPoint(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util.convertPoint(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util.convertPoint(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey.<init>(Unknown Source)
... 4 more

КогдаЯ генерирую пару ключей в Java и вставляю ее в переменную otherPub Я не получаю сообщение об ошибке. Я посмотрел в Интернете, и генерация ключей в sgx с функцией sgx_ecc256_generate_key_pair имеет младший порядок и на кривой secp256r1. В чем моя ошибка? Может кто-нибудь?помогите мне?

Спасибо

Омарама

...