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 import java.math.BigInteger;
022
023 /**
024 * interface for classes implementing algorithms modeled similar to the Digital Signature Alorithm.
025 */
026 public interface DSA
027 {
028 /**
029 * initialise the signer for signature generation or signature
030 * verification.
031 *
032 * @param forSigning true if we are generating a signature, false
033 * otherwise.
034 * @param param key parameters for signature generation.
035 */
036 public void init(boolean forSigning, CipherParameters param);
037
038 /**
039 * sign the passed in message (usually the output of a hash function).
040 *
041 * @param message the message to be signed.
042 * @return two big integers representing the r and s values respectively.
043 */
044 public BigInteger[] generateSignature(byte[] message);
045
046 /**
047 * verify the message message against the signature values r and s.
048 *
049 * @param message the message that was supposed to have been signed.
050 * @param r the r signature value.
051 * @param s the s signature value.
052 */
053 public boolean verifySignature(byte[] message, BigInteger r, BigInteger s);
054 }