Package eu.europa.esig.dss.jades
Class DSSJsonUtils
java.lang.Object
eu.europa.esig.dss.jades.DSSJsonUtils
public class DSSJsonUtils extends Object
Utility class for working with JSON objects
-
Field Summary
Fields Modifier and Type Field Description static String
CONTENT_ENCODING_BINARY
The binary content encoding (RFC 2045)static String
HTTP_HEADER_DIGEST
The HttpHeader defining the Digest value of a signed message bodystatic String
MIME_TYPE_APPLICATION_PREFIX
The MimeType application prefix -
Method Summary
Modifier and Type Method Description static boolean
areAllBase64UrlComponents(List<Object> components)
Checks if the all components are base64Url encodedstatic boolean
checkComponentsUnicity(List<Object> components)
Checks if all components have one type (strings or objects)static String
concatenate(String... strings)
Concatenates the given strings with a '.'static byte[]
concatenateDSSDocuments(List<DSSDocument> documents)
Concatenates document octets to a single byte arraystatic JAdESSignature
extractJAdESCounterSignature(EtsiUComponent cSigAttribute, JAdESSignature masterSignature)
Extracts a counter signature from 'cSig' value with respect to the found formatstatic byte[]
fromBase64Url(String base64UrlEncoded)
Returns the decoded binary for a base64url encoded stringstatic String
generateKid(CertificateToken signingCertificate)
Generates the 'kid' value as in IETF RFC 5035static byte[]
getAsciiBytes(String str)
Returns ASCII-encoded arraystatic Set<String>
getCriticalHeaderExceptions()
Returns set of critical header exceptions (see RFC 7515)static Date
getDate(String dateTimeString)
Parses a IETF RFC 3339 dateTime Stringstatic Digest
getDigest(Map<?,?> digestValueAndAlgo)
Creates aDigest
object from a JSON structurestatic List<Object>
getEtsiU(JWS jws)
This method returns the etsiU container with the unsigned properties or an empty Liststatic org.bouncycastle.asn1.x509.IssuerSerial
getIssuerSerial(String value)
Parses the 'kid' header value as in IETF RFC 5035static JsonObject
getOidObject(ObjectIdentifier objectIdentifier)
Creates an 'oid' LinkedJSONObject according to EN 119-182 ch. 5.4.1 The oId data typestatic JsonObject
getOidObject(String uri, String desc, String[] docRefs)
Creates an 'oid' JsonObject according to EN 119-182 ch. 5.4.1 The oId data typestatic Set<String>
getSupportedCriticalHeaders()
Returns set of supported critical headersstatic JsonObject
getTstContainer(List<TimestampBinary> timestampBinaries, String canonicalizationMethodUri)
Creates a 'tstContainer' JsonObject according to EN 119-182 ch. 5.4.3.3 The tstContainer typestatic List<EtsiUComponent>
getUnsignedPropertiesWithHeaderName(JAdESEtsiUHeader etsiUHeader, String headerName)
Returns a list of unsigned 'etsiU' properties matching theheaderName
from thejws
static boolean
isAllowedSignatureDocumentType(DSSDocument document)
Checks if the signature document has an allowed type (bytes can be extracted)static boolean
isBase64UrlEncoded(byte b)
Checks if the byte is Base64Url encodedstatic boolean
isBase64UrlEncoded(String str)
Checks if the provided string is base64Url encodedstatic boolean
isJsonDocument(DSSDocument document)
Checks if the provided document is JSON documentstatic boolean
isStringFormat(Object object)
Checks of the object is an instance of a String classstatic boolean
isUrlSafe(byte b)
Checks if the given byte is url safe See RFC 7797 : 5.2.static boolean
isUrlSafePayload(String payloadString)
Checks if the payload is JWS URL safe See RFC 7797 : 5.2.static Map<String,Object>
parseEtsiUComponent(Object etsiUComponent)
Parses 'etsiU' component as it is (base64url-encoded or JSON), and returns the resulting Mapstatic String
toBase64Url(byte[] binary)
Returns a base64Url encoded stringstatic String
toBase64Url(DSSDocument document)
Returns a base64Url encoded stringstatic String
toBase64Url(Object object)
Returns a base64Url encoded string from the provided JSON Object or JSON Arraystatic JWSJsonSerializationObject
toJWSJsonSerializationObject(JWS jws)
Converts theJWS
toJWSJsonSerializationObject
static JWSJsonSerializationObject
toJWSJsonSerializationObject(DSSDocument jadesDocument)
Converts theDSSDocument
toJWSJsonSerializationObject
, if not possible returns nullstatic List<String>
validateAgainstJAdESSchema(JWS jws)
ValidatesJWS
against a JAdES schema (ETSI TS 119 182-1)
-
Field Details
-
MIME_TYPE_APPLICATION_PREFIX
The MimeType application prefix- See Also:
- Constant Field Values
-
HTTP_HEADER_DIGEST
The HttpHeader defining the Digest value of a signed message body- See Also:
- Constant Field Values
-
CONTENT_ENCODING_BINARY
The binary content encoding (RFC 2045)- See Also:
- Constant Field Values
-
-
Method Details
-
getAsciiBytes
Returns ASCII-encoded array- Parameters:
str
-String
to encode to ASCII- Returns:
- byte array
-
toBase64Url
Returns a base64Url encoded string- Parameters:
binary
- a byte array to encode- Returns:
- base64Url encoded
String
-
toBase64Url
Returns a base64Url encoded string- Parameters:
document
-DSSDocument
to encode- Returns:
- base64Url encoded
String
-
toBase64Url
Returns a base64Url encoded string from the provided JSON Object or JSON Array- Parameters:
object
- JSON Object or JSON Array to encode- Returns:
- base64Url encoded
String
-
fromBase64Url
Returns the decoded binary for a base64url encoded string- Parameters:
base64UrlEncoded
- the tring to decoded- Returns:
- the decoded binary
-
isBase64UrlEncoded
Checks if the provided string is base64Url encoded- Parameters:
str
-String
to check- Returns:
- TRUE if the String is base64Url encoded, FALSE otherwise
-
isBase64UrlEncoded
public static boolean isBase64UrlEncoded(byte b)Checks if the byte is Base64Url encoded- Parameters:
b
- a byte to check- Returns:
- TRUE if the byte is Base64Url encoded, FALSE otherwise
-
isUrlSafePayload
Checks if the payload is JWS URL safe See RFC 7797 : 5.2. Unencoded JWS Compact Serialization Payload- Parameters:
payloadString
-String
representing a payload- Returns:
- TRUE if the payload is URL safe, FALSE otherwise
-
isUrlSafe
public static boolean isUrlSafe(byte b)Checks if the given byte is url safe See RFC 7797 : 5.2. Unencoded JWS Compact Serialization Payload- Parameters:
b
- a byte to check- Returns:
- TRUE if the byte is url-safe, FALSE otherwise
-
concatenate
Concatenates the given strings with a '.' (dot) between. Example: "xxx", "yyy", "zzz" to "xxx.yyy.zzz"- Parameters:
strings
- a list ofString
s to concatenate- Returns:
- a concatenation string result
-
getSupportedCriticalHeaders
Returns set of supported critical headers- Returns:
- set of supported critical header strings
-
getCriticalHeaderExceptions
Returns set of critical header exceptions (see RFC 7515)- Returns:
- set of critical header exception strings
-
getDigest
Creates aDigest
object from a JSON structure- Parameters:
digestValueAndAlgo
- a Map with digAlg and digVal values- Returns:
- an instance of Digest or null
-
getOidObject
Creates an 'oid' LinkedJSONObject according to EN 119-182 ch. 5.4.1 The oId data type- Parameters:
objectIdentifier
-ObjectIdentifier
to create an 'oid' from- Returns:
- 'oid'
JsonObject
-
getOidObject
Creates an 'oid' JsonObject according to EN 119-182 ch. 5.4.1 The oId data type- Parameters:
uri
-String
URI defining the object. The property is REQUIRED.desc
-String
the object description. The property is OPTIONAL.docRefs
- an array ofString
URIs containing any other additional information about the object. The property is OPTIONAL.- Returns:
- 'oid'
JsonObject
-
getTstContainer
public static JsonObject getTstContainer(List<TimestampBinary> timestampBinaries, String canonicalizationMethodUri)Creates a 'tstContainer' JsonObject according to EN 119-182 ch. 5.4.3.3 The tstContainer type- Parameters:
timestampBinaries
- a list ofTimestampBinary
s to incorporatecanonicalizationMethodUri
- a canonicalization method (OPTIONAL, e.g. shall not be present for content timestamps)- Returns:
- 'tstContainer'
JsonObject
-
concatenateDSSDocuments
Concatenates document octets to a single byte array- Parameters:
documents
- a list ofDSSDocument
s to concatenate- Returns:
- a byte array of document octets
-
isJsonDocument
Checks if the provided document is JSON document- Parameters:
document
-DSSDocument
to check- Returns:
- TRUE of the document is JSON, FALSE otherwise
-
isAllowedSignatureDocumentType
Checks if the signature document has an allowed type (bytes can be extracted)- Parameters:
document
-DSSDocument
to check- Returns:
- TRUE if the document is of an allowed signature type, FALSE otherwise
-
getEtsiU
This method returns the etsiU container with the unsigned properties or an empty List- Parameters:
jws
- the signature- Returns:
- etsiU content or an empty List
-
getUnsignedPropertiesWithHeaderName
public static List<EtsiUComponent> getUnsignedPropertiesWithHeaderName(JAdESEtsiUHeader etsiUHeader, String headerName)Returns a list of unsigned 'etsiU' properties matching theheaderName
from thejws
- Parameters:
etsiUHeader
-JAdESEtsiUHeader
to extract values fromheaderName
-String
name of the unsigned header- Returns:
- a list of
EtsiUComponent
s
-
getDate
Parses a IETF RFC 3339 dateTime String -
getIssuerSerial
Parses the 'kid' header value as in IETF RFC 5035- Parameters:
value
-String
IssuerSerial to parse- Returns:
IssuerSerial
-
generateKid
Generates the 'kid' value as in IETF RFC 5035- Parameters:
signingCertificate
-CertificateToken
representing the singing certificate- Returns:
String
'kid' header value
-
extractJAdESCounterSignature
public static JAdESSignature extractJAdESCounterSignature(EtsiUComponent cSigAttribute, JAdESSignature masterSignature)Extracts a counter signature from 'cSig' value with respect to the found format- Parameters:
cSigAttribute
- an attribute containing the 'cSig' elementmasterSignature
-JAdESSignature
the master signature- Returns:
JAdESSignature
-
validateAgainstJAdESSchema
ValidatesJWS
against a JAdES schema (ETSI TS 119 182-1) -
checkComponentsUnicity
Checks if all components have one type (strings or objects)- Parameters:
components
- a list of objects to check- Returns:
- TRUE if all components are uniform (strings or objects), FALSE otherwise
-
isStringFormat
Checks of the object is an instance of a String class- Parameters:
object
- to check- Returns:
- TRUE if the object is an instance of
String
class, FALSE otherwise
-
areAllBase64UrlComponents
Checks if the all components are base64Url encoded- Parameters:
components
- a list of components to check- Returns:
- TRUE if all of the components are base64Url encoded, FALSE otherwise
-
parseEtsiUComponent
Parses 'etsiU' component as it is (base64url-encoded or JSON), and returns the resulting Map- Parameters:
etsiUComponent
- object to parse (base64url-encoded or JSON)- Returns:
- map representing the object
-
toJWSJsonSerializationObject
Converts theJWS
toJWSJsonSerializationObject
- Parameters:
jws
-JWS
to convert- Returns:
JWSJsonSerializationObject
-
toJWSJsonSerializationObject
Converts theDSSDocument
toJWSJsonSerializationObject
, if not possible returns null- Parameters:
jadesDocument
- CompactDSSDocument
to convert- Returns:
JWSJsonSerializationObject
if able to convert, null otherwise
-