1f290793bc65b8483332ac8b568962395c4a63927Zonr Chang/* 2f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * Copyright 2012, The Android Open Source Project 3f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * 4f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * Licensed under the Apache License, Version 2.0 (the "License"); 5f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * you may not use this file except in compliance with the License. 6f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * You may obtain a copy of the License at 7f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * 8f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * http://www.apache.org/licenses/LICENSE-2.0 9f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * 10f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * Unless required by applicable law or agreed to in writing, software 11f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * distributed under the License is distributed on an "AS IS" BASIS, 12f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * See the License for the specific language governing permissions and 14f290793bc65b8483332ac8b568962395c4a63927Zonr Chang * limitations under the License. 15f290793bc65b8483332ac8b568962395c4a63927Zonr Chang */ 16f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 17f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#ifndef BCC_SUPPORT_SHA1_UTIL_H 18f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#define BCC_SUPPORT_SHA1_UTIL_H 19f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 20f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#include <stdint.h> 21f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 22f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#include <cstddef> 23f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 24f290793bc65b8483332ac8b568962395c4a63927Zonr Chang// This guard prevents system sha1.h (such as the one in bionic) has been 25f290793bc65b8483332ac8b568962395c4a63927Zonr Chang// included before this header. 26f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#ifndef SHA1_DIGEST_LENGTH 27f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#define SHA1_DIGEST_LENGTH 20 28f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#endif 29f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 30f290793bc65b8483332ac8b568962395c4a63927Zonr Changnamespace bcc { 31f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 32f290793bc65b8483332ac8b568962395c4a63927Zonr Changclass Sha1Util { 33f290793bc65b8483332ac8b568962395c4a63927Zonr Changprivate: 34f290793bc65b8483332ac8b568962395c4a63927Zonr Chang Sha1Util(); // DISABLED. 35f290793bc65b8483332ac8b568962395c4a63927Zonr Chang Sha1Util(Sha1Util &); // DISABLED. 36f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 37f290793bc65b8483332ac8b568962395c4a63927Zonr Changpublic: 38f290793bc65b8483332ac8b568962395c4a63927Zonr Chang // Return true on success. 39f290793bc65b8483332ac8b568962395c4a63927Zonr Chang static bool GetSHA1DigestFromFile(uint8_t pResult[SHA1_DIGEST_LENGTH], 40f290793bc65b8483332ac8b568962395c4a63927Zonr Chang const char *pFilename); 41f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 42f290793bc65b8483332ac8b568962395c4a63927Zonr Chang // Return true on success. 43f290793bc65b8483332ac8b568962395c4a63927Zonr Chang static bool GetSHA1DigestFromBuffer(uint8_t pResult[SHA1_DIGEST_LENGTH], 44f290793bc65b8483332ac8b568962395c4a63927Zonr Chang const uint8_t *pData, size_t pSize); 45f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 46f290793bc65b8483332ac8b568962395c4a63927Zonr Chang // Useful function when passing buffer of type "const char *." 47f290793bc65b8483332ac8b568962395c4a63927Zonr Chang static bool GetSHA1DigestFromBuffer(uint8_t pResult[SHA1_DIGEST_LENGTH], 48f290793bc65b8483332ac8b568962395c4a63927Zonr Chang const char *pData, size_t pSize) { 49f290793bc65b8483332ac8b568962395c4a63927Zonr Chang return GetSHA1DigestFromBuffer(pResult, 50f290793bc65b8483332ac8b568962395c4a63927Zonr Chang reinterpret_cast<const uint8_t*>(pData), 51f290793bc65b8483332ac8b568962395c4a63927Zonr Chang pSize); 52f290793bc65b8483332ac8b568962395c4a63927Zonr Chang } 53f290793bc65b8483332ac8b568962395c4a63927Zonr Chang}; 54f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 55f290793bc65b8483332ac8b568962395c4a63927Zonr Chang} // end namespace bcc 56f290793bc65b8483332ac8b568962395c4a63927Zonr Chang 57f290793bc65b8483332ac8b568962395c4a63927Zonr Chang#endif // BCC_SUPPORT_SHA1_UTIL_H 58