pub struct Keypair(pub Keypair);
Expand description
A vanilla Ed25519 key pair.
Calling Keypair()
creates a new, random Keypair
.
Example: >>> from solders.keypair import Keypair >>> assert Keypair() != Keypair()
Tuple Fields§
§0: Keypair
Implementations§
Source§impl Keypair
impl Keypair
Sourcepub fn from_bytes(raw_bytes: [u8; 64]) -> PyResult<Self>
pub fn from_bytes(raw_bytes: [u8; 64]) -> PyResult<Self>
Recovers a Keypair
from bytes.
Args: raw_bytes (bytes): a 64-byte keypair.
Returns: Keypair: a keypair object.
Example: >>> from solders.keypair import Keypair >>> kp = Keypair() >>> assert kp == Keypair.from_bytes(bytes(kp))
Sourcepub fn to_bytes_array(&self) -> [u8; 64]
pub fn to_bytes_array(&self) -> [u8; 64]
Returns this Keypair
as a byte array.
Returns: list[int]: the keypair as a list of 64 u8 ints.
Example: >>> from solders.keypair import Keypair >>> raw_bytes = b’\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x8a\x88\xe3\xddt\t\xf1\x95\xfdR\xdb-<\xba]r\xcag\t\xbf\x1d\x94\x12\x1b\xf3t\x88\x01\xb4\x0fo\’ >>> assert Keypair.from_bytes(raw_bytes).to_bytes_array() == list(raw_bytes)
Sourcepub fn from_base58_string(s: &str) -> Self
pub fn from_base58_string(s: &str) -> Self
Recovers a Keypair
from a base58-encoded string.
Args: s (str): The base58-encoded string.
Returns: Keypair: a keypair oject.
Example: >>> from solders.keypair import Keypair >>> raw_bytes = b’\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x8a\x88\xe3\xddt\t\xf1\x95\xfdR\xdb-<\xba]r\xcag\t\xbf\x1d\x94\x12\x1b\xf3t\x88\x01\xb4\x0fo\’ >>> base58_str = “2AXDGYSE4f2sz7tvMMzyHvUfcoJmxudvdhBcmiUSo6iuCXagjUCKEQF21awZnUGxmwD4m9vGXuC3qieHXJQHAcT” >>> kp = Keypair.from_base58_string(base58_str) >>> assert kp == Keypair.from_bytes(raw_bytes) >>> assert str(kp) == base58_str
Sourcepub fn secret(&self) -> &[u8] ⓘ
pub fn secret(&self) -> &[u8] ⓘ
Gets this Keypair
’s secret key.
Returns: bytes: The secret key in 32 bytes.
Example: >>> from solders.keypair import Keypair >>> kp = Keypair() >>> assert kp.secret() == bytes(kp)[:32]
Sourcepub fn py_pubkey(&self) -> Pubkey
pub fn py_pubkey(&self) -> Pubkey
Get this keypair’s :class:~solders.pubkey.Pubkey
.
Returns: Pubkey: the pubkey of this keypair.
Example: >>> from solders.keypair import Keypair >>> from solders.pubkey import Pubkey >>> seed_bytes = bytes([0] * 32) >>> pubkey_bytes = b“;j’\xbc\xce\xb6\xa4-b\xa3\xa8\xd0*o\rse2\x15w\x1d\xe2C\xa6:\xc0H\xa1\x8bY\xda)“ >>> kp = Keypair.from_bytes(seed_bytes + pubkey_bytes) >>> assert kp.pubkey() == Pubkey(pubkey_bytes)
Sourcepub fn py_sign_message(&self, message: &[u8]) -> Signature
pub fn py_sign_message(&self, message: &[u8]) -> Signature
Sign a mesage with this keypair, producing an Ed25519 signature over the provided message bytes.
Args: message (bytes): The message to sign.
Returns: Signature: The Ed25519 signature.
Example: >>> from solders.keypair import Keypair >>> seed = bytes([1] * 32) >>> keypair = Keypair.from_seed(seed) >>> msg = b“hello“ >>> sig = keypair.sign_message(msg) >>> bytes(sig).hex() ‘e1430c6ebd0d53573b5c803452174f8991ef5955e0906a09e8fdc7310459e9c82a402526748c3431fe7f0e5faafbf7e703234789734063ee42be17af16438d08’
Sourcepub fn from_seed(seed: [u8; 32]) -> PyResult<Self>
pub fn from_seed(seed: [u8; 32]) -> PyResult<Self>
Generate a keypair from a 32-byte seed.
Args: seed (bytes): 32-byte seed. Returns: Keypair: The generated keypair.
Example: >>> from solders.keypair import Keypair >>> from solders.pubkey import Pubkey >>> seed_bytes = bytes([0] * 32) >>> from_seed = Keypair.from_seed(seed_bytes) >>> from_bytes = Keypair.from_bytes(seed_bytes + bytes(from_seed.pubkey())) >>> assert from_seed == from_bytes
Sourcepub fn from_seed_and_derivation_path(
seed: [u8; 64],
dpath: &str,
) -> PyResult<Self>
pub fn from_seed_and_derivation_path( seed: [u8; 64], dpath: &str, ) -> PyResult<Self>
Generate a keypair from a 32-byte seed and derivation path..
Args: seed (bytes): 32-byte seed. dpath (str): derivation path. Returns: Keypair: The generated keypair.
Example: >>> from solders.keypair import Keypair >>> from solders.pubkey import Pubkey >>> seed_bytes = bytes([0] * 64) >>> account_index = 0 >>> derivation_path = f“m/44’/501’/0’/{account_index}’“ >>> from_seed = Keypair.from_seed_and_derivation_path(seed_bytes, derivation_path)
Sourcepub fn from_seed_phrase_and_passphrase(
seed_phrase: &str,
passphrase: &str,
) -> PyResult<Self>
pub fn from_seed_phrase_and_passphrase( seed_phrase: &str, passphrase: &str, ) -> PyResult<Self>
Generate a keypair from a seed phrase and passphrase.
Args: seed_phrase (string): Secret seed phrase. passphrase (string): Passphrase.
Example: >>> from pybip39 import Mnemonic, Seed >>> from solders.keypair import Keypair >>> mnemonic = Mnemonic() >>> passphrase = “42” >>> seed = Seed(mnemonic, passphrase) >>> expected_keypair = Keypair.from_seed(bytes(seed)[:32]) >>> keypair = Keypair.from_seed_phrase_and_passphrase(mnemonic.phrase, passphrase) >>> assert keypair.pubkey() == expected_keypair.pubkey()
Sourcepub fn py_is_interactive(&self) -> bool
pub fn py_is_interactive(&self) -> bool
Whether the impelmentation requires user interaction to sign.
Returns:
bool: Always False
for this class.
pub fn __hash__(&self) -> u64
pub fn __richcmp__(&self, other: Signer, op: CompareOp) -> PyResult<bool>
pub fn __bytes__<'a>(&self, py: Python<'a>) -> &'a PyBytes
pub fn __str__(&self) -> String
pub fn __repr__(&self) -> String
pub fn __reduce__(&self) -> PyResult<(PyObject, PyObject)>
Trait Implementations§
Source§impl AsRef<Keypair> for Keypair
impl AsRef<Keypair> for Keypair
Source§fn as_ref(&self) -> &KeypairOriginal
fn as_ref(&self) -> &KeypairOriginal
Source§impl CommonMethods<'_> for Keypair
impl CommonMethods<'_> for Keypair
fn py_to_json(&self) -> String
fn py_from_json(raw: &'a str) -> Result<Self, PyErr>
Source§impl CommonMethodsCore for Keypair
impl CommonMethodsCore for Keypair
Source§impl<'de> Deserialize<'de> for Keypair
impl<'de> Deserialize<'de> for Keypair
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<Keypair> for Keypair
impl From<Keypair> for Keypair
Source§fn from(original: KeypairOriginal) -> Keypair
fn from(original: KeypairOriginal) -> Keypair
Source§impl PyBytesGeneral for Keypair
impl PyBytesGeneral for Keypair
fn pybytes_general<'a>(&self, py: Python<'a>) -> &'a PyBytes
Source§impl PyClassImpl for Keypair
impl PyClassImpl for Keypair
Source§const IS_BASETYPE: bool = true
const IS_BASETYPE: bool = true
Source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
Source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
Source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
Source§type ThreadChecker = SendablePyClass<Keypair>
type ThreadChecker = SendablePyClass<Keypair>
Source§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
Source§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny
by default, and when you declare
#[pyclass(extends=PyDict)]
, it’s PyDict
.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
Source§impl PyClassNewTextSignature<Keypair> for PyClassImplCollector<Keypair>
impl PyClassNewTextSignature<Keypair> for PyClassImplCollector<Keypair>
fn new_text_signature(self) -> Option<&'static str>
Source§impl PyFromBytesGeneral for Keypair
impl PyFromBytesGeneral for Keypair
fn py_from_bytes_general(raw: &[u8]) -> PyResult<Self>
Source§impl PyMethods<Keypair> for PyClassImplCollector<Keypair>
impl PyMethods<Keypair> for PyClassImplCollector<Keypair>
fn py_methods(self) -> &'static PyClassItems
Source§impl PyTypeInfo for Keypair
impl PyTypeInfo for Keypair
Source§type AsRefTarget = PyCell<Keypair>
type AsRefTarget = PyCell<Keypair>
Source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
Source§fn type_object(py: Python<'_>) -> &PyType
fn type_object(py: Python<'_>) -> &PyType
Source§fn is_type_of(object: &PyAny) -> bool
fn is_type_of(object: &PyAny) -> bool
object
is an instance of this type or a subclass of this type.Source§fn is_exact_type_of(object: &PyAny) -> bool
fn is_exact_type_of(object: &PyAny) -> bool
object
is an instance of this type.Source§impl RichcmpSigner for Keypair
impl RichcmpSigner for Keypair
Source§impl SignerTraitWrapper for Keypair
impl SignerTraitWrapper for Keypair
fn pubkey(&self) -> Pubkey
fn try_pubkey(&self) -> Result<Pubkey, SignerError>
fn sign_message(&self, message: &[u8]) -> Signature
fn try_sign_message(&self, message: &[u8]) -> Result<Signature, SignerError>
fn is_interactive(&self) -> bool
Source§impl ToSignerOriginal for Keypair
impl ToSignerOriginal for Keypair
fn to_inner(&self) -> Box<dyn SignerTrait>
impl StructuralPartialEq for Keypair
Auto Trait Implementations§
impl Freeze for Keypair
impl RefUnwindSafe for Keypair
impl Send for Keypair
impl Sync for Keypair
impl Unpin for Keypair
impl UnwindSafe for Keypair
Blanket Implementations§
Source§impl<T> AbiEnumVisitor for T
impl<T> AbiEnumVisitor for T
default fn visit_for_abi( &self, _digester: &mut AbiDigester, ) -> Result<AbiDigester, DigestError>
Source§impl<T> AbiEnumVisitor for T
impl<T> AbiEnumVisitor for T
default fn visit_for_abi( &self, digester: &mut AbiDigester, ) -> Result<AbiDigester, DigestError>
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<'a, T> FromPyObject<'a> for T
impl<'a, T> FromPyObject<'a> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more