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.IllegalStateExceptionpublic java.lang.String createNonce(Repository repo, long timestamp) throws java.lang.IllegalStateException
createNonce in interface NonceGeneratorrepo - 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.IllegalStateExceptionpublic PushCertificate.NonceStatus verify(java.lang.String received, java.lang.String sent, Repository db, boolean allowSlop, int slop)
verify in interface NonceGeneratorreceived - 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 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)