KeyAgreementSpi — 키 합의 서비스 제공자 인터페이스

KeyAgreementSpi — 키 합의 서비스 제공자 인터페이스

KeyAgreementSpi 클래스는 KeyAgreement 클래스를 위한 서비스 제공자 인터페이스(SPI)를 정의해요. 특정 키 합의 알고리즘 구현을 제공하려는 각 암호화 서비스 제공자는 이 클래스의 모든 추상 메서드를 구현해야 해요.

출처: Java API Reference

본문

공유 비밀을 확립하는 데 관련된 키는 키 생성기, KeyFactory, 또는 키 합의 프로토콜의 중간 단계(engineDoPhase)의 결과로 만들어져요.

키 교환의 각 상대방에 대해 engineDoPhase를 호출해야 해요. 한 당사자와 교환하면 lastPhasetrue로 한 번, 두 당사자와 교환하면 처음엔 false, 두 번째엔 true로 두 번 호출해요.

구현해야 할 추상 메서드는 다음과 같아요.

  • Key engineDoPhase(Key key, boolean lastPhase) — 이 키 합의의 다음 단계를 실행해요. InvalidKeyException, IllegalStateException이 발생할 수 있어요.
  • byte[] engineGenerateSecret() — 공유 비밀을 생성해 새 버퍼에 반환해요. ShortBufferException, IllegalStateException이 발생할 수 있어요.
  • int engineGenerateSecret(byte[] sharedSecret, int offset) — 공유 비밀을 지정된 버퍼에 저장해요.
  • SecretKey engineGenerateSecret(String algorithm) — 지정된 알고리즘의 공유 비밀을 비밀 키로 생성해요. NoSuchAlgorithmException, InvalidKeyException, ShortBufferException이 발생할 수 있어요.
  • void engineInit(Key key) — 키로 초기화해요.
  • void engineInit(Key key, AlgorithmParameterSpec params) — 키와 매개변수 사양으로 초기화해요.

제공자는 엔진 메서드를 구현해 실제 키 합의 로직을 제공하며, 모든 engine 메서드는 protected 접근자를 가져요.

더 알아보기 (Learn more)