KeyAgreementSpi — 키 합의 서비스 제공자 인터페이스
KeyAgreementSpi — 키 합의 서비스 제공자 인터페이스
KeyAgreementSpi 클래스는 KeyAgreement 클래스를 위한 서비스 제공자 인터페이스(SPI)를 정의해요. 특정 키 합의 알고리즘 구현을 제공하려는 각 암호화 서비스 제공자는 이 클래스의 모든 추상 메서드를 구현해야 해요.
본문
공유 비밀을 확립하는 데 관련된 키는 키 생성기, KeyFactory, 또는 키 합의 프로토콜의 중간 단계(engineDoPhase)의 결과로 만들어져요.
키 교환의 각 상대방에 대해 engineDoPhase를 호출해야 해요. 한 당사자와 교환하면 lastPhase를 true로 한 번, 두 당사자와 교환하면 처음엔 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 접근자를 가져요.