tanınmadı. BouncyCastleCrypto kullanarak protokolde kriptografik işlemleri gerçekleştiren yubico, u2flib-server-core'dan kütüphane kullanıyorum. Hovewer, kalıcı depolama ben mesajlaWildfly 10 BouncyCastleCrypto ECDSA anahtar Spec I (öldürmekle donanım jetonu giriş güvence olan) benim J2EE uygulama FIDO U2F için destek ekliyorum
durum almaya devam itibaren genel anahtarı için kodlama yaparken
ben kütüphaneden bu işlev için aşağı sorunu daralmış var "anahtar spec tanınmadı"
public PublicKey decodePublicKey(byte[] encodedPublicKey) throws U2fBadInputException {
try {
X9ECParameters curve = SECNamedCurves.getByName("secp256r1");
ECPoint point;
try {
point = curve.getCurve().decodePoint(encodedPublicKey);
} catch (RuntimeException e) {
throw new U2fBadInputException("Could not parse user public key", e);
}
return KeyFactory.getInstance("ECDSA").generatePublic(
new ECPublicKeySpec(point,
new ECParameterSpec(
curve.getCurve(),
curve.getG(),
curve.getN(),
curve.getH()
)
)
);
} catch (GeneralSecurityException e) { //This should not happen
throw new RuntimeException(e);
}
}
Yöntem generatePublic istisna atar RuntimeException olarak yakalanmış ve yeniden gündeme getirilmiştir.
Ben KeyFactory.getInstance M.Ö. sağlayıcıdan, KeyFactory döndüren doğruladıktan. Bu kodu Wildfly dışında çalıştırmak mükemmel bir şekilde çalışıyor. (Bcprov-ext-jdk15on-154.jar'ı java'nın/lib/ext'inin içine koymak zorunda kaldım).
Zaten BouncyCastle için wildfly en modülünü güncelleyerek denedi, şu anda ben yayınlanan tüm 6 kavanoz eklemiş http://www.bouncycastle.org/latest_releases.html
yığın izleme danİlginç kısım birisi :-) teşekkürler bana yardımcı olabilir
java.security.spec.InvalidKeySpecException: key spec not recognised
at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source)
at java.security.KeyFactory.generatePublic(KeyFactory.java:334)
at com.yubico.u2f.crypto.BouncyCastleCrypto.decodePublicKey(BouncyCastleCrypto.java:60)
at com.yubico.u2f.data.messages.key.RawAuthenticateResponse.checkSignature(RawAuthenticateResponse.java:64)
at com.yubico.u2f.U2fPrimitives.finishAuthentication(U2fPrimitives.java:153)
at com.yubico.u2f.U2F.finishAuthentication(U2F.java:116)
at com.yubico.u2f.U2F.finishAuthentication(U2F.java:90)
Umuttur önceden
DÜZENLEME: Bu kodu diğer modlarla denedim ve bir tanesinin algılanacağı bir olaya benzemedim. AK'yi kullanma Bu durumun farklı olması, diğer sağlayıcıyı kullandığı için farklıdır, ancak sağlayıcılar, BC'nin yukarıda bahsettiğim istisnai istisnanın üstündedir.
DÜZENLEME Ben ben ayrıntılı burada yapıp döndü böylece classloading sorunun çeşit olabileceğini düşünüyorum ilginç Kayıtlar
olduğunu[Loaded org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi$ECDSA from file:/home/martin/java/jdk1.8.0_45/jre/lib/ext/bcprov-jdk15on-154.jar]
[Loaded org.bouncycastle.jce.spec.ECKeySpec from jar:file:/opt/wildfly-10.0.0.Final/modules/system/layers/base/org/bouncycastle/main/bcprov-jdk15on-1.52.jar!/]
KeyFactorySpi ve ECKeySpec iki farklı kavanoz geliyor gelen (classloaders?) Dolayısıyla KeyFactory kullanılan instanceof
başarısız
size çözüm için çok teşekkür ederiz :-) gelecekte birisi yardımcı olur! –