Class JoseUtils

java.lang.Object
org.shredzone.acme4j.toolbox.JoseUtils

public final class JoseUtils extends Object
Utility class that takes care of all the JOSE stuff.
Since:
2.7
  • Method Details

    • createJoseRequest

      public static JSONBuilder createJoseRequest(URL url, KeyPair keypair, @Nullable JSONBuilder payload, @Nullable String nonce, @Nullable String kid)
      Creates an ACME JOSE request.
      Parameters:
      url - URL of the ACME call
      keypair - KeyPair to sign the request with
      payload - ACME JSON payload. If null, a POST-as-GET request is generated instead.
      nonce - Nonce to be used. null if no nonce is to be used in the JOSE header.
      kid - kid to be used in the JOSE header. If null, a jwk header of the given key is used instead.
      Returns:
      JSON structure of the JOSE request, ready to be sent.
    • createExternalAccountBinding

      public static Map<String,Object> createExternalAccountBinding(String kid, PublicKey accountKey, SecretKey macKey, URL resource)
      Creates a JSON structure for external account binding.
      Parameters:
      kid - Key Identifier provided by the CA
      accountKey - PublicKey of the account to register
      macKey - SecretKey to sign the key identifier with
      resource - "newAccount" resource URL
      Returns:
      Created JSON structure
    • publicKeyToJWK

      public static Map<String,Object> publicKeyToJWK(PublicKey key)
      Converts a PublicKey to a JOSE JWK structure.
      Parameters:
      key - PublicKey to convert
      Returns:
      JSON map containing the JWK structure
    • jwkToPublicKey

      public static PublicKey jwkToPublicKey(Map<String,Object> jwk)
      Converts a JOSE JWK structure to a PublicKey.
      Parameters:
      jwk - Map containing a JWK structure
      Returns:
      the extracted PublicKey
    • thumbprint

      public static byte[] thumbprint(PublicKey key)
      Computes a thumbprint of the given public key.
      Parameters:
      key - PublicKey to get the thumbprint of
      Returns:
      Thumbprint of the key
    • keyAlgorithm

      public static String keyAlgorithm(org.jose4j.jwk.JsonWebKey jwk)
      Analyzes the key used in the JsonWebKey, and returns the key algorithm identifier for JsonWebSignature.
      Parameters:
      jwk - JsonWebKey to analyze
      Returns:
      algorithm identifier
      Throws:
      IllegalArgumentException - there is no corresponding algorithm identifier for the key
    • macKeyAlgorithm

      public static String macKeyAlgorithm(SecretKey macKey)
      Analyzes the SecretKey, and returns the key algorithm identifier for JsonWebSignature.
      Parameters:
      macKey - SecretKey to analyze
      Returns:
      algorithm identifier
      Throws:
      IllegalArgumentException - there is no corresponding algorithm identifier for the key