/*
* Copyright 2010-2017 Norwegian Agency for Public Management and eGovernment (Difi)
*
* Licensed under the EUPL, Version 1.1 or – as soon they
* will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
*
* You may not use this work except in compliance with the Licence.
*
* You may obtain a copy of the Licence at:
*
* https://joinup.ec.europa.eu/community/eupl/og_page/eupl
*
* Unless required by applicable law or agreed to in
* writing, software distributed under the Licence is
* distributed on an "AS IS" basis,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
* See the Licence for the specific language governing
* permissions and limitations under the Licence.
*/
package no.difi.oxalis.as2.util;
import com.google.inject.Inject;
import no.difi.oxalis.api.lang.OxalisTransmissionException;
import no.difi.oxalis.api.model.MessageDigestResult;
import no.difi.oxalis.as2.model.Mic;
import no.difi.oxalis.commons.guice.GuiceModuleLoader;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
import javax.activation.MimeType;
import javax.activation.MimeTypeParseException;
import javax.mail.internet.MimeMessage;
import java.io.InputStream;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import static org.testng.Assert.*;
/**
* @author steinar
* Date: 22.10.13
* Time: 16:13
*/
@Test(groups = "integration")
@Guice(modules = {GuiceModuleLoader.class})
public class SignedMimeMessageTest {
private MimeMessage signedMimeMessage;
private SMimeMessageFactory sMimeMessageFactory;
@Inject
private PrivateKey privateKey;
@Inject
private X509Certificate certificate;
@BeforeMethod
public void setUp() throws MimeTypeParseException, OxalisTransmissionException {
sMimeMessageFactory = new SMimeMessageFactory(privateKey, certificate);
signedMimeMessage = sMimeMessageFactory
.createSignedMimeMessage("Arne Barne Busemann", new MimeType("text", "plain"), SMimeDigestMethod.sha1);
}
@Test
public void testCalculateMic() throws Exception {
SignedMimeMessage signedMimeMessage = new SignedMimeMessage(this.signedMimeMessage);
Mic mic1 = signedMimeMessage.calculateMic("sha1");
assertNotNull(mic1);
assertEquals(mic1.toString(), "Oqq8RQc3ff0SXMBXqh4fIwM8xGg=, sha1");
}
@Test
public void testParseSignedMessage() throws Exception {
SignedMimeMessage signedMimeMessage = new SignedMimeMessage(this.signedMimeMessage);
try {
signedMimeMessage.parseSignedMessage();
} catch (Exception e) {
fail(e.getMessage());
}
}
@Test
public void parseMessageWithSbdh() throws Exception {
InputStream is = SignedMimeMessageTest.class.getClassLoader().getResourceAsStream("as2-peppol-bis-invoice-sbdh.xml");
assertNotNull(is, "as2-peppol-bis-invoice-sbdh.xml not found in class path");
MimeMessage signedMimeMessage = sMimeMessageFactory
.createSignedMimeMessage(is, new MimeType("application/xml"), SMimeDigestMethod.sha1);
SignedMimeMessage inspector = new SignedMimeMessage(signedMimeMessage);
MessageDigestResult messageDigestResult = inspector.calcPayloadDigest("SHA-256");
System.out.println(messageDigestResult.getAlgorithmName() + " Digest in Base64: " + messageDigestResult.getDigestAsString());
}
}