public boolean hasValidNonce(Digest digest, HttpServletRequest request) { String nonce = digest.getNonce(); List<String> storedNonces = this.nonceCache.get(request.getSession().getId()); if (storedNonces == null || !storedNonces.contains(nonce) || hasExpired(nonce, this.nonceMaxValid)) { return false; } return true; }
public static String calculateDigest(Digest digest, byte[] ha1, byte[] ha2) { try { MessageDigest messageDigest = getMessageDigest(); messageDigest.update(convertBytesToHex(ha1).getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonceCount().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getClientNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getQop().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(convertBytesToHex(ha2).getBytes(UTF8)); return convertBytesToHex(messageDigest.digest()); } catch (Exception e) { throw new RuntimeException(e); } }
public static String calculateDigest(Digest digest, byte[] ha1, byte[] ha2) { try { MessageDigest messageDigest = getMessageDigest(); messageDigest.update(convertBytesToHex(ha1).getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonceCount().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getClientNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getQop().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(convertBytesToHex(ha2).getBytes(UTF8)); return convertBytesToHex(messageDigest.digest()); } catch (Exception e) { throw new RuntimeException(e); } }
public boolean hasValidNonce(Digest digest, HttpServletRequest request) { String nonce = digest.getNonce(); List<String> storedNonces = this.nonceCache.get(request.getSession().getId()); if (storedNonces == null || !storedNonces.contains(nonce) || hasExpired(nonce, this.nonceMaxValid)) { return false; } return true; }
messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonceCount().getBytes(UTF8));
public boolean hasValidNonce(Digest digest, HttpServletRequest request) { String nonce = digest.getNonce(); List<String> storedNonces = this.nonceCache.get(request.getSession().getId()); if (storedNonces == null || !storedNonces.contains(nonce) || hasExpired(nonce, this.nonceMaxValid)) { return false; } return true; }
messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonceCount().getBytes(UTF8));
messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNc().getBytes(UTF8));
messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonceCount().getBytes(UTF8));
/** * Given the digest, construct the client response value * * @param digest * @param password * @return * @throws FormatException */ public static String calculate(Digest digest, char[] password) { try { MessageDigest messageDigest = getMessageDigest(); byte[] ha1 = calculateA1(digest.getUsername(), digest.getRealm(), password); byte[] ha2 = calculateA2(digest.getMethod(), digest.getUri()); messageDigest.update(convertBytesToHex(ha1).getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonceCount().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getClientNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getQop().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(convertBytesToHex(ha2).getBytes(UTF8)); byte[] digestedValue = messageDigest.digest(); return convertBytesToHex(digestedValue); } catch (Exception e) { throw new RuntimeException(e); } }
/** * Given the digest, construct the client response value * * @param digest * @param password * @return * @throws FormatException */ public static String calculate(Digest digest, char[] password) { try { MessageDigest messageDigest = getMessageDigest(); byte[] ha1 = calculateA1(digest.getUsername(), digest.getRealm(), password); byte[] ha2 = calculateA2(digest.getMethod(), digest.getUri()); messageDigest.update(convertBytesToHex(ha1).getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getNonceCount().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getClientNonce().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getQop().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(convertBytesToHex(ha2).getBytes(UTF8)); byte[] digestedValue = messageDigest.digest(); return convertBytesToHex(digestedValue); } catch (Exception e) { throw new RuntimeException(e); } }
if (digest.getNonce() == null) throw new DigestValidationException("Mandatory field 'nonce' not specified"); if (digest.getUri() == null) String nonceAsText = new String(Base64.decode(digest.getNonce())); throw new DigestValidationException("Nonce should provide two tokens - nonce received: " + digest.getNonce());
if (digest.getNonce() == null) throw new DigestValidationException("Mandatory field 'nonce' not specified"); if (digest.getUri() == null) String nonceAsText = new String(Base64.decode(digest.getNonce())); throw new DigestValidationException("Nonce should provide two tokens - nonce received: " + digest.getNonce());