KeyStoreSpi

KeyStoreSpi (키 저장소 SPI)

KeyStore 클래스의 Service Provider Interface(SPI)를 정의하는 클래스입니다. 특정 키스토어 타입의 구현을 제공하려는 암호화 서비스 프로바이더는 이 클래스의 모든 추상 메서드를 구현해야 합니다.

출처: Java API Reference

본문

KeyStoreSpi는 키스토어의 내부 엔진(engine) 역할을 수행하며, 실제 KeyStore 객체의 공개 메서드는 이 SPI의 engine* 메서드들을 호출합니다. 프로바이더가 구현해야 하는 주요 추상 메서드는 다음과 같습니다.

  • public abstract Key engineGetKey(String alias, char[] password) — 주어진 비밀번호로 키를 복구해 alias와 연관된 키를 반환합니다. 비밀번호가 틀리면 UnrecoverableKeyException(또는 NoSuchAlgorithmException)이 발생할 수 있습니다.
  • public abstract Certificate[] engineGetCertificateChain(String alias) — alias와 연관된 인증서 체인을 반환합니다. 없으면 null을 반환합니다.
  • public abstract Certificate engineGetCertificate(String alias) — alias와 연관된 인증서를 반환합니다.
  • public abstract Date engineGetCreationDate(String alias) — 주어진 alias로 식별되는 엔트리의 생성 일자를 반환합니다.
  • public abstract void engineSetKeyEntry(String alias, Key key, char[] password, Certificate[] chain) — 주어진 키를 비밀번호로 보호해 alias에 할당합니다. PrivateKey라면 대응하는 공개 키를 증명하는 인증서 체인이 필요합니다.
  • public abstract void engineSetKeyEntry(String alias, byte[] key, Certificate[] chain) — 이미 보호된 키를 alias에 할당합니다.
  • public abstract void engineSetCertificateEntry(String alias, Certificate cert) — 주어진 인증서를 alias에 할당합니다.
  • public abstract void engineDeleteEntry(String alias) — 이 키스토어에서 주어진 alias의 엔트리를 삭제합니다.
  • public abstract Enumeration<String> engineAliases() — 키스토어의 모든 alias 이름을 나열합니다.
  • public abstract boolean engineContainsAlias(String alias) — 주어진 alias가 존재하는지 확인합니다.
  • public abstract int engineSize() — 키스토어의 엔트리 수를 가져옵니다.
  • public abstract boolean engineIsKeyEntry(String alias) — 해당 엔트리가 키 관련 엔트리인지 여부를 반환합니다.
  • public abstract boolean engineIsCertificateEntry(String alias) — 해당 엔트리가 신뢰된 인증서 엔트리인지 여부를 반환합니다.
  • public abstract void engineStore(OutputStream stream, char[] password) — 키스토어를 주어진 출력 스트림에 저장하고 비밀번호로 무결성을 보호합니다.
  • public abstract void engineLoad(InputStream stream, char[] password) — 주어진 입력 스트림에서 키스토어를 로드합니다. 비밀번호를 주면 키스토어를 잠금 해제하거나 무결성을 검사합니다.

이 밖에도 engineGetEntry, engineSetEntry, engineEntryInstanceOf, engineProbe 같은 엔트리·프로브 관련 메서드가 있습니다. 키스토어에 속성을 지원하는 구현은 engineGetAttributes(String alias)를 오버라이드할 수 있습니다.

데이터 무결성에 사용하는 알고리즘을 찾을 수 없으면 NoSuchAlgorithmException이, 데이터를 저장·로드하는 데 실패하면 IOException이 발생할 수 있습니다.

더 알아보기 (Learn more)

Java 공식 API