messageDigest.update(digest.getMethod().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getUri().getBytes(UTF8)); byte[] ha2 = messageDigest.digest();
messageDigest.update(digest.getMethod().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getUri().getBytes(UTF8)); byte[] ha2 = messageDigest.digest();
messageDigest.update(digest.getMethod().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getUri().getBytes(UTF8)); byte[] ha2 = messageDigest.digest();
messageDigest.update(digest.getMethod().getBytes(UTF8)); messageDigest.update((byte) ':'); messageDigest.update(digest.getUri().getBytes(UTF8)); byte[] ha2 = messageDigest.digest();
/** * 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); } }
@Override protected boolean validateCredential(IdentityContext context, final CredentialStorage credentialStorage, final DigestCredentials credentials, CredentialStore<?> store) { DigestCredentialStorage currentCredential = (DigestCredentialStorage) credentialStorage; Digest digest = credentials.getDigest(); if (currentCredential != null) { String providedDigest = digest.getDigest(); String expectedDigest = null; if (digest.getMethod() != null && digest.getUri() != null) { byte[] storedHA1 = currentCredential.getHa1(); byte[] ha2 = calculateA2(digest.getMethod(), digest.getUri()); expectedDigest = calculateDigest(digest, storedHA1, ha2); } else { expectedDigest = String.valueOf(Base64.encodeBytes(currentCredential.getHa1())); } return expectedDigest.equals(providedDigest); } return false; }
@Override protected boolean validateCredential(IdentityContext context, final CredentialStorage credentialStorage, final DigestCredentials credentials, CredentialStore<?> store) { DigestCredentialStorage currentCredential = (DigestCredentialStorage) credentialStorage; Digest digest = credentials.getDigest(); if (currentCredential != null) { String providedDigest = digest.getDigest(); String expectedDigest = null; if (digest.getMethod() != null && digest.getUri() != null) { byte[] storedHA1 = currentCredential.getHa1(); byte[] ha2 = calculateA2(digest.getMethod(), digest.getUri()); expectedDigest = calculateDigest(digest, storedHA1, ha2); } else { expectedDigest = String.valueOf(Base64.encodeBytes(currentCredential.getHa1())); } return expectedDigest.equals(providedDigest); } return false; }
if (digest.getNonce() == null) throw new DigestValidationException("Mandatory field 'nonce' not specified"); if (digest.getUri() == null) throw new DigestValidationException("Mandatory field 'uri' not specified"); if (digest.getClientNonce() == null)
if (digest.getNonce() == null) throw new DigestValidationException("Mandatory field 'nonce' not specified"); if (digest.getUri() == null) throw new DigestValidationException("Mandatory field 'uri' not specified"); if (digest.getClientNonce() == null)