public class HMACSHA1NonceGenerator extends java.lang.Object implements NonceGenerator
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
HEX |
private javax.crypto.Mac |
mac |
Constructor and Description |
---|
HMACSHA1NonceGenerator(java.lang.String seed)
Constructor for HMACSHA1NonceGenerator.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
createNonce(Repository repo,
long timestamp)
Create nonce to be signed by the pusher
|
private static java.lang.String |
toHex(byte[] bytes) |
PushCertificate.NonceStatus |
verify(java.lang.String received,
java.lang.String sent,
Repository db,
boolean allowSlop,
int slop)
Verify trustworthiness of the received nonce.
|
private javax.crypto.Mac mac
private static final java.lang.String HEX
public HMACSHA1NonceGenerator(java.lang.String seed) throws java.lang.IllegalStateException
seed
- seed the generatorjava.lang.IllegalStateException
public java.lang.String createNonce(Repository repo, long timestamp) throws java.lang.IllegalStateException
createNonce
in interface NonceGenerator
repo
- The repository which should be used to obtain a unique String
such that the pusher cannot forge nonces by pushing to another
repository at the same time as well and reusing the nonce.timestamp
- The current time in seconds.java.lang.IllegalStateException
public PushCertificate.NonceStatus verify(java.lang.String received, java.lang.String sent, Repository db, boolean allowSlop, int slop)
verify
in interface NonceGenerator
received
- The nonce which was received from the serversent
- The nonce which was originally sent out to the client.db
- The repository which should be used to obtain a unique String
such that the pusher cannot forge nonces by pushing to another
repository at the same time as well and reusing the nonce.allowSlop
- If the receiving backend is able to generate slop. This is
the case for serving via http protocol using more than one
http frontend. The client would talk to different http
frontends, which may have a slight difference of time due toslop
- If `allowSlop` is true, this specifies the number of seconds
which we allow as slop.private static java.lang.String toHex(byte[] bytes)