@Override protected CredentialStorage getCredentialStorage(final IdentityContext context, final Account account, final DigestCredentials credentials, final CredentialStore<?> store) { List<DigestCredentialStorage> storages = store.retrieveCredentials(context, account, DigestCredentialStorage.class); for (DigestCredentialStorage storage : storages) { if (storage.getRealm().equals(credentials.getDigest().getRealm()) && isCurrentCredential(storage)) { return storage; } } return null; }
@Override public CredentialStorage createCredentialStorage(IdentityContext context, Account account, Digest digest, CredentialStore<?> store, Date effectiveDate, Date expiryDate) { if (isNullOrEmpty(digest.getRealm())) { throw MESSAGES.credentialDigestInvalidRealm(); } if (isNullOrEmpty(digest.getPassword())) { throw MESSAGES.credentialInvalidPassword(); } String accountName = (String) getDefaultLoginNameProperty(account.getClass()).getValue(account); byte[] ha1 = DigestUtil.calculateA1(accountName, digest.getRealm(), digest.getPassword().toCharArray()); DigestCredentialStorage storage = new DigestCredentialStorage(ha1, digest.getRealm()); if (effectiveDate != null) { storage.setEffectiveDate(effectiveDate); } storage.setExpiryDate(expiryDate); return storage; }
@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 public CredentialStorage createCredentialStorage(IdentityContext context, Account account, Digest digest, CredentialStore<?> store, Date effectiveDate, Date expiryDate) { if (isNullOrEmpty(digest.getRealm())) { throw MESSAGES.credentialDigestInvalidRealm(); } if (isNullOrEmpty(digest.getPassword())) { throw MESSAGES.credentialInvalidPassword(); } String accountName = (String) getDefaultLoginNameProperty(account.getClass()).getValue(account); byte[] ha1 = DigestUtil.calculateA1(accountName, digest.getRealm(), digest.getPassword().toCharArray()); DigestCredentialStorage storage = new DigestCredentialStorage(ha1, digest.getRealm()); if (effectiveDate != null) { storage.setEffectiveDate(effectiveDate); } storage.setExpiryDate(expiryDate); return storage; }
@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 CredentialStorage getCredentialStorage(final IdentityContext context, final Account account, final DigestCredentials credentials, final CredentialStore<?> store) { List<DigestCredentialStorage> storages = store.retrieveCredentials(context, account, DigestCredentialStorage.class); for (DigestCredentialStorage storage : storages) { if (storage.getRealm().equals(credentials.getDigest().getRealm()) && isCurrentCredential(storage)) { return storage; } } return null; }