2016-05-26 12 views
0

したがって、セキュリティプロバイダは関数のスコープ内でのみ使用する方法を検討しています。 (はBouncyCastleがプロバイダであると仮定)特定のJavaセキュリティプロバイダをメソッドの範囲内でのみ使用する

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); 
JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC"); 
// do some stuff with converter 
Security.removeProvider("BC"); 

ので、私はちょうどJcaPEMKeyConverterのためのBCを使用すると、その後、残りの使用のデフォルトのセキュリティプロバイダの:私はすでに、これらの2行を追加することによってこれを行うことができます。

これを行うより良い方法はありますか?よりエレガントに?カスタムJavaアノテーションはどうでしょうか、それは良い方法ですか?

Thxを:)

+0

、それが役に立てば幸い。 –

答えて

1

あなただけの、次のようにBouncyCastleProviderJcaPEMKeyConverterクラス使用setProvider(java.security.Provider provider)の代わりsetProvider(java.lang.String providerName)に使用されていることをしたい場合:

JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider(new BouncyCastleProvider()); 

次に追加し、上のプロバイダーを削除する必要はありませんセキュリティプロバイダの一覧を表示するので、Security.addProviderSecurity.removeProviderの呼び出しを避けることができます。

それはエレガントだ場合、私は知らないが、あなたの代わりに(JVM-グローバル)プロバイダーのリストを変更するので `BCと.setProvider`` Provider`オブジェクトの他のオーバーロードを呼び出すことができます

+0

メモリリークの可能性があることに注意してください:https://bugs.openjdk.java.net/browse/JDK-8168469 –

関連する問題