@shi-corp/objectid-converter
Version:
Converts Microsoft Object IDs to and from SIDs.
21 lines (20 loc) • 864 B
JavaScript
import { stringify } from 'uuid';
export function convertToObjectId(sid) {
if (typeof sid !== 'string') {
throw new Error('The provided sid is not a string!');
}
else if (!sid.match(/^S-1-12-1-\d{8,10}-\d{8,10}-\d{8,10}-\d{8,10}$/gum)) {
throw new Error('The provided SID is not an Entra ID SID!');
}
const splitSid = sid.
replace(/^S-1-12-1-/gum, '').
split('-').
map((element) => parseInt(element, 10));
const sidBuffer = new Uint8Array(new Uint32Array(splitSid).buffer);
[sidBuffer[0], sidBuffer[3]] = [sidBuffer[3], sidBuffer[0]];
[sidBuffer[1], sidBuffer[2]] = [sidBuffer[2], sidBuffer[1]];
[sidBuffer[5], sidBuffer[4]] = [sidBuffer[4], sidBuffer[5]];
[sidBuffer[7], sidBuffer[6]] = [sidBuffer[6], sidBuffer[7]];
const objectId = stringify(sidBuffer);
return objectId;
}