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