【发布时间】:2016-07-01 13:57:38
【问题描述】:
任何人成功地将SpongyCastle 绑定到 Xamarin.Android?我在绑定项目中的 Metadata.xml 遇到了一堆警告。
到目前为止我有:
<remove-node path="/api/package[@name='org.spongycastle.x509']" />
<remove-node path="/api/package[@name='org.spongycastle.crypto']" />
<remove-node path="/api/package[@name='org.spongycastle.crypto.tls']" />
<remove-node path="/api/package[@name='org.spongycastle.cms']" />
<remove-node path="/api/package[@name='org.spongycastle.crypto.prng']" />
<remove-node path="/api/package[@name='org.spongycastle.openpgp']" />
<remove-node path="/api/package[@name='org.spongycastle.openssl']" />
<remove-node path="/api/package[@name='org.spongycastle.cert.ocsp']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.dh']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.ec']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.digest']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.keystore.bc']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.symmetric']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.dsa']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.util']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.symmetric.util']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.gost']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.ies']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.rsa']" />
<remove-node path="/api/package[@name='org.spongycastle.jcajce.provider.asymmetric.x509']" />
<remove-node path="/api/package[@name='org.spongycastle.jce.provider']/class[@name='CertStoreCollectionSpi']" />
<remove-node path="/api/package[@name='org.spongycastle.jce.provider']/class[@name='MultiCertStoreSpi']" />
<remove-node path="/api/package[@name='org.spongycastle.jce.provider']/class[@name='X509CRLEntryObject']" />
<remove-node path="/api/package[@name='org.spongycastle.jce.provider']/class[@name='X509CRLObject']" />
<remove-node path="/api/package[@name='org.spongycastle.jce.provider']/class[@name='X509CertificateObject']" />
<remove-node path="/api/package[@name='org.spongycastle.jce.provider']/class[@name='X509LDAPCertStoreSpi']"/>
<remove-node path="/api/package[@name='org.spongycastle.jce.provider']/class[@name='PKIXPolicyNode']" />
<remove-node path="/api/package[@name='org.spongycastle.pqc.jcajce.provider.rainbow']" />
<remove-node path="/api/package[@name='org.spongycastle.pqc.jcajce.provider.mceliece']"/>
<remove-node path="/api/package[@name='org.spongycastle.pqc.jcajce.provider.util']" />
<remove-node path="/api/package[@name='org.spongycastle.pqc.crypto.ntru']" />
<remove-node path="/api/package[@name='org.spongycastle.pqc.math.ntru.polynomial']" />
所以它可以编译,但是在 Xamarin.Android 项目中使用绑定项目时需要几分钟。编译,然后抱怨 Java 的 HEAP 大小失败。
当我将堆大小设置为 1GB 时,它会完成,但是当在设备上以调试模式运行应用程序时,调试会中断。
有没有办法在没有绑定库的情况下只使用 ARR?我只需要调用我在此 ARR 中创建的包装器方法并从中获取输出。我不需要通过 C# 访问完整的库。还是有更好的办法?
【问题讨论】:
-
为什么不使用充气城堡?
-
我不是加密专家,但是当各种论坛上有这么多人说:“不幸的是,Android 平台发布了一个不完整且过时的 Android 版 Bouncy Castle,这也使得安装更新的“ - 我选择海绵城堡。参考:aerogear.org/docs/specs/aerogear-crypto
-
最近我在 Android 的 pcl 中使用了充气城堡。没问题。
-
这可能取决于您需要做什么。我依赖于几个库,它们用 NFC 做了一些非常好的事情。因此,建议通过我所依赖的库来使用 SpongyCastle。无论如何,这更多的是解决从 Xamarin 到 Java 的绑定/调用,而不是需要什么样的库。
标签: android xamarin xamarin.android bouncycastle spongycastle