tss_esapi/interface_types/
ecc.rs1use crate::{constants::EccCurveIdentifier, tss2_esys::TPMI_ECC_CURVE, Error, Result};
4use std::convert::TryFrom;
5#[derive(Debug, Copy, Clone, PartialEq, Eq)]
10pub enum EccCurve {
11 NistP192,
12 NistP224,
13 NistP256,
14 NistP384,
15 NistP521,
16 BnP256,
17 BnP638,
18 Sm2P256,
19}
20
21impl From<EccCurve> for EccCurveIdentifier {
22 fn from(ecc_curve: EccCurve) -> Self {
23 match ecc_curve {
24 EccCurve::NistP192 => EccCurveIdentifier::NistP192,
25 EccCurve::NistP224 => EccCurveIdentifier::NistP224,
26 EccCurve::NistP256 => EccCurveIdentifier::NistP256,
27 EccCurve::NistP384 => EccCurveIdentifier::NistP384,
28 EccCurve::NistP521 => EccCurveIdentifier::NistP521,
29 EccCurve::BnP256 => EccCurveIdentifier::BnP256,
30 EccCurve::BnP638 => EccCurveIdentifier::BnP638,
31 EccCurve::Sm2P256 => EccCurveIdentifier::Sm2P256,
32 }
33 }
34}
35
36impl From<EccCurveIdentifier> for EccCurve {
37 fn from(ecc_curve_identifier: EccCurveIdentifier) -> Self {
38 match ecc_curve_identifier {
39 EccCurveIdentifier::NistP192 => EccCurve::NistP192,
40 EccCurveIdentifier::NistP224 => EccCurve::NistP224,
41 EccCurveIdentifier::NistP256 => EccCurve::NistP256,
42 EccCurveIdentifier::NistP384 => EccCurve::NistP384,
43 EccCurveIdentifier::NistP521 => EccCurve::NistP521,
44 EccCurveIdentifier::BnP256 => EccCurve::BnP256,
45 EccCurveIdentifier::BnP638 => EccCurve::BnP638,
46 EccCurveIdentifier::Sm2P256 => EccCurve::Sm2P256,
47 }
48 }
49}
50
51impl From<EccCurve> for TPMI_ECC_CURVE {
52 fn from(curve: EccCurve) -> Self {
53 EccCurveIdentifier::from(curve).into()
54 }
55}
56
57impl TryFrom<TPMI_ECC_CURVE> for EccCurve {
58 type Error = Error;
59
60 fn try_from(tpmi_ecc_curve: TPMI_ECC_CURVE) -> Result<Self> {
61 Ok(EccCurve::from(EccCurveIdentifier::try_from(
62 tpmi_ecc_curve,
63 )?))
64 }
65}