New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

uuidv5

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

uuidv5 - npm Package Compare versions

Comparing version 0.0.0 to 0.0.1

4

package.json
{
"name": "uuidv5",
"version": "0.0.0",
"version": "0.0.1",
"description": "Generates named version 5 UUIDs",

@@ -26,4 +26,4 @@ "main": "uuid.js",

"devDependencies": {
"mocha": "^1.21.4"
"mocha": "3.1.2"
}
}

@@ -10,3 +10,3 @@ # UUIDv5

`var createUUIDv5 = require('uuidv5');`
`var uuidv5 = require('uuidv5');`

@@ -18,13 +18,13 @@ If you are unfamiliar with v5 UUIDs, read [this](http://en.wikipedia.org/wiki/Universally_unique_identifier#Version_5_.28SHA-1_hash.29). For a deeper look, read [RFC 4122](http://tools.ietf.org/html/rfc4122).

### createUUIDv5(namespace, name, [raw_output])
### uuidv5(namespace, name, [raw_output])
* `namespace` can be 'url', 'dns', 'oid', or 'x500'. If it's none of those, it must be a UUID to use as a namespace, either in string or Buffer form.
* `namespace` can be 'url', 'dns', 'oid', 'x500', or 'null'. If it's none of those, it must be a UUID to use as a namespace, either in string or Buffer form.
* `name` can be a string or Buffer. What it should contain is namespace-dependent.
* `raw_output` is an optional flag. If set to `true`, the UUID will be returned as a Buffer instead of as a string.
### createUUIDv5.uuidToString(uuid)
### uuidv5.uuidToString(uuid)
Takes a Buffer-form uuid and returns it as a string.
### createUUIDv5.uuidFromString(uuidStr)
### uuidv5.uuidFromString(uuidStr)

@@ -37,13 +37,13 @@ Takes a UUID as a string (with or without dashes [-]) and returns it as a Buffer.

```javascript
var createUUIDv5 = require('uuidv5');
var uuidv5 = require('uuidv5');
// Generate a UUID in the default URL namespace
var urlUUID = createUUIDv5('url', 'http://google.com/page');
var urlUUID = uuidv5('url', 'http://google.com/page');
// Default DNS namespace
var dnsUUID = createUUIDv5('dns', 'google.com');
var dnsUUID = uuidv5('dns', 'google.com');
// Create your own namespace
var privns = createUUIDv5('null', 'my-private-namespace', true); // Buffer form is more efficient
var privUUID = createUUIDv5(privns, 'some-named-thing');
var privns = uuidv5('null', 'my-private-namespace', true); // Buffer form is more efficient
var privUUID = uuidv5(privns, 'some-named-thing');
```

@@ -1,14 +0,26 @@

var assert = require('assert');
var uuidv5 = require('./uuid');
const assert = require('assert');
const uuidv5 = require('./uuid');
describe('UUIDv5', function() {
it('makes DNS uuids', function() {
var r = uuidv5('dns', 'www.example.org');
describe('UUIDv5', () => {
it('converts strings to uuids', () => {
const bin = uuidv5.uuidFromString('74738ff5-5367-5958-9aee-98fffdcd1876');
assert(bin.equals(Buffer.from('74738ff5536759589aee98fffdcd1876', 'hex')));
});
it('converts uuids to strings', () => {
const str = uuidv5.uuidToString(uuidv5.uuidFromString('74738ff5-5367-5958-9aee-98fffdcd1876'));
assert.equal(str, '74738ff5-5367-5958-9aee-98fffdcd1876');
});
it('makes DNS uuids', () => {
const r = uuidv5('dns', 'www.example.org');
assert.equal(r, '74738ff5-5367-5958-9aee-98fffdcd1876');
});
it('makes URL uuids', function() {
var r = uuidv5('url', 'http://example.org/page');
it('makes URL uuids', () => {
const r = uuidv5('url', 'http://example.org/page');

@@ -18,4 +30,4 @@ assert.equal(r, '6b19973b-8154-5782-bca0-15e6b730ca00');

it('makes OID uuids', function() {
var r = uuidv5('oid', '1.3.6.1.2.1');
it('makes OID uuids', () => {
const r = uuidv5('oid', '1.3.6.1.2.1');

@@ -25,7 +37,14 @@ assert.equal(r, '2a7086de-bbf9-5cb9-9a66-a9e928c26504');

it('makes X.500 uuids', function() {
var r = uuidv5('oid', 'uid=user,ou=people,dc=example,dc=com');
it('makes X.500 uuids', () => {
const r = uuidv5('oid', 'uid=user,ou=people,dc=example,dc=com');
assert.equal(r, '075749ab-61eb-54ec-807d-863ebd6f271a');
});
it('can return a Buffer', () => {
const r = uuidv5('url', 'http://example.org/page', true);
const compare = uuidv5.uuidFromString('6b19973b-8154-5782-bca0-15e6b730ca00');
assert.deepEqual(r.toJSON(), compare.toJSON());
});
});

@@ -1,16 +0,16 @@

var crypto = require('crypto');
const crypto = require('crypto');
var NAMESPACE_DNS = uuidFromString('6ba7b810-9dad-11d1-80b4-00c04fd430c8');
var NAMESPACE_URL = uuidFromString('6ba7b811-9dad-11d1-80b4-00c04fd430c8');
var NAMESPACE_OID = uuidFromString('6ba7b812-9dad-11d1-80b4-00c04fd430c8');
var NAMESPACE_X500 = uuidFromString('6ba7b814-9dad-11d1-80b4-00c04fd430c8');
var NAMESPACE_NULL = uuidFromString('00000000-0000-0000-0000-000000000000');
const NAMESPACE_DNS = uuidFromString('6ba7b810-9dad-11d1-80b4-00c04fd430c8');
const NAMESPACE_URL = uuidFromString('6ba7b811-9dad-11d1-80b4-00c04fd430c8');
const NAMESPACE_OID = uuidFromString('6ba7b812-9dad-11d1-80b4-00c04fd430c8');
const NAMESPACE_X500 = uuidFromString('6ba7b814-9dad-11d1-80b4-00c04fd430c8');
const NAMESPACE_NULL = uuidFromString('00000000-0000-0000-0000-000000000000');
// TODO: Add named default namespaces
function createUUIDv5Binary(namespace, name) {
var c = Buffer.concat([namespace, name], namespace.length + name.length);
const c = Buffer.concat([namespace, name], namespace.length + name.length);
var digest = crypto.createHash('sha1').update(c).digest();
var uuid = new Buffer(16);
const digest = crypto.createHash('sha1').update(c).digest();
const uuid = new Buffer(16);

@@ -38,19 +38,33 @@ // bbbb - bb - bb - bb - bbbbbb

var raw = '';
let raw = '';
for(var i = 0; i < 16; i++) {
var n = uuid[i].toString(16);
if(n.length < 2) n = '0' + n;
raw += n;
for(let i = 0; i < 16; i++) {
raw += byteToHex(uuid[i]).toString(16);
}
var r = raw.substr(0, 8)
+ '-' + raw.substr(8, 4)
+ '-' + raw.substr(12, 4)
+ '-' + raw.substr(16, 4)
+ '-' + raw.substr(20);
return formatUUIDString(raw);
}
return r.toLowerCase();
function byteToHex(n) {
const str = n.toString(16);
if(str.length === 1) {
return '0' + str;
}
return str;
}
function formatUUIDString(uuidStr) {
const segments = [
uuidStr.substr(0, 8),
uuidStr.substr(8, 4),
uuidStr.substr(12, 4),
uuidStr.substr(16, 4),
uuidStr.substr(20)
];
return segments.join('-').toLowerCase();
}
function uuidFromString(uuid) {

@@ -61,3 +75,3 @@ if(typeof uuid !== 'string') {

var raw = uuid.replace(/-/g, '');
const raw = uuid.replace(/-/g, '');
if(raw.length !== 32) {

@@ -67,5 +81,5 @@ throw new Error('uuid string length must be 32 with -\'s removed');

var octets = [];
const octets = [];
for(var i = 0; i < 16; i++) {
for(let i = 0; i < 16; i++) {
octets[i] = parseInt(raw.substr(i * 2, 2), 16);

@@ -77,31 +91,32 @@ }

function createUUIDv5(namespace, name, binary) {
function getNamespace(namespace) {
if(!Buffer.isBuffer(namespace)) {
switch(namespace) { // Default namespaces
switch(namespace.toLowerCase()) { // Default namespaces
case 'dns':
namespace = NAMESPACE_DNS;
break;
return NAMESPACE_DNS;
case 'url':
namespace = NAMESPACE_URL;
break;
return NAMESPACE_URL;
case 'oid':
namespace = NAMESPACE_OID;
break;
return NAMESPACE_OID;
case 'x500':
namespace = NAMESPACE_X500;
break;
return NAMESPACE_X500;
case 'null':
case null:
namespace = NAMESPACE_NULL;
break;
return NAMESPACE_NULL;
default:
namespace = uuidFromString(namespace);
return uuidFromString(namespace);
}
}
return namespace;
}
function createUUIDv5(namespace, name, binary) {
namespace = getNamespace(namespace);
if(!Buffer.isBuffer(name)) {

@@ -111,3 +126,3 @@ name = new Buffer(name, 'utf8');

var uuid = createUUIDv5Binary(namespace, name);
let uuid = createUUIDv5Binary(namespace, name);
if(!binary) {

@@ -114,0 +129,0 @@ uuid = uuidToString(uuid);

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc