package org.jboss.resteasy.test.crypto.resource;

import org.jboss.resteasy.security.BouncyIntegration;
import org.jboss.resteasy.security.KeyTools;
import org.jboss.resteasy.security.smime.SignedOutput;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;

@Path("/test")
public class PKCS7SignatureSmokeResource {
   private X509Certificate cert;
   private PrivateKey privateKey;

   public PKCS7SignatureSmokeResource() {
      try {
            BouncyIntegration.init();
            KeyPair keyPair = KeyPairGenerator.getInstance("RSA", "BC").generateKeyPair();
            privateKey = keyPair.getPrivate();
            cert = KeyTools.generateTestCertificate(keyPair);
      } catch (Exception e) {
            throw new RuntimeException(e);
      }
   }

   @GET
   @Path("signed/pkcs7-signature")
   @Produces("application/pkcs7-signature")
   public SignedOutput get() {
      SignedOutput output = new SignedOutput("hello world", "text/plain");
      output.setCertificate(cert);
      output.setPrivateKey(privateKey);
      return output;
   }

   @GET
   @Path("signed/text")
   @Produces("text/plain")
   public SignedOutput getText() {
      SignedOutput output = new SignedOutput("hello world", "text/plain");
      output.setCertificate(cert);
      output.setPrivateKey(privateKey);
      return output;
   }

}
