java.security.cert.Certificate中的verify方法是否是线程安全的?
作者:互联网
通常,可以将java.security.cert.Certificate中的验证方法视为线程安全的吗?特别是verify(PublicKey key)和verify(PublicKey key, String sigProvider).多个线程可以同时调用这些方法,而不必担心它们将以线程不安全的方式修改内部数据吗?
JavaDoc对此没有任何提及.也许这是特定于实现的?
我想做这样的事情:
Certificate certificate = getCertificateFromCache();
certificate.verify(whatever);
理想情况下,不将其放在同步块中.
解决方法:
Certificate.verify是一种抽象方法.因此,从这个角度看,不能保证所有实现始终是线程安全的.也许实际证书实现的文档告诉您有关它的信息,但是为了安全起见,您可能必须同步调用以对实际证书进行验证.
也许您可以创建一些等价的证书实例池来绕过该问题.然后,您可以在同一证书的不同实例上并行验证.
标签:security,thread-safety,java 来源: https://codeday.me/bug/20191208/2091125.html