Struct app_store_connect::ConnectTokenEncoder
source · pub struct ConnectTokenEncoder { /* private fields */ }Expand description
Represents a private key used to create JWT tokens for use with App Store Connect.
See https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api and https://developer.apple.com/documentation/appstoreconnectapi/generating_tokens_for_api_requests for more details.
This entity holds the necessary metadata to issue new JWT tokens.
App Store Connect API tokens/JWTs are derived from:
- A key identifier. This is a short alphanumeric string like
DEADBEEF42. - An issuer ID. This is likely a UUID.
- A private key. Likely ECDSA.
All these are issued by Apple. You can log in to App Store Connect and see/manage your keys at https://appstoreconnect.apple.com/access/api.
Implementations§
source§impl ConnectTokenEncoder
impl ConnectTokenEncoder
sourcepub fn from_jwt_encoding_key(
key_id: String,
issuer_id: String,
encoding_key: EncodingKey
) -> Self
pub fn from_jwt_encoding_key(
key_id: String,
issuer_id: String,
encoding_key: EncodingKey
) -> Self
Construct an instance from an EncodingKey instance.
This is the lowest level API and ultimately what all constructors use.
Examples found in repository?
68 69 70 71 72 73 74 75 76 77 78 79
pub fn from_ecdsa_der(key_id: String, issuer_id: String, der_data: &[u8]) -> Result<Self> {
let encoding_key = EncodingKey::from_ec_der(der_data);
Ok(Self::from_jwt_encoding_key(key_id, issuer_id, encoding_key))
}
/// Create a token from a PEM encoded ECDSA private key.
pub fn from_ecdsa_pem(key_id: String, issuer_id: String, pem_data: &[u8]) -> Result<Self> {
let encoding_key = EncodingKey::from_ec_pem(pem_data)?;
Ok(Self::from_jwt_encoding_key(key_id, issuer_id, encoding_key))
}sourcepub fn from_ecdsa_der(
key_id: String,
issuer_id: String,
der_data: &[u8]
) -> Result<Self>
pub fn from_ecdsa_der(
key_id: String,
issuer_id: String,
der_data: &[u8]
) -> Result<Self>
Construct an instance from a DER encoded ECDSA private key.
sourcepub fn from_ecdsa_pem(
key_id: String,
issuer_id: String,
pem_data: &[u8]
) -> Result<Self>
pub fn from_ecdsa_pem(
key_id: String,
issuer_id: String,
pem_data: &[u8]
) -> Result<Self>
Create a token from a PEM encoded ECDSA private key.
sourcepub fn from_ecdsa_pem_path(
key_id: String,
issuer_id: String,
path: impl AsRef<Path>
) -> Result<Self>
pub fn from_ecdsa_pem_path(
key_id: String,
issuer_id: String,
path: impl AsRef<Path>
) -> Result<Self>
Create a token from a PEM encoded ECDSA private key in a filesystem path.
Examples found in repository?
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
pub fn from_api_key_id(key_id: String, issuer_id: String) -> Result<Self> {
let mut search_paths = vec![std::env::current_dir()?.join("private_keys")];
if let Some(home) = dirs::home_dir() {
search_paths.extend([
home.join("private_keys"),
home.join(".private_keys"),
home.join(".appstoreconnect").join("private_keys"),
]);
}
// AuthKey_<apiKey>.p8
let filename = format!("AuthKey_{key_id}.p8");
for path in search_paths {
let candidate = path.join(filename.as_str());
if candidate.exists() {
return Self::from_ecdsa_pem_path(key_id, issuer_id, candidate);
}
}
Err(MissingApiKey.into())
}sourcepub fn from_api_key_id(key_id: String, issuer_id: String) -> Result<Self>
pub fn from_api_key_id(key_id: String, issuer_id: String) -> Result<Self>
Attempt to construct in instance from an API Key ID.
e.g. DEADBEEF42. This looks for an AuthKey_<id>.p8 file in default search
locations like ~/.appstoreconnect/private_keys.
sourcepub fn new_token(&self, duration: u64) -> Result<AppStoreConnectToken>
pub fn new_token(&self, duration: u64) -> Result<AppStoreConnectToken>
Mint a new JWT token.
Using the private key and key metadata bound to this instance, we issue a new JWT for the requested duration.
Trait Implementations§
source§impl Clone for ConnectTokenEncoder
impl Clone for ConnectTokenEncoder
source§fn clone(&self) -> ConnectTokenEncoder
fn clone(&self) -> ConnectTokenEncoder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more