Class JwtFormat


  • public final class JwtFormat
    extends java.lang.Object
    Helper functions to format JWT objects
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  JwtFormat.Parts
      Encodes the parts of a JWT.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.String createHeader​(java.lang.String algorithm, java.util.Optional<java.lang.String> typeHeader, java.util.Optional<java.lang.String> kid)  
      static java.lang.String createSignedCompact​(java.lang.String unsignedCompact, byte[] signature)  
      static java.lang.String createUnsignedCompact​(java.lang.String algorithm, java.util.Optional<java.lang.String> kid, RawJwt rawJwt)  
      static java.lang.String decodeHeader​(java.lang.String headerStr)  
      static java.lang.String decodePayload​(java.lang.String payloadStr)  
      static byte[] decodeSignature​(java.lang.String signatureStr)  
      static java.lang.String encodePayload​(java.lang.String jsonPayload)  
      static java.lang.String encodeSignature​(byte[] signature)  
      static java.util.Optional<java.lang.Integer> getKeyId​(java.lang.String kid)  
      static java.util.Optional<java.lang.String> getKid​(int keyId, com.google.crypto.tink.proto.OutputPrefixType prefix)  
      static java.lang.String getStringHeader​(com.google.gson.JsonObject header, java.lang.String name)  
      static java.util.Optional<java.lang.String> getTypeHeader​(com.google.gson.JsonObject header)  
      static boolean isValidUrlsafeBase64Char​(char c)  
      static JwtFormat.Parts splitSignedCompact​(java.lang.String signedCompact)  
      static byte[] strictUrlSafeDecode​(java.lang.String encodedData)  
      static void validateASCII​(java.lang.String data)  
      static void validateHeader​(com.google.gson.JsonObject parsedHeader, java.lang.String algorithmFromKey, java.util.Optional<java.lang.String> kidFromKey, boolean allowKidAbsent)  
      static void validateHeader​(java.lang.String expectedAlgorithm, java.util.Optional<java.lang.String> tinkKid, java.util.Optional<java.lang.String> customKid, com.google.gson.JsonObject parsedHeader)
      Validates the parsed header.
      static void validateUtf8​(byte[] data)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • isValidUrlsafeBase64Char

        public static boolean isValidUrlsafeBase64Char​(char c)
      • createHeader

        public static java.lang.String createHeader​(java.lang.String algorithm,
                                                    java.util.Optional<java.lang.String> typeHeader,
                                                    java.util.Optional<java.lang.String> kid)
                                             throws java.security.InvalidAlgorithmParameterException
        Throws:
        java.security.InvalidAlgorithmParameterException
      • validateHeader

        public static void validateHeader​(com.google.gson.JsonObject parsedHeader,
                                          java.lang.String algorithmFromKey,
                                          java.util.Optional<java.lang.String> kidFromKey,
                                          boolean allowKidAbsent)
                                   throws java.security.GeneralSecurityException
        Throws:
        java.security.GeneralSecurityException
      • validateHeader

        public static void validateHeader​(java.lang.String expectedAlgorithm,
                                          java.util.Optional<java.lang.String> tinkKid,
                                          java.util.Optional<java.lang.String> customKid,
                                          com.google.gson.JsonObject parsedHeader)
                                   throws java.security.InvalidAlgorithmParameterException,
                                          JwtInvalidException
        Validates the parsed header.

        tinkKid should only be set for keys with output prefix type TINK. customKid should only be set for keys with output prefix type RAW. They should not be set at the same time.

        Throws:
        java.security.InvalidAlgorithmParameterException
        JwtInvalidException
      • encodePayload

        public static java.lang.String encodePayload​(java.lang.String jsonPayload)
      • encodeSignature

        public static java.lang.String encodeSignature​(byte[] signature)
      • getKid

        public static java.util.Optional<java.lang.String> getKid​(int keyId,
                                                                  com.google.crypto.tink.proto.OutputPrefixType prefix)
                                                           throws JwtInvalidException
        Throws:
        JwtInvalidException
      • getKeyId

        public static java.util.Optional<java.lang.Integer> getKeyId​(java.lang.String kid)
      • createUnsignedCompact

        public static java.lang.String createUnsignedCompact​(java.lang.String algorithm,
                                                             java.util.Optional<java.lang.String> kid,
                                                             RawJwt rawJwt)
                                                      throws java.security.InvalidAlgorithmParameterException,
                                                             JwtInvalidException
        Throws:
        java.security.InvalidAlgorithmParameterException
        JwtInvalidException
      • createSignedCompact

        public static java.lang.String createSignedCompact​(java.lang.String unsignedCompact,
                                                           byte[] signature)