/**
* 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.ContainerRoot;
import org.kevoree.adaptation.accesscontrol.api.ModelSignature;
import org.kevoree.adaptation.accesscontrol.api.SignedModel;
import org.kevoree.framework.KevoreeXmiHelper;
import org.kevoree.tools.accesscontrol.framework.api.ModelFormat;
import org.kevoree.tools.accesscontrol.framework.impl.ModelSignatureImpl;
import org.kevoree.tools.accesscontrol.framework.utils.HelperSignature;
import java.io.Serializable;
import java.security.*;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.util.ArrayList;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: jed
* Date: 22/01/13
* Time: 08:46
*/
public class SignedModelImpl implements SignedModel, Serializable {
private ModelSignature signature;
private ModelFormat currentFormat = ModelFormat.XMI;
private byte[] rawmodel = null;
public SignedModelImpl(ContainerRoot model, PrivateKey key) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException {
rawmodel = KevoreeXmiHelper.instance$.saveToString(model, false).getBytes();
signature = new ModelSignatureImpl(HelperSignature.getSignature(key, getSerialiedModel()), ((RSAPrivateKey)key).getModulus().toString());
}
@Override
public byte[] getSerialiedModel() {
return rawmodel;
}
@Override
public String getModelFormat() {
return currentFormat.name();
}
@Override
public ModelSignature getSignature() {
return signature;
}
}