public class PushService
extends java.lang.Object
| Constructor and Description |
|---|
PushService() |
PushService(java.lang.String gcmApiKey) |
| Modifier and Type | Method and Description |
|---|---|
static javax.crypto.SecretKey |
computeSecret(java.security.PrivateKey privateKey,
java.security.PublicKey publicKey)
Compute the shared secret
|
static Encrypted |
encrypt(java.security.PublicKey userPublicKey,
byte[] payload)
Encrypt the payload using the user's public key using Elliptic Curve
Diffie Hellman cryptography over the prime256v1 curve.
|
static byte[] |
encrypt(javax.crypto.SecretKey secret,
byte[] salt,
byte[] payload)
Encrypt payload according to Encrypted Content-Encoding for HTTP.
|
protected static byte[] |
hkdfExpand(byte[] ikm,
byte[] salt,
byte[] info,
int length)
Convenience method for computing the HMAC Key Derivation Function.
|
protected static byte[] |
info(java.lang.String base)
Future versions might require a null-terminated info string?
|
java.util.concurrent.Future<org.apache.http.client.fluent.Content> |
send(Notification notification)
Send a notification
|
public PushService()
public PushService(java.lang.String gcmApiKey)
public static Encrypted encrypt(java.security.PublicKey userPublicKey, byte[] payload) throws java.security.NoSuchProviderException, java.security.NoSuchAlgorithmException, java.security.InvalidAlgorithmParameterException, java.security.InvalidKeyException, javax.crypto.NoSuchPaddingException, javax.crypto.BadPaddingException, javax.crypto.IllegalBlockSizeException, java.security.spec.InvalidKeySpecException
java.security.NoSuchProviderExceptionjava.security.NoSuchAlgorithmExceptionjava.security.InvalidAlgorithmParameterExceptionjava.security.InvalidKeyExceptionjavax.crypto.NoSuchPaddingExceptionjavax.crypto.BadPaddingExceptionjavax.crypto.IllegalBlockSizeExceptionjava.security.spec.InvalidKeySpecExceptionpublic static javax.crypto.SecretKey computeSecret(java.security.PrivateKey privateKey,
java.security.PublicKey publicKey)
throws java.security.NoSuchProviderException,
java.security.NoSuchAlgorithmException,
java.security.InvalidKeyException
privateKey - publicKey - java.security.NoSuchProviderExceptionjava.security.NoSuchAlgorithmExceptionjava.security.InvalidKeyExceptionpublic static byte[] encrypt(javax.crypto.SecretKey secret,
byte[] salt,
byte[] payload)
throws javax.crypto.NoSuchPaddingException,
java.security.NoSuchAlgorithmException,
java.security.InvalidKeyException,
java.security.InvalidAlgorithmParameterException,
javax.crypto.BadPaddingException,
javax.crypto.IllegalBlockSizeException
secret - salt - payload - javax.crypto.NoSuchPaddingExceptionjava.security.NoSuchAlgorithmExceptionjava.security.InvalidKeyExceptionjava.security.InvalidAlgorithmParameterExceptionjavax.crypto.BadPaddingExceptionjavax.crypto.IllegalBlockSizeExceptionprotected static byte[] info(java.lang.String base)
base - protected static byte[] hkdfExpand(byte[] ikm,
byte[] salt,
byte[] info,
int length)
throws java.security.InvalidKeyException,
java.security.NoSuchAlgorithmException
java.security.InvalidKeyExceptionjava.security.NoSuchAlgorithmExceptionpublic java.util.concurrent.Future<org.apache.http.client.fluent.Content> send(Notification notification) throws javax.crypto.NoSuchPaddingException, java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, javax.crypto.IllegalBlockSizeException, javax.crypto.BadPaddingException, java.security.NoSuchProviderException, java.security.InvalidAlgorithmParameterException, java.io.IOException, java.security.spec.InvalidKeySpecException
javax.crypto.NoSuchPaddingExceptionjava.security.InvalidKeyExceptionjava.security.NoSuchAlgorithmExceptionjavax.crypto.IllegalBlockSizeExceptionjavax.crypto.BadPaddingExceptionjava.security.NoSuchProviderExceptionjava.security.InvalidAlgorithmParameterExceptionjava.io.IOExceptionjava.security.spec.InvalidKeySpecException