GUIDE
Encrypted Globally Unique Identifier (GUIDE) generator.
Implementation
- GUIDE is using aes-256-gcm encryption.
- Identifiers are encoded using URL-safe base64 encoding.
aes-256-gcm
is the closest thing I have found to a misuse resistant algorithm. If you know of a better encryption algorithm (misuse resistant) thats available to Node.js – raise an issue.
Use case
GUIDE is used to mitigate certain types of DDoS attacks.
API
type GuidePayloadType = | id: number | string namespace: string type: string|; /*** @throws InvalidGuideError Throws if input guide cannot be decrypted.* @throws UnexpectedNamespaceValueError Throws if the namespace contained in the payload does not match the expected namespace.* @throws UnexpectedResourceTypeNameValueError Throws if the resource type name contained in the payload does not match the expected resource type name.*/type GuidePayloadType; /** * @param initializationVectorValue Initialization vector. Must be at least 128 characters long. * @param namespace A namespace of the GUID (e.g. company name or the application name). * @param type A resource type name (e.g. article). */type string;
Usage
; const initializationVectorValue = 'lGMUlgYOZXkT7MWjRozJ7F3MlSm89SPkop2AvQciBk1xXLGCX5aUy3uIJHEInjQzyHZSnZ0NaQaVpEldAlVWeguOLYkW5ZluwbaHY0iWEgFULRV92GV5KgHj2P5YChgW';const namespace = 'gajus';const resourceTypeName = 'article'; const guide = ; // "ao-CZ7gmFSaFhA4tzWaM2CiOGtt772ZqJDB1k1ty3QWkc24Rx43iYuUc_S0ecZiiWS8aTP-0EQ" const payload = ; // {// "id": 1,// "namespace": "gajus",// "type": "article"// }
Handling errors
fromGuide
method can throw the following errors.
Error constructor name | Description |
---|---|
InvalidGuideError |
Throws if input guide cannot be decrypted. |
UnexpectedNamespaceValueError |
Throws if the namespace contained in the payload does not match the expected namespace. |
UnexpectedResourceTypeNameValueError |
Throws if the resource type name contained in the payload does not match the expected resource type name. |
Error constructors can be imported from guide
package.
UnexpectedNamespaceValueError
and UnexpectedResourceTypeNameValueError
extend from InvalidGuideError
. It is enough to check if an error object is an instance of InvalidGuideError
to assert that an error is a result of an invalid GUIDE.
; try ; catch error if error instanceof InvalidGuideError // Handle error. // Re-throw other errors. throw error;