Package com.turo.pushy.apns.auth
Class ApnsVerificationKey
- java.lang.Object
-
- com.turo.pushy.apns.auth.ApnsVerificationKey
-
- All Implemented Interfaces:
Serializable
,ECKey
,ECPublicKey
,Key
,PublicKey
public class ApnsVerificationKey extends Object implements ECPublicKey
A public key used to verify authentication tokens. Signing keys are associated with a developer team (in Apple's parlance), and can be used to sign authentication tokens for any topic associated with that team.
Callers generally won't need to use this class outside of the context of integration tests. In almost all cases, callers will want to use an
ApnsSigningKey
to provide signing credentials to anApnsClient
.Verification keys are immutable and thread-safe.
- Since:
- 0.10
- Author:
- Jon Chambers
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description static String
APNS_SIGNATURE_ALGORITHM
-
Constructor Summary
Constructors Constructor Description ApnsVerificationKey(String keyId, String teamId, ECPublicKey key)
Constructs a new verification key with the given key identifier, team identifier, and elliptic curve private key.
-
Method Summary
Modifier and Type Method Description String
getAlgorithm()
byte[]
getEncoded()
String
getFormat()
ECPublicKey
getKey()
String
getKeyId()
Returns the Apple-issued identifier for this key.ECParameterSpec
getParams()
String
getTeamId()
Returns the Apple-issued identifier for the team that owns this key.ECPoint
getW()
static ApnsVerificationKey
loadFromInputStream(InputStream inputStream, String teamId, String keyId)
Loads a verification key from the given input stream.static ApnsVerificationKey
loadFromPkcs8File(File pkcs8File, String teamId, String keyId)
Loads a verification key from the given PKCS#8 file.
-
-
-
Field Detail
-
APNS_SIGNATURE_ALGORITHM
public static final String APNS_SIGNATURE_ALGORITHM
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ApnsVerificationKey
public ApnsVerificationKey(String keyId, String teamId, ECPublicKey key) throws NoSuchAlgorithmException, InvalidKeyException
Constructs a new verification key with the given key identifier, team identifier, and elliptic curve private key.- Parameters:
keyId
- the ten-character, Apple-issued identifier for the key itselfteamId
- the ten-character, Apple-issued identifier for the team to which the key belongskey
- the elliptic curve private key underpinning this signing key- Throws:
NoSuchAlgorithmException
- if the "SHA256withECDSA" algorith is not supported by the JVMInvalidKeyException
- if the given elliptic curve private key is invalid for any reason
-
-
Method Detail
-
getKey
public ECPublicKey getKey()
-
getAlgorithm
public String getAlgorithm()
- Specified by:
getAlgorithm
in interfaceKey
-
getEncoded
public byte[] getEncoded()
- Specified by:
getEncoded
in interfaceKey
-
getW
public ECPoint getW()
- Specified by:
getW
in interfaceECPublicKey
-
loadFromPkcs8File
public static ApnsVerificationKey loadFromPkcs8File(File pkcs8File, String teamId, String keyId) throws IOException, NoSuchAlgorithmException, InvalidKeyException
Loads a verification key from the given PKCS#8 file.- Parameters:
pkcs8File
- the file from which to load the keyteamId
- the ten-character, Apple-issued identifier for the team to which the key belongskeyId
- the ten-character, Apple-issued identitifier for the key itself- Returns:
- an APNs verification key with the given key ID and associated with the given team
- Throws:
IOException
- if a key could not be loaded from the given file for any reasonNoSuchAlgorithmException
- if the JVM does not support elliptic curve keysInvalidKeyException
- if the loaded key is invalid for any reason
-
loadFromInputStream
public static ApnsVerificationKey loadFromInputStream(InputStream inputStream, String teamId, String keyId) throws IOException, NoSuchAlgorithmException, InvalidKeyException
Loads a verification key from the given input stream.- Parameters:
inputStream
- the input stream from which to load the keyteamId
- the ten-character, Apple-issued identifier for the team to which the key belongskeyId
- the ten-character, Apple-issued identitifier for the key itself- Returns:
- an APNs verification key with the given key ID and associated with the given team
- Throws:
IOException
- if a key could not be loaded from the given file for any reasonNoSuchAlgorithmException
- if the JVM does not support elliptic curve keysInvalidKeyException
- if the loaded key is invalid for any reason
-
getKeyId
public String getKeyId()
Returns the Apple-issued identifier for this key.- Returns:
- the Apple-issued identifier for this key
-
getTeamId
public String getTeamId()
Returns the Apple-issued identifier for the team that owns this key.- Returns:
- the Apple-issued identifier for the team that owns this key
-
getParams
public ECParameterSpec getParams()
-
-