/**
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE, Version 3, 29 June 2007;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kevoree.tools.accesscontrol.framework.impl;
import org.kevoree.accesscontrol.AccessControlRoot;
import org.kevoree.adaptation.accesscontrol.api.ModelSignature;
import org.kevoree.adaptation.accesscontrol.api.PDPSignature;
import org.kevoree.adaptation.accesscontrol.api.SignedModel;
import org.kevoree.adaptation.accesscontrol.api.SignedPDP;
import org.kevoree.tools.accesscontrol.framework.api.ModelFormat;
import org.kevoree.tools.accesscontrol.framework.utils.AccessControlXmiHelper;
import org.kevoree.tools.accesscontrol.framework.utils.HelperSignature;
import java.io.Serializable;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.SignatureException;
import java.security.interfaces.RSAPrivateKey;
/**
* Created with IntelliJ IDEA.
* User: jed
* Date: 21/02/13
* Time: 11:16
* To change this template use File | Settings | File Templates.
*/
public class SignedPDPImpl implements SignedPDP, Serializable {
private PDPSignatureImpl signature;
private ModelFormat currentFormat = ModelFormat.XMI;
private byte[] rawmodel = null;
public SignedPDPImpl(AccessControlRoot root,PrivateKey key) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException {
rawmodel = AccessControlXmiHelper.instance$.saveToString(root, false).getBytes();
signature = new PDPSignatureImpl(HelperSignature.getSignature(key, getSerialiedModel()), ((RSAPrivateKey)key).getModulus().toString());
}
@Override
public byte[] getSerialiedModel() {
return rawmodel;
}
@Override
public String getModelFormat() {
return currentFormat.name();
}
@Override
public PDPSignature getSignature() {
return signature;
}
}