/* * Copyright (C) 2015, Matthias Sohn and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.lfs.lib; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.MessageFormat; import org.eclipse.jgit.lfs.internal.LfsText; /** * Misc. constants used throughout JGit LFS extension. * * @since 4.3 */ @SuppressWarnings("nls") public final class Constants { /** * lfs folder/section/filter name * * @since 4.6 */ public static final String LFS = "lfs"; /** * Hash function used natively by Git LFS extension for large objects. * * @since 4.6 */ public static final String LONG_HASH_FUNCTION = "SHA-256"; /** * A Git LFS large object hash is 256 bits, i.e. 32 bytes. *

* Changing this assumption is not going to be as easy as changing this * declaration. */ public static final int LONG_OBJECT_ID_LENGTH = 32; /** * A Git LFS large object can be expressed as a 64 character string of * hexadecimal digits. * * @see #LONG_OBJECT_ID_LENGTH */ public static final int LONG_OBJECT_ID_STRING_LENGTH = LONG_OBJECT_ID_LENGTH * 2; /** * LFS upload operation. * * @since 4.7 */ public static final String UPLOAD = "upload"; /** * LFS download operation. * * @since 4.7 */ public static final String DOWNLOAD = "download"; /** * LFS verify operation. * * @since 4.7 */ public static final String VERIFY = "verify"; /** * Prefix for all LFS related filters. * * @since 4.11 */ public static final String ATTR_FILTER_DRIVER_PREFIX = "lfs/"; /** * Create a new digest function for objects. * * @return a new digest object. * @throws java.lang.RuntimeException * this Java virtual machine does not support the required hash * function. Very unlikely given that JGit uses a hash function * that is in the Java reference specification. */ public static MessageDigest newMessageDigest() { try { return MessageDigest.getInstance(LONG_HASH_FUNCTION); } catch (NoSuchAlgorithmException nsae) { throw new RuntimeException(MessageFormat.format( LfsText.get().requiredHashFunctionNotAvailable, LONG_HASH_FUNCTION), nsae); } } static { if (LONG_OBJECT_ID_LENGTH != newMessageDigest().getDigestLength()) throw new LinkageError( LfsText.get().incorrectLONG_OBJECT_ID_LENGTH); } /** * Content type used by LFS REST API as defined in * https://github.com/github/git-lfs/blob/master/docs/api/v1/http-v1-batch.md */ public static final String CONTENT_TYPE_GIT_LFS_JSON = "application/vnd.git-lfs+json"; /** * "Arbitrary binary data" as defined in * RFC 2046 */ public static final String HDR_APPLICATION_OCTET_STREAM = "application/octet-stream"; }