Security
Security (보안 속성·프로바이더 관리)
모든 보안 속성과 공통 보안 메서드를 중앙 집중화하는 클래스입니다. 주요 용도 중 하나는 프로바이더(Provider)를 관리하는 것입니다.
본문
Security 클래스는 보안 속성과 공통 보안 메서드를 중앙에서 관리합니다. 보안 속성의 기본값은 구현 특유의 위치에서 읽는데, 보통 Java 설치 디렉터리의 conf/security/java.security 속성 파일에서 읽습니다.
Security가 제공하는 주요 정적 메서드는 다음과 같습니다.
public static synchronized int insertProviderAt(Provider provider, int position)— 지정된 위치(1부터 시작, 1이 가장 선호)에 새 프로바이더를 추가합니다. 해당 위치의 프로바이더와 그 뒤 프로바이더들은 한 칸씩 뒤로 밀립니다. 이미 설치된 프로바이더는 추가할 수 없습니다.public static int addProvider(Provider provider)— 다음 사용 가능한 위치에 프로바이더를 추가합니다.public static synchronized void removeProvider(String name)— 지정된 이름의 프로바이더를 제거합니다. 이후 프로바이더들은 한 칸씩 앞으로 당겨집니다.public static Provider[] getProviders()— 설치된 모든 프로바이더를 선호 순서대로 담은 배열을 반환합니다.public static Provider getProvider(String name)— 지정된 이름의 설치된 프로바이더를 반환합니다. 없으면null.public static Provider[] getProviders(String filter)— 지정된 선택 기준을 만족하는 모든 설치된 프로바이더를 반환합니다.public static Provider[] getProviders(Map<String,String> filter)— 맵으로 표현된 선택 기준을 모두 만족하는 프로바이더를 반환합니다.public static String getProperty(String key)— 보안 속성 값을 가져옵니다.public static void setProperty(String key, String datum)— 보안 속성 값을 설정합니다.public static Set<String> getAlgorithms(String serviceName)— 지정된 Java 암호화 서비스(예: Signature, MessageDigest, Cipher, Mac, KeyStore)에 대해 사용 가능한 모든 알고리즘·타입 이름 집합을 반환합니다. 반환된 집합은 불변입니다.public static String getAlgorithmProperty(String algName, String propName)— 알고리즘에 대한 지정된 속성을 가져옵니다(레거시).
프로바이더를 추가·제거할 때는 보안 관리자가 있으면 SecurityPermission을 검사합니다. 예를 들어 getProviders 필터는 "CertificateFactory.X.509"(서비스·타입) 또는 "Signature.SHA1withDSA KeySize:1024"(서비스·타입 + 속성 제약) 형식으로 지정합니다.