1 /*
2  * reserved comment block
3  * DO NOT REMOVE OR ALTER!
4  */
5 /**
6  * Licensed to the Apache Software Foundation (ASF) under one
7  * or more contributor license agreements. See the NOTICE file
8  * distributed with this work for additional information
9  * regarding copyright ownership. The ASF licenses this file
10  * to you under the Apache License, Version 2.0 (the
11  * "License"); you may not use this file except in compliance
12  * with the License. You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing,
17  * software distributed under the License is distributed on an
18  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19  * KIND, either express or implied. See the License for the
20  * specific language governing permissions and limitations
21  * under the License.
22  */
23 package com.sun.org.apache.xml.internal.security.algorithms;
24 
25 import java.security.Key;
26 import java.security.SecureRandom;
27 import java.security.spec.AlgorithmParameterSpec;
28 
29 import com.sun.org.apache.xml.internal.security.signature.XMLSignatureException;
30 import org.w3c.dom.Element;
31 
32 public abstract class SignatureAlgorithmSpi {
33 
34     /**
35      * Returns the URI representation of {@code Transformation algorithm}
36      *
37      * @return the URI representation of {@code Transformation algorithm}
38      */
engineGetURI()39     protected abstract String engineGetURI();
40 
41     /**
42      * Proxy method for {@link java.security.Signature#getAlgorithm}
43      * which is executed on the internal {@link java.security.Signature} object.
44      *
45      * @return the result of the {@link java.security.Signature#getAlgorithm} method
46      */
engineGetJCEAlgorithmString()47     protected abstract String engineGetJCEAlgorithmString();
48 
49     /**
50      * Method engineGetJCEProviderName
51      *
52      * @return the JCE ProviderName
53      */
engineGetJCEProviderName()54     protected abstract String engineGetJCEProviderName();
55 
56     /**
57      * Proxy method for {@link java.security.Signature#update(byte[])}
58      * which is executed on the internal {@link java.security.Signature} object.
59      *
60      * @param input
61      * @throws XMLSignatureException
62      */
engineUpdate(byte[] input)63     protected abstract void engineUpdate(byte[] input) throws XMLSignatureException;
64 
65     /**
66      * Proxy method for {@link java.security.Signature#update(byte[])}
67      * which is executed on the internal {@link java.security.Signature} object.
68      *
69      * @param input
70      * @throws XMLSignatureException
71      */
engineUpdate(byte input)72     protected abstract void engineUpdate(byte input) throws XMLSignatureException;
73 
74     /**
75      * Proxy method for {@link java.security.Signature#update(byte[], int, int)}
76      * which is executed on the internal {@link java.security.Signature} object.
77      *
78      * @param buf
79      * @param offset
80      * @param len
81      * @throws XMLSignatureException
82      */
engineUpdate(byte buf[], int offset, int len)83     protected abstract void engineUpdate(byte buf[], int offset, int len)
84         throws XMLSignatureException;
85 
86     /**
87      * Proxy method for {@link java.security.Signature#initSign(java.security.PrivateKey)}
88      * which is executed on the internal {@link java.security.Signature} object.
89      *
90      * @param signingKey
91      * @throws XMLSignatureException if this method is called on a MAC
92      */
engineInitSign(Key signingKey)93     protected abstract void engineInitSign(Key signingKey) throws XMLSignatureException;
94 
95     /**
96      * Proxy method for {@link java.security.Signature#initSign(java.security.PrivateKey,
97      * java.security.SecureRandom)}
98      * which is executed on the internal {@link java.security.Signature} object.
99      *
100      * @param signingKey
101      * @param secureRandom
102      * @throws XMLSignatureException if this method is called on a MAC
103      */
engineInitSign(Key signingKey, SecureRandom secureRandom)104     protected abstract void engineInitSign(Key signingKey, SecureRandom secureRandom)
105         throws XMLSignatureException;
106 
107     /**
108      * Proxy method for {@link javax.crypto.Mac}
109      * which is executed on the internal {@link javax.crypto.Mac#init(Key)} object.
110      *
111      * @param signingKey
112      * @param algorithmParameterSpec
113      * @throws XMLSignatureException if this method is called on a Signature
114      */
engineInitSign( Key signingKey, AlgorithmParameterSpec algorithmParameterSpec )115     protected abstract void engineInitSign(
116         Key signingKey, AlgorithmParameterSpec algorithmParameterSpec
117     ) throws XMLSignatureException;
118 
119     /**
120      * Proxy method for {@link java.security.Signature#sign()}
121      * which is executed on the internal {@link java.security.Signature} object.
122      *
123      * @return the result of the {@link java.security.Signature#sign()} method
124      * @throws XMLSignatureException
125      */
engineSign()126     protected abstract byte[] engineSign() throws XMLSignatureException;
127 
128     /**
129      * Method engineInitVerify
130      *
131      * @param verificationKey
132      * @throws XMLSignatureException
133      */
engineInitVerify(Key verificationKey)134     protected abstract void engineInitVerify(Key verificationKey) throws XMLSignatureException;
135 
136     /**
137      * Proxy method for {@link java.security.Signature#verify(byte[])}
138      * which is executed on the internal {@link java.security.Signature} object.
139      *
140      * @param signature
141      * @return true if the signature is correct
142      * @throws XMLSignatureException
143      */
engineVerify(byte[] signature)144     protected abstract boolean engineVerify(byte[] signature) throws XMLSignatureException;
145 
146     /**
147      * Proxy method for {@link java.security.Signature#setParameter(
148      * java.security.spec.AlgorithmParameterSpec)}
149      * which is executed on the internal {@link java.security.Signature} object.
150      *
151      * @param params
152      * @throws XMLSignatureException
153      */
engineSetParameter(AlgorithmParameterSpec params)154     protected abstract void engineSetParameter(AlgorithmParameterSpec params)
155         throws XMLSignatureException;
156 
157 
158     /**
159      * Method engineGetContextFromElement
160      *
161      * @param element
162      */
engineGetContextFromElement(Element element)163     protected void engineGetContextFromElement(Element element) {
164     }
165 
166     /**
167      * Method engineSetHMACOutputLength
168      *
169      * @param HMACOutputLength
170      * @throws XMLSignatureException
171      */
engineSetHMACOutputLength(int HMACOutputLength)172     protected abstract void engineSetHMACOutputLength(int HMACOutputLength)
173         throws XMLSignatureException;
174 
reset()175     public void reset() {
176     }
177 }
178