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; 006 007import javax.annotation.Nonnull; 008 009import org.pgpainless.key.generation.type.xdh.XDHSpec; 010 011/** 012 * Elliptic curves for use with 013 * {@link org.pgpainless.key.generation.type.ecc.ecdh.ECDH}/{@link org.pgpainless.key.generation.type.ecc.ecdsa.ECDSA}. 014 * For curve25519 related curve definitions see 015 * {@link XDHSpec} and {@link org.pgpainless.key.generation.type.eddsa.EdDSACurve}. 016 */ 017public enum EllipticCurve { 018 _P256("prime256v1", 256), // prime256v1 is equivalent to P-256, see https://tools.ietf.org/search/rfc4492#page-32 019 _P384("secp384r1", 384), // secp384r1 is equivalent to P-384, see https://tools.ietf.org/search/rfc4492#page-32 020 _P521("secp521r1", 521), // secp521r1 is equivalent to P-521, see https://tools.ietf.org/search/rfc4492#page-32 021 _SECP256K1("secp256k1", 256), 022 _BRAINPOOLP256R1("brainpoolP256r1", 256), 023 _BRAINPOOLP384R1("brainpoolP384r1", 384), 024 _BRAINPOOLP512R1("brainpoolP512r1", 512) 025 ; 026 027 private final String name; 028 private final int bitStrength; 029 030 EllipticCurve(@Nonnull String name, int bitStrength) { 031 this.name = name; 032 this.bitStrength = bitStrength; 033 } 034 035 public String getName() { 036 return name; 037 } 038 039 public int getBitStrength() { 040 return bitStrength; 041 } 042}