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