このクラスは、すべてのセキュリティ・プロパティ、および共通のセキュリティ・メソッドを集中管理します。 その主な使用目的の1つにプロバイダの管理があります。
セキュリティ・プロパティのデフォルト値は、実装固有のロケーション(通常は、Javaインストール・ディレクトリ内のプロパティ・ファイルconf/security/java.security
)から読み取られます。
- 実装上のノート:
- プロパティ・ファイルのロードに失敗した場合、JDK実装では、
Security
クラスの初期化時に未指定のエラーがスローされます。 - 導入されたバージョン:
- 1.1
-
メソッドのサマリー
修飾子と型メソッド説明static int
addProvider
(Provider provider) プロバイダを可能な次の位置に追加します。static String
getAlgorithmProperty
(String algName, String propName) 非推奨。このメソッドは、アルゴリズム固有のパラメータの構文解析方法を決定するため、SUN暗号化サービス・プロバイダのマスター・ファイル内にある独自のプロパティの値を返すために使用されます。getAlgorithms
(String serviceName) 指定されたJava暗号化サービス(e.g.,Signature
,MessageDigest
,Cipher
,Mac
,KeyStore
)で使用可能なすべてのアルゴリズムまたはタイプの名前を含むString
オブジェクトのセットを返します。static String
getProperty
(String key) セキュリティ・プロパティ値を取得します。static Provider
getProvider
(String name) 指定された名前でインストールされているプロバイダを返します。static Provider[]
インストールされているすべてのプロバイダの配列を返します。static Provider[]
getProviders
(String filter) 指定した選択基準を満たすすべてのインストール済プロバイダを含む配列を返します。そのようなプロバイダがインストールされていない場合はnull
を返します。static Provider[]
getProviders
(Map<String, String> filter) 指定した選択基準を満たすすべてのインストール済プロバイダを含む配列を返します。そのようなプロバイダがインストールされていない場合はnull
を返します。static int
insertProviderAt
(Provider provider, int position) 指定された位置に新規プロバイダを追加します。static void
removeProvider
(String name) 指定された名前のプロバイダを削除します。static void
setProperty
(String key, String datum) セキュリティ・プロパティの値を設定します。
-
メソッドの詳細
-
getAlgorithmProperty
@Deprecated public static String getAlgorithmProperty(String algName, String propName) 非推奨。このメソッドは、アルゴリズム固有のパラメータの構文解析方法を決定するため、SUN暗号化サービス・プロバイダのマスター・ファイル内にある独自のプロパティの値を返すために使用されます。 代わりに、新しいプロバイダベースのアルゴリズムに依存しないAlgorithmParameters
およびKeyFactory
エンジン・クラス(J2SEバージョン1.2プラットフォームより導入)を使用してください。アルゴリズムに対する指定されたプロパティを取得します。 アルゴリズムの名前は標準名とする必要があります。 標準アルゴリズム名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」を参照してください。 特殊なアルゴリズム・パーサーが(キー・パーサーと同じように)認識されているアルゴリズムにクラスをマップするために使用することもあります。- パラメータ:
algName
- アルゴリズム名。propName
- 取得するプロパティの名前。- 戻り値:
- 指定されたプロパティの値。
-
insertProviderAt
public static int insertProviderAt(Provider provider, int position) 指定された位置に新規プロバイダを追加します。 位置は優先順になっていて、要求されたアルゴリズムに対してプロバイダがその順序で検索されます。 位置は1から始まり、1が最優先で次に2、3 ...と続きます。 位置が1未満またはnより大きい場合(nはインストールされているプロバイダの数)、プロバイダ(まだインストールされていない場合)はリストの末尾またはn + 1の位置に挿入されます。あるプロバイダが要求された場所にインストールされた場合は、それまでその場所にあったプロバイダ、および
position
よりあとの位置のすべてのプロバイダの順位は、1つあとになり、インストールされたプロバイダ一覧の最後尾に向かって1つ移動します。プロバイダは、インストール済みの場合には追加できません。
セキュリティ・マネージャが存在する場合は、
SecurityManager.checkSecurityAccess(java.lang.String)
メソッドがアクセス権ターゲット名"insertProvider"
を指定して呼び出され、新しいプロバイダを追加してもよいかどうかが確認されます。 このアクセス権チェックが拒否された場合は、アクセス権ターゲット名"insertProvider."+provider.getName()
を指定してcheckSecurityAccess
が再度呼び出されます。 両方のチェックが拒否された場合は、SecurityException
がスローされます。- パラメータ:
provider
- 追加されるプロバイダ。position
- 呼出し側がこのプロバイダに要望する優先順位。- 戻り値:
- プロバイダが追加された実際の優先順位。インストール済みで追加できない場合は -1。
- 例外:
NullPointerException
- プロバイダがnull
の場合SecurityException
- セキュリティ・マネージャが存在し、そのSecurityManager.checkSecurityAccess(java.lang.String)
メソッドが新しいプロバイダを追加するアクセスを許可しない場合- 関連項目:
-
addProvider
public static int addProvider(Provider provider) プロバイダを可能な次の位置に追加します。セキュリティ・マネージャが存在する場合は、
SecurityManager.checkSecurityAccess(java.lang.String)
メソッドがアクセス権ターゲット名"insertProvider"
を指定して呼び出され、新しいプロバイダを追加してもよいかどうかが確認されます。 このアクセス権チェックが拒否された場合は、アクセス権ターゲット名"insertProvider."+provider.getName()
を指定してcheckSecurityAccess
が再度呼び出されます。 両方のチェックが拒否された場合は、SecurityException
がスローされます。- パラメータ:
provider
- 追加されるプロバイダ。- 戻り値:
- プロバイダが追加された実際の優先順位。インストール済みで追加できない場合は -1。
- 例外:
NullPointerException
- プロバイダがnull
の場合SecurityException
- セキュリティ・マネージャが存在し、そのSecurityManager.checkSecurityAccess(java.lang.String)
メソッドが新しいプロバイダを追加するアクセスを許可しない場合- 関連項目:
-
removeProvider
public static void removeProvider(String name) 指定された名前のプロバイダを削除します。指定されたプロバイダが削除されると、そのプロバイダよりもあとの位置にあるすべてのプロバイダの位置が1つ前になり、インストールされたプロバイダ一覧の先頭に向かって1つ移動します。
プロバイダがインストールされていない場合、または名前が
null
の場合、このメソッドは暗黙的に返されます。セキュリティ・マネージャが存在する場合、まずセキュリティ・マネージャの
checkSecurityAccess
メソッドが文字列"removeProvider."+name
を指定して呼び出され、プロバイダを削除してもよいかどうかが確認されます。checkSecurityAccess
のデフォルトの実装が(つまり、このメソッドはオーバーライドされません。)を使用する場合は、checkPermission
メソッドがSecurityPermission("removeProvider."+name)
パーミッションで呼び出されます。- パラメータ:
name
- 削除されるプロバイダの名前。- 例外:
SecurityException
- セキュリティ・マネージャが存在し、そのSecurityManager.checkSecurityAccess(java.lang.String)
メソッドがこのプロバイダを削除するアクセスを許可しない場合- 関連項目:
-
getProviders
public static Provider[] getProviders()インストールされているすべてのプロバイダの配列を返します。 配列内でのプロバイダは優先順位の順になっています。- 戻り値:
- インストールされているすべてのプロバイダの配列。
-
getProvider
-
getProviders
指定した選択基準を満たすすべてのインストール済プロバイダを含む配列を返します。そのようなプロバイダがインストールされていない場合はnull
を返します。 返されたプロバイダの順は優先順となります。暗号化サービスは、常に特定のアルゴリズムまたはタイプに関連付けられています。 たとえば、デジタル署名サービスは常に特定のアルゴリズム(DSAなど)に、CertificateFactoryサービスは常に特定の証明書タイプ(X.509など)にそれぞれ関連付けられています。
次の2種類のフォーマットのどちらかで選択基準を指定する必要があります。
- <crypto_service>.<algorithm_or_type>
暗号化サービス名には、ドットを含まないようにします。
プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していると、プロバイダは指定された選択基準を満たしています。
「CertificateFactory.X.509」の場合は、X.509証明書のCertificateFactoryの実装を提供しているプロバイダであれば、その選択基準を満たしています。
- <crypto_service>.<algorithm_or_type> <attribute_name>:<attribute_value>
暗号化サービス名には、ドットを含まないようにします。 <algorithm_or_type>と<attribute_name>の間にスペース文字が1つ以上必要です。
プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していて、その実装が指定された属性名と値のペアで表記された制約を満たしている場合、プロバイダはこの選択基準を満たしています。
たとえば、1024以上のキー・サイズを持つSHA1withDSA署名アルゴリズムを実装しているどのプロバイダも、「Signature.SHA1withDSA KeySize:1024」を満たしています。
標準暗号化サービス名、標準アルゴリズム名および標準属性名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」を参照してください。
- パラメータ:
filter
- プロバイダの選択基準。 フィルタは大文字と小文字を区別する。- 戻り値:
- 選択基準を満たすすべてのインストール済プロバイダ、またはそのようなプロバイダがインストールされていない場合は
null
。 - 例外:
InvalidParameterException
- フィルタが必要な形式以外の場合NullPointerException
- フィルタがnull
の場合- 導入されたバージョン:
- 1.3
- 関連項目:
- <crypto_service>.<algorithm_or_type>
-
getProviders
指定した選択基準を満たすすべてのインストール済プロバイダを含む配列を返します。そのようなプロバイダがインストールされていない場合はnull
を返します。 返されたプロバイダの順は優先順となります。選択基準はマップで表現されます。 各マップ・エントリは選択基準のことです。 すべての選択基準をプロバイダが満たしている場合、プロバイダは選択されます。 このマップでは、どのエントリのキーも次の2種類の形式のどちらかになります。
- <crypto_service>.<algorithm_or_type>
暗号化サービス名には、ドットを含まないようにします。
キーに関連した値は空の文字列である必要があります。
プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していると、プロバイダはこの選択基準を満たしています。
- <crypto_service>. <algorithm_or_type> <attribute_name>
暗号化サービス名には、ドットを含まないようにします。 <algorithm_or_type>と<attribute_name>の間にスペース文字が1つ以上必要です。
キーに関連した値は、空でない文字列になります。 プロバイダが、指定暗号化サービス向けに指定されたアルゴリズムまたは型を実装していて、その実装が指定された属性名と値のペアで表記された制約を満たしている場合、プロバイダはこの選択基準を満たしています。
標準暗号化サービス名、標準アルゴリズム名および標準属性名の詳細は、「Javaセキュリティ標準アルゴリズム名仕様」を参照してください。
- パラメータ:
filter
- プロバイダの選択基準。 フィルタは大文字と小文字を区別する。- 戻り値:
- 選択基準を満たすすべてのインストール済プロバイダ、またはそのようなプロバイダがインストールされていない場合は
null
。 - 例外:
InvalidParameterException
- フィルタが必要な形式以外の場合NullPointerException
- フィルタがnull
の場合- 導入されたバージョン:
- 1.3
- 関連項目:
- <crypto_service>.<algorithm_or_type>
-
getProperty
セキュリティ・プロパティ値を取得します。まず、セキュリティ・マネージャがある場合、その
checkPermission
メソッドがjava.security.SecurityPermission("getProperty."+key)
権限でコールされ、指定したセキュリティ・プロパティ値を取得しても問題ないかどうかが確認されます。- パラメータ:
key
- 取得するプロパティのキー。- 戻り値:
- セキュリティ・プロパティの値。そのキーを持つプロパティがない場合は
null
。 - 例外:
SecurityException
- セキュリティ・マネージャが存在し、そのSecurityManager.checkPermission(java.security.Permission)
メソッドが指定されたセキュリティ・プロパティ値を取得するアクセスを許可しない場合NullPointerException
- キーがnull
の場合- 関連項目:
-
setProperty
セキュリティ・プロパティの値を設定します。セキュリティ・マネージャが存在する場合、セキュリティ・マネージャの
checkPermission
メソッドがjava.security.SecurityPermission("setProperty."+key)
アクセス権を引数として指定して呼び出され、指定されたセキュリティ・プロパティ値を設定してもよいかどうかを確認します。- パラメータ:
key
- 設定するプロパティの名前。datum
- 設定するプロパティの値。- 例外:
SecurityException
- セキュリティ・マネージャが存在し、そのSecurityManager.checkPermission(java.security.Permission)
メソッドが指定されたセキュリティ・プロパティ値を設定するアクセスを許可しない場合NullPointerException
- キーまたはデータムがnull
の場合- 関連項目:
-
getAlgorithms
指定されたJava暗号化サービス(e.g.,Signature
,MessageDigest
,Cipher
,Mac
,KeyStore
)で使用可能なすべてのアルゴリズムまたはタイプの名前を含むString
オブジェクトのセットを返します。 指定されたサービスをサポートするプロバイダがない場合、またはserviceName
がnull
の場合、空のセットを返します。 Java暗号化サービスの完全なリストについては、「Java暗号化アーキテクチャ(JCA)リファレンス・ガイド」を参照してください。 ノート: 返されるセットは不変です。- パラメータ:
serviceName
- Java暗号化サービス(e.g.,Signature
,MessageDigest
,Cipher
,Mac
,KeyStore
)の名前。 ノート: このパラメータは大文字と小文字を区別する。- 戻り値:
- 指定されたJava暗号化サービスで使用可能なすべてのアルゴリズムまたはタイプの名前を含む一連の
String
オブジェクト、または指定したサービスをサポートするプロバイダがない場合は空のセット。 - 導入されたバージョン:
- 1.4
-