/* * Copyright (C) 2022, 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.util.sha1; import java.security.MessageDigest; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.MutableObjectId; import org.eclipse.jgit.lib.ObjectId; /** * SHA1 implementation using native implementation from JDK. It doesn't support * collision detection but is faster than the pure Java implementation. */ class SHA1Native extends SHA1 { private final MessageDigest md; SHA1Native() { md = Constants.newMessageDigest(); } @Override public void update(byte b) { md.update(b); } @Override public void update(byte[] in) { md.update(in); } @Override public void update(byte[] in, int p, int len) { md.update(in, p, len); } @Override public byte[] digest() throws Sha1CollisionException { return md.digest(); } @Override public ObjectId toObjectId() throws Sha1CollisionException { return ObjectId.fromRaw(md.digest()); } @Override public void digest(MutableObjectId id) throws Sha1CollisionException { id.fromRaw(md.digest()); } @Override public SHA1 reset() { md.reset(); return this; } @Override public SHA1 setDetectCollision(boolean detect) { return this; } @Override public boolean hasCollision() { return false; } }