14d6c458bSopenharmony_ci/* 24d6c458bSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 34d6c458bSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44d6c458bSopenharmony_ci * you may not use this file except in compliance with the License. 54d6c458bSopenharmony_ci * You may obtain a copy of the License at 64d6c458bSopenharmony_ci * 74d6c458bSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84d6c458bSopenharmony_ci * 94d6c458bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104d6c458bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114d6c458bSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124d6c458bSopenharmony_ci * See the License for the specific language governing permissions and 134d6c458bSopenharmony_ci * limitations under the License. 144d6c458bSopenharmony_ci */ 154d6c458bSopenharmony_ci 164d6c458bSopenharmony_ci#ifndef UTIL_JS_UUID_H 174d6c458bSopenharmony_ci#define UTIL_JS_UUID_H 184d6c458bSopenharmony_ci 194d6c458bSopenharmony_ci#include <cstring> 204d6c458bSopenharmony_ci#include <iostream> 214d6c458bSopenharmony_ci#include <iomanip> 224d6c458bSopenharmony_ci#include <openssl/rand.h> 234d6c458bSopenharmony_ci#include <queue> 244d6c458bSopenharmony_ci#ifdef IOS_PLATFORM 254d6c458bSopenharmony_ci#include <sys/sysctl.h> 264d6c458bSopenharmony_ci#else 274d6c458bSopenharmony_ci#include <sys/sysinfo.h> 284d6c458bSopenharmony_ci#endif 294d6c458bSopenharmony_ci#include <unistd.h> 304d6c458bSopenharmony_ci 314d6c458bSopenharmony_ci#include "napi/native_api.h" 324d6c458bSopenharmony_ci#include "napi/native_node_api.h" 334d6c458bSopenharmony_ci 344d6c458bSopenharmony_cinamespace OHOS::Util { 354d6c458bSopenharmony_ciconstexpr const int UUID_SIZE = 16; 364d6c458bSopenharmony_cistruct UUID { 374d6c458bSopenharmony_ci unsigned char elements[UUID_SIZE] = {0}; 384d6c458bSopenharmony_ci}; 394d6c458bSopenharmony_ci 404d6c458bSopenharmony_cienum ConvertFlags { 414d6c458bSopenharmony_ci HEX_ZERO_FLG = 0x0, 424d6c458bSopenharmony_ci HEX_ONE_FLG = 0x1, 434d6c458bSopenharmony_ci HEX_TWO_FLG = 0x2, 444d6c458bSopenharmony_ci HEX_THREE_FLG = 0x3, 454d6c458bSopenharmony_ci HEX_FOUR_FLG = 0x4, 464d6c458bSopenharmony_ci HEX_FIVE_FLG = 0x5, 474d6c458bSopenharmony_ci HEX_SIX_FLG = 0x6, 484d6c458bSopenharmony_ci HEX_SEVEN_FLG = 0x7, 494d6c458bSopenharmony_ci HEX_EIGHT_FLG = 0x8, 504d6c458bSopenharmony_ci HEX_NINE_FLG = 0x9, 514d6c458bSopenharmony_ci HEX_TEN_FLG = 0xA, 524d6c458bSopenharmony_ci HEX_ELEVEN_FLG = 0xB, 534d6c458bSopenharmony_ci HEX_TWELVE_FLG = 0xC, 544d6c458bSopenharmony_ci HEX_THIRTEEN_FLG = 0xD, 554d6c458bSopenharmony_ci HEX_FOURTEEN_FLG = 0xE, 564d6c458bSopenharmony_ci HEX_FIFTEEN_FLG = 0xF, 574d6c458bSopenharmony_ci HEX_SIXTEEN_FLG = 0X10, 584d6c458bSopenharmony_ci MAX_CACHE_MASK = 128, 594d6c458bSopenharmony_ci}; 604d6c458bSopenharmony_ci 614d6c458bSopenharmony_cinapi_value DoParseUUID(napi_env env, napi_value src); 624d6c458bSopenharmony_cinapi_value GetBinaryUUID(napi_env env, bool entropyCache); 634d6c458bSopenharmony_cistd::string GetStringUUID(napi_env env, bool entropyCache); 644d6c458bSopenharmony_cibool GenerateUUID(unsigned char *data, int32_t size); 654d6c458bSopenharmony_civoid ProcessUUID(unsigned char *data); 664d6c458bSopenharmony_cibool GetBufferedUUID(napi_env env, UUID &uuid); 674d6c458bSopenharmony_cibool GetUnBufferedUUID(napi_env env, UUID &uuid); 684d6c458bSopenharmony_cibool GetUUID(napi_env env, bool entropyCache, UUID &uuid); 694d6c458bSopenharmony_cistd::string GetFormatUUID(const UUID &uuid); 704d6c458bSopenharmony_ciunsigned char CharToHex(char in); 714d6c458bSopenharmony_ciunsigned char ConvertBits(std::string &input); 724d6c458bSopenharmony_ciunsigned char HexToChar(unsigned char in); 734d6c458bSopenharmony_ci} 744d6c458bSopenharmony_ci#endif // UTIL_JS_UUID_H 75