001// SPDX-FileCopyrightText: 2020 Paul Schaub <vanitasvitae@fsfe.org> 002// 003// SPDX-License-Identifier: Apache-2.0 004 005package org.pgpainless.key.generation.type.ecc.ecdh; 006 007import javax.annotation.Nonnull; 008import java.security.spec.AlgorithmParameterSpec; 009 010import org.bouncycastle.jce.spec.ECNamedCurveGenParameterSpec; 011import org.pgpainless.algorithm.PublicKeyAlgorithm; 012import org.pgpainless.key.generation.type.KeyType; 013import org.pgpainless.key.generation.type.ecc.EllipticCurve; 014 015public final class ECDH implements KeyType { 016 017 private final EllipticCurve curve; 018 019 private ECDH(EllipticCurve curve) { 020 this.curve = curve; 021 } 022 023 public static ECDH fromCurve(@Nonnull EllipticCurve curve) { 024 return new ECDH(curve); 025 } 026 027 @Override 028 public String getName() { 029 return "ECDH"; 030 } 031 032 @Override 033 public PublicKeyAlgorithm getAlgorithm() { 034 return PublicKeyAlgorithm.ECDH; 035 } 036 037 @Override 038 public int getBitStrength() { 039 return curve.getBitStrength(); 040 } 041 042 @Override 043 public AlgorithmParameterSpec getAlgorithmSpec() { 044 return new ECNamedCurveGenParameterSpec(curve.getName()); 045 } 046}