Package eu.europa.esig.dss.spi
Class DSSUtils
- java.lang.Object
-
- eu.europa.esig.dss.spi.DSSUtils
-
public final class DSSUtils extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static StringDEFAULT_DATE_FORMATThe default date pattern: "yyyy-MM-dd"static StringDEFAULT_DATE_TIME_FORMATstatic byte[]EMPTY_BYTE_ARRAY
-
Method Summary
Modifier and Type Method Description static booleancompareFirstBytes(DSSDocument dssDocument, byte[] byteArray)Reads firstbyteArray.lengthbytes of thedssDocumentand compares them withbyteArraystatic byte[]concatenate(byte[]... arrays)Concatenates all the arrays into a new array.static byte[]convertToDER(String pemContent)This method converts a PEM encoded certificate/crl/...static StringconvertToPEM(CertificateToken cert)This method converts the given certificate into its PEM string.static StringdecodeUrl(String uri)static byte[]digest(DigestAlgorithm digestAlgorithm, byte[] data)This method allows to digest the data with the given algorithm.static byte[]digest(DigestAlgorithm digestAlgorithm, byte[]... data)static byte[]digest(DigestAlgorithm digestAlgorithm, DSSDocument document)static byte[]digest(DigestAlgorithm digestAlgo, InputStream inputStream)This method allows to digest the data in theInputStreamwith the given algorithm.static byte[]encodeRSADigest(DigestAlgorithm digestAlgorithm, byte[] digest)This method wraps the digest value in a DigestInfo (combination of digest algorithm and value).static StringformatDateWithCustomFormat(Date date, String format)static StringformatInternal(Date date)Formats a date to use for internal purposes (logging, toString)static StringgetDeterministicId(Date signingTime, TokenIdentifier id)Return a unique id for a date and the certificateToken id.static longgetFileByteSize(DSSDocument dssDocument)Returns byte size of the given documentstatic StringgetMD5Digest(byte[] bytes)Returns a Hex encoded of the MD5 digest of binariesstatic MessageDigestgetMessageDigest(DigestAlgorithm digestAlgorithm)static X500PrincipalgetNormalizedX500Principal(X500Principal x500Principal)This method normalizes the X500Principal objectstatic StringgetSHA1Digest(String stringToDigest)This method digests the given string with SHA1 algorithm and encode returned array of bytes as hex string.static DategetUtcDate(int year, int month, int day)This method returns an UTC date base on the year, the month and the day.static X500PrincipalgetX500PrincipalOrNull(String x500PrincipalString)This method returns theX500Principalcorresponding to the given string ornullif the conversion is not possible.static booleanisStartWithASN1SequenceTag(InputStream is)This method returns true if the inputStream starts with an ASN.1 Sequencestatic CertificateTokenloadCertificate(byte[] input)This method loads a certificate from the byte array.static CertificateTokenloadCertificate(File file)This method loads a certificate from the given location.static CertificateTokenloadCertificate(InputStream inputStream)This method loads a certificate from the given location.static CertificateTokenloadCertificate(String path)This method loads a certificate from the given resource.static CertificateTokenloadCertificateFromBase64EncodedString(String base64Encoded)This method loads a certificate from a base 64 encoded Stringstatic Collection<CertificateToken>loadCertificateFromP7c(InputStream is)static Collection<CertificateToken>loadPotentialIssuerCertificates(CertificateToken cert, DataLoader loader)This method loads the potential issuer certificate(s) from the given locations (AIA).static voidprintSecurityProviders()This method lists all defined security providers.static longreadAvailableBytes(DSSDocument dssDocument, byte[] b)Read the requested number of bytes fromDSSDocumentaccording to the size of the providedbyte[] buffer and validates success of the operationstatic longreadAvailableBytes(InputStream is, byte[] b)Read the requested number of bytes fromInputStreamaccording to the size of the providedbyte[] buffer and validates success of the operationstatic longreadAvailableBytes(InputStream is, byte[] b, int off, int len)Read the requested number of bytes fromInputStreamand validates success of the operationstatic bytereadFirstByte(DSSDocument dssDocument)Reads the first byte from the DSSDocumentstatic voidsaveToFile(byte[] bytes, File file)This method saves the given array ofbyteto the providedFile.static longskipAvailableBytes(InputStream is, long n)Skip the definednnumber of bytes from theInputStreamand validates success of the operationstatic DSSDocumentsplitDocument(DSSDocument origin, int start, int end)This method create a new document from a sub-part of another documentstatic byte[]toByteArray(DSSDocument document)Get the contents of anDSSDocumentas abyte[].static byte[]toByteArray(File file)FROM: Apache Reads the contents of a file into a byte array.static byte[]toByteArray(InputStream inputStream)Get the contents of anInputStreamas abyte[].static InputStreamtoByteArrayInputStream(File file)This method returns anInputStreamwhich does not need to be closed, based onByteArrayInputStream.static org.bouncycastle.cms.CMSSignedDatatoCMSSignedData(DSSDocument document)Gets CMSSignedData from thedocumentbytesstatic StringtoHex(byte[] value)Converts an array of bytes into a String representing the hexadecimal values of each byte in order.static InputStreamtoInputStream(File file)This method returns anInputStreamwhich needs to be closed, based onFileInputStream.static booleanx500PrincipalAreEquals(X500Principal firstX500Principal, X500Principal secondX500Principal)This method compares twoX500Principals.
-
-
-
Field Detail
-
EMPTY_BYTE_ARRAY
public static final byte[] EMPTY_BYTE_ARRAY
-
DEFAULT_DATE_TIME_FORMAT
public static final String DEFAULT_DATE_TIME_FORMAT
- See Also:
- Constant Field Values
-
DEFAULT_DATE_FORMAT
public static final String DEFAULT_DATE_FORMAT
The default date pattern: "yyyy-MM-dd"- See Also:
- Constant Field Values
-
-
Method Detail
-
formatInternal
public static String formatInternal(Date date)
Formats a date to use for internal purposes (logging, toString)- Parameters:
date- the date to be converted- Returns:
- the textual representation (a null date will result in "N/A")
-
formatDateWithCustomFormat
public static String formatDateWithCustomFormat(Date date, String format)
-
toHex
public static String toHex(byte[] value)
Converts an array of bytes into a String representing the hexadecimal values of each byte in order. The returned String will be double the length of the passed array, as it takes two characters to represent any given byte. If the input array is null then null is returned. The obtained string is converted to uppercase.- Parameters:
value- the value to be converted to hexadecimal- Returns:
- the hexadecimal String
-
convertToPEM
public static String convertToPEM(CertificateToken cert)
This method converts the given certificate into its PEM string.- Parameters:
cert- the token to be converted to PEM- Returns:
- PEM encoded certificate
-
isStartWithASN1SequenceTag
public static boolean isStartWithASN1SequenceTag(InputStream is)
This method returns true if the inputStream starts with an ASN.1 Sequence- Parameters:
is- the inputstream to be tested- Returns:
- true if DER encoded
-
convertToDER
public static byte[] convertToDER(String pemContent)
This method converts a PEM encoded certificate/crl/... to DER encoded- Parameters:
pemContent- the String which contains the PEM encoded object- Returns:
- the binaries of the DER encoded object
-
loadCertificate
public static CertificateToken loadCertificate(String path)
This method loads a certificate from the given resource. The certificate must be DER-encoded and may be supplied in binary or printable (PEM / Base64) encoding. If the certificate is provided in Base64 encoding, it must be bounded at the beginning by-----BEGIN CERTIFICATE-----, and must be bounded at the end by-----END CERTIFICATE-----.- Parameters:
path- resource location.- Returns:
- the certificate token
-
loadCertificate
public static CertificateToken loadCertificate(File file)
This method loads a certificate from the given location. The certificate must be DER-encoded and may be supplied in binary or printable (PEM / Base64) encoding. If the certificate is provided in Base64 encoding, it must be bounded at the beginning by-----BEGIN CERTIFICATE-----, and must be bounded at the end by-----END CERTIFICATE-----.- Parameters:
file- the file with the certificate- Returns:
- the certificate token
-
loadCertificate
public static CertificateToken loadCertificate(InputStream inputStream)
This method loads a certificate from the given location. The certificate must be DER-encoded and may be supplied in binary or printable (PEM / Base64) encoding. If the certificate is provided in Base64 encoding, it must be bounded at the beginning by-----BEGIN CERTIFICATE-----, and must be bounded at the end by-----END CERTIFICATE-----.- Parameters:
inputStream- input stream containing the certificate- Returns:
- the certificate token
-
loadCertificateFromP7c
public static Collection<CertificateToken> loadCertificateFromP7c(InputStream is)
-
loadCertificate
public static CertificateToken loadCertificate(byte[] input)
This method loads a certificate from the byte array. The certificate must be DER-encoded and may be supplied in binary or printable (Base64) encoding. If the certificate is provided in Base64 encoding, it must be bounded at the beginning by -----BEGIN CERTIFICATE-----, and must be bounded at the end by -----END CERTIFICATE-----. It throws anDSSExceptionor returnnullwhen the certificate cannot be loaded.- Parameters:
input- array of bytes containing the certificate- Returns:
- the certificate token
-
loadCertificateFromBase64EncodedString
public static CertificateToken loadCertificateFromBase64EncodedString(String base64Encoded)
This method loads a certificate from a base 64 encoded String- Parameters:
base64Encoded- the base64 encoded certificate- Returns:
- the certificate token
-
loadPotentialIssuerCertificates
public static Collection<CertificateToken> loadPotentialIssuerCertificates(CertificateToken cert, DataLoader loader)
This method loads the potential issuer certificate(s) from the given locations (AIA).- Parameters:
cert- certificate for which the issuer(s) should be loadedloader- the data loader to use- Returns:
- a list of potential issuers
-
getSHA1Digest
public static String getSHA1Digest(String stringToDigest)
This method digests the given string with SHA1 algorithm and encode returned array of bytes as hex string.- Parameters:
stringToDigest- Everything in the name- Returns:
- hex encoded digest value
-
digest
public static byte[] digest(DigestAlgorithm digestAlgorithm, byte[] data)
This method allows to digest the data with the given algorithm.- Parameters:
digestAlgorithm- the algorithm to usedata- the data to digest- Returns:
- digested array of bytes
-
getMessageDigest
public static MessageDigest getMessageDigest(DigestAlgorithm digestAlgorithm)
-
encodeRSADigest
public static byte[] encodeRSADigest(DigestAlgorithm digestAlgorithm, byte[] digest)
This method wraps the digest value in a DigestInfo (combination of digest algorithm and value). This encapsulation is required to operate NONEwithRSA signatures.- Parameters:
digestAlgorithm- the used digest algorithmdigest- the digest value- Returns:
- DER encoded binaries of the related digest info
-
digest
public static byte[] digest(DigestAlgorithm digestAlgo, InputStream inputStream)
This method allows to digest the data in theInputStreamwith the given algorithm.- Parameters:
digestAlgo- the algorithm to useinputStream- the data to digest- Returns:
- digested array of bytes
-
digest
public static byte[] digest(DigestAlgorithm digestAlgorithm, DSSDocument document)
-
digest
public static byte[] digest(DigestAlgorithm digestAlgorithm, byte[]... data)
-
toInputStream
public static InputStream toInputStream(File file)
This method returns anInputStreamwhich needs to be closed, based onFileInputStream.- Parameters:
file-Fileto read.- Returns:
- an
InputStreammaterialized by aFileInputStreamrepresenting the contents of the file @ if an I/O error occurred
-
toByteArrayInputStream
public static InputStream toByteArrayInputStream(File file)
This method returns anInputStreamwhich does not need to be closed, based onByteArrayInputStream.- Parameters:
file-Fileto read- Returns:
InputStreambased onByteArrayInputStream
-
toByteArray
public static byte[] toByteArray(File file)
FROM: Apache Reads the contents of a file into a byte array. The file is always closed.- Parameters:
file- the file to read, must not benull- Returns:
- the file contents, never
null
-
splitDocument
public static DSSDocument splitDocument(DSSDocument origin, int start, int end)
This method create a new document from a sub-part of another document- Parameters:
origin- the original documentstart- the start position to retrieveend- the end position to retrieve- Returns:
- a new DSSDocument
-
toByteArray
public static byte[] toByteArray(DSSDocument document)
Get the contents of anDSSDocumentas abyte[].- Parameters:
document- the document to read- Returns:
- the content as byte array
-
toByteArray
public static byte[] toByteArray(InputStream inputStream)
Get the contents of anInputStreamas abyte[].- Parameters:
inputStream- the inputstream to read- Returns:
- the content of the inputstream as byte array
-
toCMSSignedData
public static org.bouncycastle.cms.CMSSignedData toCMSSignedData(DSSDocument document)
Gets CMSSignedData from thedocumentbytes- Parameters:
document-DSSDocumentcontained CMSSignedData- Returns:
CMSSignedData
-
getFileByteSize
public static long getFileByteSize(DSSDocument dssDocument)
Returns byte size of the given document- Parameters:
dssDocument-DSSDocumentto get size for- Returns:
- long size of the given document
-
saveToFile
public static void saveToFile(byte[] bytes, File file)This method saves the given array ofbyteto the providedFile.- Parameters:
bytes- the binary to savefile- the file where to store
-
getDeterministicId
public static String getDeterministicId(Date signingTime, TokenIdentifier id)
Return a unique id for a date and the certificateToken id.- Parameters:
signingTime- the signing timeid- the token identifier- Returns:
- a unique string
-
getMD5Digest
public static String getMD5Digest(byte[] bytes)
Returns a Hex encoded of the MD5 digest of binaries- Parameters:
bytes- the bytes to be digested- Returns:
- the hex encoded MD5 digest
-
getX500PrincipalOrNull
public static X500Principal getX500PrincipalOrNull(String x500PrincipalString)
This method returns theX500Principalcorresponding to the given string ornullif the conversion is not possible.- Parameters:
x500PrincipalString- aStringrepresentation of theX500Principal- Returns:
X500Principalor null
-
x500PrincipalAreEquals
public static boolean x500PrincipalAreEquals(X500Principal firstX500Principal, X500Principal secondX500Principal)
This method compares twoX500Principals.X500Principal.CANONICALandX500Principal.RFC2253forms are compared.- Parameters:
firstX500Principal- the first X500Principal object to be comparedsecondX500Principal- the second X500Principal object to be compared- Returns:
- true if the two parameters contain the same key/values
-
getNormalizedX500Principal
public static X500Principal getNormalizedX500Principal(X500Principal x500Principal)
This method normalizes the X500Principal object- Parameters:
x500Principal- to be normalized- Returns:
X500Principalnormalized
-
getUtcDate
public static Date getUtcDate(int year, int month, int day)
This method returns an UTC date base on the year, the month and the day. The year must be encoded as 1978... and not 78- Parameters:
year- the value used to set the YEAR calendar field.month- the month. Month value is 0-based. e.g., 0 for January.day- the value used to set the DAY_OF_MONTH calendar field.- Returns:
- the UTC date base on parameters
-
printSecurityProviders
public static void printSecurityProviders()
This method lists all defined security providers.
-
readFirstByte
public static byte readFirstByte(DSSDocument dssDocument)
Reads the first byte from the DSSDocument- Parameters:
dssDocument- the document- Returns:
- the first byte
-
compareFirstBytes
public static boolean compareFirstBytes(DSSDocument dssDocument, byte[] byteArray)
Reads firstbyteArray.lengthbytes of thedssDocumentand compares them withbyteArray- Parameters:
dssDocument-DSSDocumentto read bytes frombyteArray-bytearray to compare the beginning string with- Returns:
- TRUE if the document starts from
byteArray, FALSE otherwise
-
concatenate
public static byte[] concatenate(byte[]... arrays)
Concatenates all the arrays into a new array. The new array contains all of the element of each array followed by all of the elements of the next array. When an array is returned, it is always a new array.- Parameters:
arrays-bytearrays to concatenate- Returns:
- the new
bytearray
-
skipAvailableBytes
public static long skipAvailableBytes(InputStream is, long n) throws IllegalStateException
Skip the definednnumber of bytes from theInputStreamand validates success of the operation- Parameters:
is-InputStreamto skip bytes fromn-longnumber bytes to skip- Returns:
- actual number of bytes have been skipped
- Throws:
IllegalStateException- in case ofInputStreamreading error
-
readAvailableBytes
public static long readAvailableBytes(DSSDocument dssDocument, byte[] b) throws IllegalStateException
Read the requested number of bytes fromDSSDocumentaccording to the size of the providedbyte[] buffer and validates success of the operation- Parameters:
dssDocument-DSSDocumentto read bytes fromb-byte[] buffer to fill- Returns:
- the total number of bytes read into buffer
- Throws:
IllegalStateException- in case ofInputStreamreading error
-
readAvailableBytes
public static long readAvailableBytes(InputStream is, byte[] b) throws IllegalStateException
Read the requested number of bytes fromInputStreamaccording to the size of the providedbyte[] buffer and validates success of the operation- Parameters:
is-InputStreamto read bytes fromb-byte[] buffer to fill- Returns:
- the total number of bytes read into buffer
- Throws:
IllegalStateException- in case ofInputStreamreading error
-
readAvailableBytes
public static long readAvailableBytes(InputStream is, byte[] b, int off, int len) throws IllegalStateException
Read the requested number of bytes fromInputStreamand validates success of the operation- Parameters:
is-InputStreamto read bytes fromb-byte[] buffer to filloff-intoffset in the destination arraylen-intnumber of bytes to read- Returns:
- the total number of bytes read into buffer
- Throws:
IllegalStateException- in case ofInputStreamreading error
-
-