下载链接编码的KeyStore

时间:2013-03-26 20:19:34

标签: jsf-2 download

我已经通过API生成了一个PKCS12密钥库,但该进程的返回是一个KeyStore对象。当客户端发送请购单时,我需要将其直接发送到浏览器进行下载。

我该怎么做?

我正在使用java和jboss 5AS。

2 个答案:

答案 0 :(得分:2)

您可以使用KeyStore#store()将其写入OutputStream

keyStore.store(outputStream, password);

基本上就是这样。 OutputStream可以是HTTP响应之一。有关如何在JSF中提供文件下载的通用启动示例,您需要集成此行,请转到此答案:How to provide a file download from a JSF backing bean?使用application/x-pkcs12 {{1}}。

答案 1 :(得分:1)

以下是代码:

public void cadastrar () throws Exception
{       
    byte[] encodedKeyStore = controlador.cadastrar(certificadoModel);

    java.security.KeyStore keyStore = java.security.KeyStore.getInstance("PKCS12");
    keyStore.load(new ByteArrayInputStream(encodedKeyStore), certificadoModel.getPassword().toCharArray());

    FacesContext fc = FacesContext.getCurrentInstance();
    ExternalContext ec = fc.getExternalContext();

    ec.responseReset(); 
    ec.setResponseContentType("application/x-pkcs12"); 
    //ec.setResponseContentLength(contentLength); 
    ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + certificadoModel.getUsername() + ".p12" + "\""); 

    OutputStream output = ec.getResponseOutputStream();
    keyStore.store(output, certificadoModel.getPassword().toCharArray());

    fc.responseComplete(); 
}