pub struct ECUncompressedPublicKey(/* private fields */);
Expand description
An uncompressed elliptic curve digital signature algorithm (ECDSA) public key.
An ECUncompressedPublicKey
is a 65-byte representation of a public key on
the secp256k1 curve. It consists of:
- 1 byte prefix (0x04)
- 32 bytes for the x-coordinate
- 32 bytes for the y-coordinate
This format explicitly includes both coordinates of the elliptic curve point, unlike the compressed format which only includes the x-coordinate and a single byte to indicate the parity of the y-coordinate.
This is considered a legacy key type and is not recommended for general use.
The compressed format (ECPublicKey
) is more space-efficient and provides
the same cryptographic security. However, some legacy systems or protocols
might require the uncompressed format.
§Examples
Converting between compressed and uncompressed formats:
use bc_components::{
ECKey, ECPrivateKey, ECPublicKey, ECPublicKeyBase,
ECUncompressedPublicKey,
};
// Generate a keypair
let private_key = ECPrivateKey::new();
let compressed_key = private_key.public_key();
// Convert to uncompressed format
let uncompressed_key = compressed_key.uncompressed_public_key();
// Convert back to compressed format
let compressed_again = uncompressed_key.public_key();
// They should be equal
assert_eq!(compressed_key, compressed_again);
Implementations§
Trait Implementations§
Source§impl AsRef<[u8]> for ECUncompressedPublicKey
Provides a reference to the key data as a byte slice.
impl AsRef<[u8]> for ECUncompressedPublicKey
Provides a reference to the key data as a byte slice.
Source§impl CBORTagged for ECUncompressedPublicKey
Defines CBOR tags for EC keys.
impl CBORTagged for ECUncompressedPublicKey
Defines CBOR tags for EC keys.
Returns the CBOR tags for EC keys.
Source§impl CBORTaggedEncodable for ECUncompressedPublicKey
Implements CBOR encoding for EC uncompressed public keys.
impl CBORTaggedEncodable for ECUncompressedPublicKey
Implements CBOR encoding for EC uncompressed public keys.
Source§fn untagged_cbor(&self) -> CBOR
fn untagged_cbor(&self) -> CBOR
Creates the untagged CBOR representation.
The format is a map with:
- Key 3: byte string of the key data
Source§fn tagged_cbor(&self) -> CBOR
fn tagged_cbor(&self) -> CBOR
Source§impl Clone for ECUncompressedPublicKey
impl Clone for ECUncompressedPublicKey
Source§fn clone(&self) -> ECUncompressedPublicKey
fn clone(&self) -> ECUncompressedPublicKey
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for ECUncompressedPublicKey
Formats the key for debugging, showing type name and hexadecimal value.
impl Debug for ECUncompressedPublicKey
Formats the key for debugging, showing type name and hexadecimal value.
Source§impl Display for ECUncompressedPublicKey
Formats the key as a hexadecimal string.
impl Display for ECUncompressedPublicKey
Formats the key as a hexadecimal string.
Source§impl ECKey for ECUncompressedPublicKey
Implements the ECKey
trait for converting to compressed format.
impl ECKey for ECUncompressedPublicKey
Implements the ECKey
trait for converting to compressed format.
Source§fn public_key(&self) -> ECPublicKey
fn public_key(&self) -> ECPublicKey
Converts this uncompressed public key to its compressed form.
Source§impl ECKeyBase for ECUncompressedPublicKey
Implements the ECKeyBase
trait methods for ECUncompressedPublicKey
.
impl ECKeyBase for ECUncompressedPublicKey
Implements the ECKeyBase
trait methods for ECUncompressedPublicKey
.
Source§impl ECPublicKeyBase for ECUncompressedPublicKey
Implements the ECPublicKeyBase
trait.
impl ECPublicKeyBase for ECUncompressedPublicKey
Implements the ECPublicKeyBase
trait.
Source§fn uncompressed_public_key(&self) -> ECUncompressedPublicKey
fn uncompressed_public_key(&self) -> ECUncompressedPublicKey
Returns this uncompressed public key (self).
Source§impl From<[u8; 65]> for ECUncompressedPublicKey
Converts a fixed-size byte array to an ECUncompressedPublicKey
.
impl From<[u8; 65]> for ECUncompressedPublicKey
Converts a fixed-size byte array to an ECUncompressedPublicKey
.
Source§impl From<ECUncompressedPublicKey> for CBOR
Converts an ECUncompressedPublicKey
to CBOR.
impl From<ECUncompressedPublicKey> for CBOR
Converts an ECUncompressedPublicKey
to CBOR.
Source§fn from(value: ECUncompressedPublicKey) -> Self
fn from(value: ECUncompressedPublicKey) -> Self
Converts to tagged CBOR.
Source§impl Hash for ECUncompressedPublicKey
impl Hash for ECUncompressedPublicKey
Source§impl PartialEq for ECUncompressedPublicKey
impl PartialEq for ECUncompressedPublicKey
impl Eq for ECUncompressedPublicKey
impl StructuralPartialEq for ECUncompressedPublicKey
Auto Trait Implementations§
impl Freeze for ECUncompressedPublicKey
impl RefUnwindSafe for ECUncompressedPublicKey
impl Send for ECUncompressedPublicKey
impl Sync for ECUncompressedPublicKey
impl Unpin for ECUncompressedPublicKey
impl UnwindSafe for ECUncompressedPublicKey
Blanket Implementations§
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
Source§impl<T> CBOREncodable for T
impl<T> CBOREncodable for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> ToHex for T
impl<T> ToHex for T
Source§fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex<U>(&self) -> Uwhere
U: FromIterator<char>,
self
into the result. Lower case
letters are used (e.g. f9b4ca
)Source§fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
fn encode_hex_upper<U>(&self) -> Uwhere
U: FromIterator<char>,
self
into the result. Upper case
letters are used (e.g. F9B4CA
)