ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/catalina/tribes/util/UUIDGenerator.java

Path
ttomcat-1778514358873.zip-extract/apache-tomcat-11.0.18-src/java/org/apache/catalina/tribes/util/UUIDGenerator.java
Status
scanned
Type
file
Name
UUIDGenerator.java
Extension
.java
Programming language
Java
Mime type
text/plain
File type
ASCII text, with CRLF line terminators
Tag

      
    
Rootfs path

      
    
Size
3546 (3.5 KB)
MD5
bf1686b25cf0432d2c736d5e3549a2ee
SHA1
ffb128cd28bc29a0b571da3b93213e0abb8893b7
SHA256
e99f7852e127b67f88abc6baac6727ca8d5b7742006daa2fd30714e9001fd4c9
SHA512

      
    
SHA1_git
4e0fc3818392a3c54ec5289de4259e60b4772a02
Is binary

      
    
Is text
True
Is archive

      
    
Is media

      
    
Is legal

      
    
Is manifest

      
    
Is readme

      
    
Is top level

      
    
Is key file

      
    
UUIDGenerator.java | 3.5 KB |

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.catalina.tribes.util; import java.security.SecureRandom; import java.util.Random; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; /** * Smple generation of a UUID. */ public class UUIDGenerator { private static final Log log = LogFactory.getLog(UUIDGenerator.class); protected static final StringManager sm = StringManager.getManager("org.apache.catalina.tribes.util"); public static final int UUID_LENGTH = 16; public static final int UUID_VERSION = 4; public static final int BYTES_PER_INT = 4; public static final int BITS_PER_BYTE = 8; protected static final SecureRandom secrand; protected static final Random rand = new Random(); static { long start = System.currentTimeMillis(); secrand = new SecureRandom(); // seed the generator secrand.nextInt(); long time = System.currentTimeMillis() - start; if (time > 100) { log.info(sm.getString("uuidGenerator.createRandom", secrand.getAlgorithm(), Long.valueOf(time))); } } public static byte[] randomUUID(boolean secure) { byte[] result = new byte[UUID_LENGTH]; return randomUUID(secure, result, 0); } public static byte[] randomUUID(boolean secure, byte[] into, int offset) { if ((offset + UUID_LENGTH) > into.length) { throw new ArrayIndexOutOfBoundsException( sm.getString("uuidGenerator.unable.fit", Integer.toString(UUID_LENGTH), Integer.toString(into.length), Integer.toString(offset + UUID_LENGTH))); } Random r = (secure && (secrand != null)) ? secrand : rand; nextBytes(into, offset, UUID_LENGTH, r); into[6 + offset] &= 0x0F; into[6 + offset] |= (UUID_VERSION << 4); into[8 + offset] &= 0x3F; // 0011 1111 into[8 + offset] |= (byte) 0x80; // 1000 0000 return into; } /** * Same as java.util.Random.nextBytes except this one we don't have to allocate a new byte array * * @param into byte[] * @param offset int * @param length int * @param r Random */ public static void nextBytes(byte[] into, int offset, int length, Random r) { int numGot = 0, rnd = 0; while (true) { for (int i = 0; i < BYTES_PER_INT; i++) { if (numGot == length) { return; } rnd = (i == 0 ? r.nextInt() : rnd >> BITS_PER_BYTE); into[offset + numGot] = (byte) rnd; numGot++; } } } }
Detected license expression
apache-2.0
Detected license expression (SPDX)
Apache-2.0
Percentage of license text
28.74
Copyrights

      
    
Holders

      
    
Authors

      
    
License detections License expression License expression SPDX
apache_2_0-4bde3f57-78aa-4201-96bf-531cba09e7de apache-2.0 Apache-2.0
URL Start line End line
http://www.apache.org/licenses/LICENSE-2.0 9 9