X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=cms%2Forg.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2Frepository%2FAuthenticationDigest.java;fp=cms%2Forg.argeo.slc.repo%2Fsrc%2Forg%2Feclipse%2Faether%2Frepository%2FAuthenticationDigest.java;h=0000000000000000000000000000000000000000;hb=6fc94d69efe089414ac9e63bde3efab1cbf7b7ca;hp=f702b4aa71b4b482f0d00a354c534bd0c48d491d;hpb=b36c62642bd0db11b3133b369cc026fd4b7a1ec6;p=gpl%2Fargeo-slc.git diff --git a/cms/org.argeo.slc.repo/src/org/eclipse/aether/repository/AuthenticationDigest.java b/cms/org.argeo.slc.repo/src/org/eclipse/aether/repository/AuthenticationDigest.java deleted file mode 100644 index f702b4aa7..000000000 --- a/cms/org.argeo.slc.repo/src/org/eclipse/aether/repository/AuthenticationDigest.java +++ /dev/null @@ -1,210 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2012 Sonatype, Inc. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Sonatype, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.aether.repository; - -import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; - -import org.eclipse.aether.RepositorySystemSession; - -/** - * A helper to calculate a fingerprint/digest for the authentication data of a repository/proxy. Such a fingerprint can - * be used to detect changes in the authentication data across JVM restarts without exposing sensitive information. - */ -public final class AuthenticationDigest -{ - - private final MessageDigest digest; - - private final RepositorySystemSession session; - - private final RemoteRepository repository; - - private final Proxy proxy; - - /** - * Gets the fingerprint for the authentication of the specified repository. - * - * @param session The repository system session during which the fingerprint is requested, must not be {@code null}. - * @param repository The repository whose authentication is to be fingerprinted, must not be {@code null}. - * @return The fingerprint of the repository authentication or an empty string if no authentication is configured, - * never {@code null}. - */ - public static String forRepository( RepositorySystemSession session, RemoteRepository repository ) - { - String digest = ""; - Authentication auth = repository.getAuthentication(); - if ( auth != null ) - { - AuthenticationDigest authDigest = new AuthenticationDigest( session, repository, null ); - auth.digest( authDigest ); - digest = authDigest.digest(); - } - return digest; - } - - /** - * Gets the fingerprint for the authentication of the specified repository's proxy. - * - * @param session The repository system session during which the fingerprint is requested, must not be {@code null}. - * @param repository The repository whose proxy authentication is to be fingerprinted, must not be {@code null}. - * @return The fingerprint of the proxy authentication or an empty string if no proxy is present or if no proxy - * authentication is configured, never {@code null}. - */ - public static String forProxy( RepositorySystemSession session, RemoteRepository repository ) - { - String digest = ""; - Proxy proxy = repository.getProxy(); - if ( proxy != null ) - { - Authentication auth = proxy.getAuthentication(); - if ( auth != null ) - { - AuthenticationDigest authDigest = new AuthenticationDigest( session, repository, proxy ); - auth.digest( authDigest ); - digest = authDigest.digest(); - } - } - return digest; - } - - private AuthenticationDigest( RepositorySystemSession session, RemoteRepository repository, Proxy proxy ) - { - this.session = session; - this.repository = repository; - this.proxy = proxy; - digest = newDigest(); - } - - private static MessageDigest newDigest() - { - try - { - return MessageDigest.getInstance( "SHA-1" ); - } - catch ( NoSuchAlgorithmException e ) - { - try - { - return MessageDigest.getInstance( "MD5" ); - } - catch ( NoSuchAlgorithmException ne ) - { - throw new IllegalStateException( ne ); - } - } - } - - /** - * Gets the repository system session during which the authentication fingerprint is calculated. - * - * @return The repository system session, never {@code null}. - */ - public RepositorySystemSession getSession() - { - return session; - } - - /** - * Gets the repository requiring authentication. If {@link #getProxy()} is not {@code null}, the data gathered by - * this authentication digest does not apply to the repository's host but rather the proxy. - * - * @return The repository to be contacted, never {@code null}. - */ - public RemoteRepository getRepository() - { - return repository; - } - - /** - * Gets the proxy (if any) to be authenticated with. - * - * @return The proxy or {@code null} if authenticating directly with the repository's host. - */ - public Proxy getProxy() - { - return proxy; - } - - /** - * Updates the digest with the specified strings. - * - * @param strings The strings to update the digest with, may be {@code null} or contain {@code null} elements. - */ - public void update( String... strings ) - { - if ( strings != null ) - { - for ( String string : strings ) - { - if ( string != null ) - { - try - { - digest.update( string.getBytes( "UTF-8" ) ); - } - catch ( UnsupportedEncodingException e ) - { - throw new IllegalStateException( e ); - } - } - } - } - } - - /** - * Updates the digest with the specified characters. - * - * @param chars The characters to update the digest with, may be {@code null}. - */ - public void update( char... chars ) - { - if ( chars != null ) - { - for ( char c : chars ) - { - digest.update( (byte) ( c >> 8 ) ); - digest.update( (byte) ( c & 0xFF ) ); - } - } - } - - /** - * Updates the digest with the specified bytes. - * - * @param bytes The bytes to update the digest with, may be {@code null}. - */ - public void update( byte... bytes ) - { - if ( bytes != null ) - { - digest.update( bytes ); - } - } - - private String digest() - { - byte[] bytes = digest.digest(); - StringBuilder buffer = new StringBuilder( bytes.length * 2 ); - for ( byte aByte : bytes ) - { - int b = aByte & 0xFF; - if ( b < 0x10 ) - { - buffer.append( '0' ); - } - buffer.append( Integer.toHexString( b ) ); - } - return buffer.toString(); - } - -}