pub struct ECPoint<'a> { /* private fields */ }
Expand description
Elliptic Curve point, as defined in RFC5480
Implementations§
Source§impl<'a> ECPoint<'a>
impl<'a> ECPoint<'a>
Sourcepub fn data(&'a self) -> &'a [u8] ⓘ
pub fn data(&'a self) -> &'a [u8] ⓘ
EC Point content (See Standards for Efficient Cryptography Group (SECG), “SEC1: Elliptic Curve Cryptography”)
Examples found in repository?
examples/print-cert.rs (line 312)
293fn print_x509_ski(public_key: &SubjectPublicKeyInfo) {
294 println!(" Public Key Algorithm:");
295 print_x509_digest_algorithm(&public_key.algorithm, 6);
296 match public_key.parsed() {
297 Ok(PublicKey::RSA(rsa)) => {
298 println!(" RSA Public Key: ({} bit)", rsa.key_size());
299 // print_hex_dump(rsa.modulus, 1024);
300 for l in format_number_to_hex_with_colon(rsa.modulus, 16) {
301 println!(" {l}");
302 }
303 if let Ok(e) = rsa.try_exponent() {
304 println!(" exponent: 0x{e:x} ({e})");
305 } else {
306 println!(" exponent: <INVALID>:");
307 print_hex_dump(rsa.exponent, 32);
308 }
309 }
310 Ok(PublicKey::EC(ec)) => {
311 println!(" EC Public Key: ({} bit)", ec.key_size());
312 for l in format_number_to_hex_with_colon(ec.data(), 16) {
313 println!(" {l}");
314 }
315 // // identify curve
316 // if let Some(params) = &public_key.algorithm.parameters {
317 // let curve_oid = params.as_oid();
318 // let curve = curve_oid
319 // .map(|oid| {
320 // oid_registry()
321 // .get(oid)
322 // .map(|entry| entry.sn())
323 // .unwrap_or("<UNKNOWN>")
324 // })
325 // .unwrap_or("<ERROR: NOT AN OID>");
326 // println!(" Curve: {}", curve);
327 // }
328 }
329 Ok(PublicKey::DSA(y)) => {
330 println!(" DSA Public Key: ({} bit)", 8 * y.len());
331 for l in format_number_to_hex_with_colon(y, 16) {
332 println!(" {l}");
333 }
334 }
335 Ok(PublicKey::GostR3410(y)) => {
336 println!(" GOST R 34.10-94 Public Key: ({} bit)", 8 * y.len());
337 for l in format_number_to_hex_with_colon(y, 16) {
338 println!(" {l}");
339 }
340 }
341 Ok(PublicKey::GostR3410_2012(y)) => {
342 println!(" GOST R 34.10-2012 Public Key: ({} bit)", 8 * y.len());
343 for l in format_number_to_hex_with_colon(y, 16) {
344 println!(" {l}");
345 }
346 }
347 Ok(PublicKey::Unknown(b)) => {
348 println!(" Unknown key type");
349 print_hex_dump(b, 256);
350 if let Ok((rem, res)) = der_parser::parse_der(b) {
351 eprintln!("rem: {} bytes", rem.len());
352 eprintln!("{res:?}");
353 } else {
354 eprintln!(" <Could not parse key as DER>");
355 }
356 }
357 Err(_) => {
358 println!(" INVALID PUBLIC KEY");
359 }
360 }
361 // dbg!(&public_key);
362 // todo!();
363}
Sourcepub fn key_size(&self) -> usize
pub fn key_size(&self) -> usize
Return the key size (in bits) or 0
Examples found in repository?
examples/print-cert.rs (line 311)
293fn print_x509_ski(public_key: &SubjectPublicKeyInfo) {
294 println!(" Public Key Algorithm:");
295 print_x509_digest_algorithm(&public_key.algorithm, 6);
296 match public_key.parsed() {
297 Ok(PublicKey::RSA(rsa)) => {
298 println!(" RSA Public Key: ({} bit)", rsa.key_size());
299 // print_hex_dump(rsa.modulus, 1024);
300 for l in format_number_to_hex_with_colon(rsa.modulus, 16) {
301 println!(" {l}");
302 }
303 if let Ok(e) = rsa.try_exponent() {
304 println!(" exponent: 0x{e:x} ({e})");
305 } else {
306 println!(" exponent: <INVALID>:");
307 print_hex_dump(rsa.exponent, 32);
308 }
309 }
310 Ok(PublicKey::EC(ec)) => {
311 println!(" EC Public Key: ({} bit)", ec.key_size());
312 for l in format_number_to_hex_with_colon(ec.data(), 16) {
313 println!(" {l}");
314 }
315 // // identify curve
316 // if let Some(params) = &public_key.algorithm.parameters {
317 // let curve_oid = params.as_oid();
318 // let curve = curve_oid
319 // .map(|oid| {
320 // oid_registry()
321 // .get(oid)
322 // .map(|entry| entry.sn())
323 // .unwrap_or("<UNKNOWN>")
324 // })
325 // .unwrap_or("<ERROR: NOT AN OID>");
326 // println!(" Curve: {}", curve);
327 // }
328 }
329 Ok(PublicKey::DSA(y)) => {
330 println!(" DSA Public Key: ({} bit)", 8 * y.len());
331 for l in format_number_to_hex_with_colon(y, 16) {
332 println!(" {l}");
333 }
334 }
335 Ok(PublicKey::GostR3410(y)) => {
336 println!(" GOST R 34.10-94 Public Key: ({} bit)", 8 * y.len());
337 for l in format_number_to_hex_with_colon(y, 16) {
338 println!(" {l}");
339 }
340 }
341 Ok(PublicKey::GostR3410_2012(y)) => {
342 println!(" GOST R 34.10-2012 Public Key: ({} bit)", 8 * y.len());
343 for l in format_number_to_hex_with_colon(y, 16) {
344 println!(" {l}");
345 }
346 }
347 Ok(PublicKey::Unknown(b)) => {
348 println!(" Unknown key type");
349 print_hex_dump(b, 256);
350 if let Ok((rem, res)) = der_parser::parse_der(b) {
351 eprintln!("rem: {} bytes", rem.len());
352 eprintln!("{res:?}");
353 } else {
354 eprintln!(" <Could not parse key as DER>");
355 }
356 }
357 Err(_) => {
358 println!(" INVALID PUBLIC KEY");
359 }
360 }
361 // dbg!(&public_key);
362 // todo!();
363}
Trait Implementations§
impl<'a> Eq for ECPoint<'a>
impl<'a> StructuralPartialEq for ECPoint<'a>
Auto Trait Implementations§
impl<'a> Freeze for ECPoint<'a>
impl<'a> RefUnwindSafe for ECPoint<'a>
impl<'a> Send for ECPoint<'a>
impl<'a> Sync for ECPoint<'a>
impl<'a> Unpin for ECPoint<'a>
impl<'a> UnwindSafe for ECPoint<'a>
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more