No Issue - Implement crypto.randomUUID

We already have code in the platform to generate random UUIDs. This simply exposes that functionality via the crypto.UUID function
This commit is contained in:
Basilisk-Dev 2023-10-25 13:39:53 -04:00 committed by roytam1
commit 9e6a0c089f
3 changed files with 27 additions and 0 deletions

View file

@ -115,6 +115,27 @@ Crypto::GetRandomValues(JSContext* aCx, const ArrayBufferView& aArray,
aRetval.set(view);
}
void Crypto::RandomUUID(nsAString& aRetVal)
{
// NSID_LENGTH == 39 == 36 UUID chars + 2 curly braces + 1 NUL byte
static_assert(NSID_LENGTH == 39);
nsCOMPtr<nsIUUIDGenerator> uuidgen =
do_GetService("@mozilla.org/uuid-generator;1");
nsID uuid;
nsresult rv = uuidgen->GenerateUUIDInPlace(&uuid);
char uuidBuffer[NSID_LENGTH];
uuid.ToProvidedString(uuidBuffer);
nsCString asciiString(uuidBuffer);
// Convert UUID chars to UTF-16 retval, omitting the curly braces and NUL
CopyASCIItoUTF16(Substring(asciiString, 1, NSID_LENGTH - 3), aRetVal);
}
SubtleCrypto*
Crypto::Subtle()
{