001 /**
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements. See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019 package org.apache.geronimo.util.crypto;
020
021 /**
022 * interface that a message digest conforms to.
023 */
024 public interface Digest
025 {
026 /**
027 * return the algorithm name
028 *
029 * @return the algorithm name
030 */
031 public String getAlgorithmName();
032
033 /**
034 * return the size, in bytes, of the digest produced by this message digest.
035 *
036 * @return the size, in bytes, of the digest produced by this message digest.
037 */
038 public int getDigestSize();
039
040 /**
041 * update the message digest with a single byte.
042 *
043 * @param in the input byte to be entered.
044 */
045 public void update(byte in);
046
047 /**
048 * update the message digest with a block of bytes.
049 *
050 * @param in the byte array containing the data.
051 * @param inOff the offset into the byte array where the data starts.
052 * @param len the length of the data.
053 */
054 public void update(byte[] in, int inOff, int len);
055
056 /**
057 * close the digest, producing the final digest value. The doFinal
058 * call leaves the digest reset.
059 *
060 * @param out the array the digest is to be copied into.
061 * @param outOff the offset into the out array the digest is to start at.
062 */
063 public int doFinal(byte[] out, int outOff);
064
065 /**
066 * reset the digest back to it's initial state.
067 */
068 public void reset();
069 }