| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011 The Native Client Authors. All rights reserved. | 2 * Copyright (c) 2011 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
| 4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 /* | 7 /* |
| 8 * NaCl Service Runtime. Secure RNG abstraction. | 8 * NaCl Service Runtime. Secure RNG abstraction. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 } | 48 } |
| 49 | 49 |
| 50 uint32_t NaClGlobalSecureRngUint32(void) { | 50 uint32_t NaClGlobalSecureRngUint32(void) { |
| 51 uint32_t rv; | 51 uint32_t rv; |
| 52 NaClXMutexLock(&nacl_global_rng_mu); | 52 NaClXMutexLock(&nacl_global_rng_mu); |
| 53 rv = (*nacl_grngp->base.vtbl->GenUint32)(&nacl_grngp->base); | 53 rv = (*nacl_grngp->base.vtbl->GenUint32)(&nacl_grngp->base); |
| 54 NaClXMutexUnlock(&nacl_global_rng_mu); | 54 NaClXMutexUnlock(&nacl_global_rng_mu); |
| 55 return rv; | 55 return rv; |
| 56 } | 56 } |
| 57 | 57 |
| 58 void NaClGlobalSecureRngGenerateBytes(uint8_t *buf, size_t buf_size) { |
| 59 NaClXMutexLock(&nacl_global_rng_mu); |
| 60 (*nacl_grngp->base.vtbl->GenBytes)(&nacl_grngp->base, buf, buf_size); |
| 61 NaClXMutexUnlock(&nacl_global_rng_mu); |
| 62 } |
| 63 |
| 58 void NaClGenerateRandomPath(char *path, int length) { | 64 void NaClGenerateRandomPath(char *path, int length) { |
| 59 /* | 65 /* |
| 60 * This function is used for generating random paths and names, | 66 * This function is used for generating random paths and names, |
| 61 * e.g. for IMC sockets and semaphores. | 67 * e.g. for IMC sockets and semaphores. |
| 62 * | 68 * |
| 63 * IMC sockets note: the IMC header file omits some important | 69 * IMC sockets note: the IMC header file omits some important |
| 64 * details. The alphabet cannot include backslash for Windows. For | 70 * details. The alphabet cannot include backslash for Windows. For |
| 65 * Linux, it uses the abstract namespace (see unix(7)), and can | 71 * Linux, it uses the abstract namespace (see unix(7)), and can |
| 66 * contain arbitrary characters. The limitations for OSX are the | 72 * contain arbitrary characters. The limitations for OSX are the |
| 67 * same as for pathname components, since the IMC library uses | 73 * same as for pathname components, since the IMC library uses |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 | 123 |
| 118 int i; | 124 int i; |
| 119 int r; | 125 int r; |
| 120 | 126 |
| 121 for (i = 0; i < length-1; ++i) { | 127 for (i = 0; i < length-1; ++i) { |
| 122 r = NaClGlobalSecureRngUniform(alphabet_size); | 128 r = NaClGlobalSecureRngUniform(alphabet_size); |
| 123 path[i] = alphabet[r]; | 129 path[i] = alphabet[r]; |
| 124 } | 130 } |
| 125 path[length-1] = '\0'; | 131 path[length-1] = '\0'; |
| 126 } | 132 } |
| OLD | NEW |