Skip to main content

Credential

Struct Credential 

Source
pub struct Credential { /* private fields */ }
Expand description

Deribit API credentials for signing requests.

Uses HMAC SHA256 for request signing as per Deribit API specifications. Secrets are automatically zeroized on drop for security.

Implementations§

Source§

impl Credential

Source

pub fn new(api_key: String, api_secret: String) -> Self

Creates a new Credential instance.

Source

pub fn from_env(environment: DeribitEnvironment) -> Option<Self>

Load credentials from environment variables.

For mainnet: Looks for DERIBIT_API_KEY and DERIBIT_API_SECRET. For testnet: Looks for DERIBIT_TESTNET_API_KEY and DERIBIT_TESTNET_API_SECRET.

Returns None if either key or secret is not set.

Source

pub fn resolve( api_key: Option<String>, api_secret: Option<String>, environment: DeribitEnvironment, ) -> Result<Option<Self>, CredentialError>

Resolves credentials from provided values or environment.

If both api_key and api_secret are provided, uses those. Otherwise falls back to loading from environment variables.

§Errors

Returns an error if only one of api_key or api_secret is provided.

Source

pub fn resolve_with_env_fallback( api_key: Option<String>, api_secret: Option<String>, environment: DeribitEnvironment, env_fallback: bool, ) -> Result<Option<Self>, CredentialError>

Resolves credentials with optional environment fallback.

If both api_key and api_secret are provided, uses those. If env_fallback is true and neither credential is provided, loads from environment. If env_fallback is false and neither credential is provided, returns Ok(None).

§Errors

Returns an error if only one of api_key or api_secret is provided (partial credentials). This prevents silent fallback to environment variables when user intent is unclear.

Source

pub fn api_key(&self) -> &str

Returns the API key associated with this credential.

Source

pub fn api_key_masked(&self) -> String

Returns a masked version of the API key for logging purposes.

Shows first 4 and last 4 characters with ellipsis in between. For keys shorter than 8 characters, shows asterisks only.

Source

pub fn sign_ws_auth(&self, timestamp: u64, nonce: &str, data: &str) -> String

Signs a WebSocket authentication request according to Deribit specification.

§Deribit WebSocket Signature Formula
StringToSign = Timestamp + "\n" + Nonce + "\n" + Data
Signature = HEX_STRING(HMAC-SHA256(ClientSecret, StringToSign))
§Returns

Hex-encoded HMAC-SHA256 signature

Source

pub fn sign_auth_headers( &self, method: &str, uri: &str, body: &[u8], ) -> Result<HashMap<String, String>, DeribitHttpError>

Signs a request and generates authentication headers.

§Deribit Authentication Scheme
RequestData = UPPERCASE(HTTP_METHOD) + "\n" + URI + "\n" + RequestBody + "\n"
StringToSign = Timestamp + "\n" + Nonce + "\n" + RequestData
Signature = HEX_STRING(HMAC-SHA256(ClientSecret, StringToSign))
Authorization: deri-hmac-sha256 id={ClientId},ts={Timestamp},nonce={Nonce},sig={Signature}
§Errors

Returns an error if credentials are not configured.

Trait Implementations§

Source§

impl Clone for Credential

Source§

fn clone(&self) -> Credential

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Credential

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for Credential

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

§

impl<T> Ungil for T
where T: Send,