编程语言
首页 > 编程语言> > java.security.cert.Certificate中的verify方法是否是线程安全的?

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