code: public byte[] sign(final byte version, final Instant timestamp, final IvParameterSpec initializationVector,
              final byte[] cipherText) {
          try (ByteArrayOutputStream byteStream = new ByteArrayOutputStream(
                  getTokenPrefixBytes() + cipherText.length)) {
              return sign(version, timestamp, initializationVector, cipherText, byteStream);
          } catch (final IOException e) {
              // this should not happen as I/O is to memory only
              throw new IllegalStateException(e.getMessage(), e);
          }
      }
docs: Generate an HMAC SHA-256 signature from the components of a Fernet token.
  
  @param version
  the Fernet version number
  @param timestamp
  the seconds after the epoch that the token was generated
  @param initializationVector
  the encryption and decryption initialization vector
  @param cipherText
  the encrypted content of the token
  @return the HMAC signature