Monat: November 2009

Überprüfen einer qualifizierten Signatur per Extension

Wie überprüft man (mit BouncyCastle), ob ein X509-Zertifikat einer qualifizierten elektronischen Signatur entspricht?

Man liest die Extension aus:

X509Certificate[] chain = getYourCertificateChain();
		try
		{
			ASN1InputStream in 			= new ASN1InputStream(new ByteArrayInputStream(chain[0].getEncoded()));
			DERObject der 				= in.readObject();
			X509CertificateStructure x509Str 	= new X509CertificateStructure((ASN1Sequence) der);

			TBSCertificateStructure xTBSCert 	= x509Str.getTBSCertificate();
			ext 						= xTBSCert.getExtensions();

			X509Extension qcStats 		= ext.getExtension(X509Extensions.QCStatements);

			if(null != qcStats)
				//yes, its is!
				//.....

		} catch (CertificateEncodingException e)
		{
			logger.error(e.getMessage());
		}




Ladebalken mit Spring MVC & DWR

Da es nicht so richtig gute Tutorials zu demThema gibt, hab ich mir aus unterschiedlichen Tutorials was zusammengestrickt:
(Leider weiß ich die Autoren nicht mehr, sonst hätte ich sie hier natürlich erwähnt!)

Hier der Controller für die Uploadseite:

public class DocumentUploadController
{
	 
	private AjaxMultiPartResolver multiPartResolver;
	 
	@Override
	protected ModelAndView onSubmit(HttpServletRequest request,
	    HttpServletResponse response, Object command, BindException errors)
	    throws Exception
	{
	 
	    ModelAndView mv = new ModelAndView(new RedirectView(getSuccessView()));
	 
	        MultipartHttpServletRequest req = multiPartResolver.resolveMultipart(request);
	        MultipartFile file  = req.getFile("file");
	 
	        //save file
	        return mv;
	}
}

Hier der MultiPartResolver:

public class AjaxMultiPartResolver extends CommonsMultipartResolver
{
	private FileUploadListener fileUploadListener;

	@Override
	public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request)
			throws MultipartException
	{
		String encoding 		= determineEncoding(request);
		FileUpload fileUpload 	= prepareFileUpload(encoding);
		if (fileUploadListener != null)
		{
			fileUpload.setProgressListener(fileUploadListener);
		}
		try
		{
			List fileItems 						= ((ServletFileUpload) fileUpload).parseRequest(request);
			MultipartParsingResult parsingResult 	= parseFileItems(fileItems, encoding);

			return new DefaultMultipartHttpServletRequest(request, parsingResult.getMultipartFiles(), parsingResult.getMultipartParameters());
		}
		catch (FileUploadBase.SizeLimitExceededException ex)
		{
			throw new MaxUploadSizeExceededException(fileUpload.getSizeMax(), ex);
		}
		catch (FileUploadException ex)
		{
			throw new MultipartException("Could not parse multipart servlet request", ex);
		}
	}

	public FileUploadListener getFileUploadListener()
	{
		return fileUploadListener;
	}

	public void setFileUploadListener(FileUploadListener fileUploadListener)
	{
		this.fileUploadListener = fileUploadListener;
	}
}

Hier der FileUploadListener:

public class FileUploadListener implements ProgressListener
{

	private boolean multipartFinished 		= false;
	private UploadInfoBean uploadInfoBean;

	private static long bytesTransferred 	= 0;
	private static long fileSize 			= -100;
	private long totalBytesRead 			= 0;

	public FileUploadListener()
	{
		uploadInfoBean = new UploadInfoBean();
	}

	@Override
	public void update(long bytesRead, long contentLength, int items)
	{
		totalBytesRead 	= bytesRead;
		bytesTransferred 	= bytesRead;
		if (fileSize != contentLength)
			fileSize = contentLength;

	}

	public boolean isMultipartFinished()
	{
		return multipartFinished;
	}

	public void setMultipartFinished(boolean multipartFinished)
	{
		this.multipartFinished = multipartFinished;
	}

	/**
	 * Function is used as Javascript-DWR-Function!
	 * @return
	 */
	public UploadInfoBean getStatus()
	{
		uploadInfoBean.setTotalSize(fileSize/1024);
		uploadInfoBean.setBytesRead(totalBytesRead/1024);
		String per = NumberFormat.getPercentInstance().format((double) bytesTransferred / (double) fileSize);
		uploadInfoBean.setPercentage(Integer.parseInt(per. substring(0, per.length() - 1)));
		return uploadInfoBean;
	}

}

Hier die JSP, in der die Dateien hochgeladen werden:

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ include file="/jsp/include.jsp"%>





" type="submit">

Hier die Bean, die den Status speichert:

public class UploadInfoBean
{
	private long totalSize = 0;
	private long bytesRead = 0;
	private int percentage = 0;

	public int getPercentage()
	{
		return percentage;
	}
	public void setPercentage(int percentage)
	{
		this.percentage = percentage;
	}

	public long getTotalSize()
	{
		return totalSize;
	}
	public void setTotalSize(long totalSize)
	{
		this.totalSize = totalSize;
	}
	public long getBytesRead()
	{
		return bytesRead;
	}
	public void setBytesRead(long bytesRead)
	{
		this.bytesRead = bytesRead;
	}
}

Und hier die Auszüge aus der Context.xml


	
	



	 

	
		
			
		
	


 	
		
 	

 	

Ich hoffe, das reicht, um den Ladebalken nachzubauen…