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}