
Research
Security News
Malicious PyPI Package Exploits Deezer API for Coordinated Music Piracy
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
oidc-token-hash
Advanced tools
oidc-token-hash validates (and generates) ID Token `_hash` claims such as `at_hash` or `c_hash`
oidc-token-hash validates (and generates) ID Token _hash
claims such as at_hash
or c_hash
Its [
*_hash
] value is the base64url encoding of the left-most half of the hash of the octets of the ASCII representation of thetoken
/state
/code
value, where the hash algorithm used is the hash algorithm used in thealg
Header Parameter of the ID Token's JOSE Header. For instance, if thealg
isRS256
, hash thetoken
/state
/code
value with SHA-256, then take the left-most 128 bits and base64url encode them. The*_hash
value is a case sensitive string.
JWS algorithm | used hash algorithm | Note |
---|---|---|
HS256, RS256, PS256, ES256, ES256K | sha256 | |
HS384, RS384, PS384, ES384 | sha384 | |
HS512, RS512, PS512, ES512 | sha512 | |
EdDSA w/ Ed25519 curve | sha512 | connect/issues#1125 |
EdDSA w/ Ed448 curve | shake256 | connect/issues#1125 |
Ed25519 | sha512 | connect/issues#1125 |
Ed448 | shake256 | connect/issues#1125 |
Validating
const oidcTokenHash = require('oidc-token-hash');
const access_token = 'YmJiZTAwYmYtMzgyOC00NzhkLTkyOTItNjJjNDM3MGYzOWIy9sFhvH8K_x8UIHj1osisS57f5DduL-ar_qw5jl3lthwpMjm283aVMQXDmoqqqydDSqJfbhptzw8rUVwkuQbolw';
oidcTokenHash.validate({ claim: 'at_hash', source: 'access_token' }, 'x7vk7f6BvQj0jQHYFIk4ag', access_token, 'RS256'); // => does not throw
oidcTokenHash.validate({ claim: 'at_hash', source: 'access_token' }, 'EGEAhGYyfuwDaVTifvrWSoD5MSy_5hZPy6I7Vm-7pTQ', access_token, 'EdDSA', 'Ed25519'); // => does not throw
oidcTokenHash.validate({ claim: 'at_hash', source: 'access_token' }, 'EGEAhGYyfuwDaVTifvrWSoD5MSy_5hZPy6I7Vm-7pTQ', access_token, 'Ed25519'); // => does not throw
oidcTokenHash.validate({ claim: 'at_hash', source: 'access_token' }, 'x7vk7f6BvQj0jQHYFIk4ag', 'foobar', 'RS256'); // => throws AssertionError, message: at_hash mismatch, expected w6uP8Tcg6K2QR905Rms8iQ, got: x7vk7f6BvQj0jQHYFIk4ag
Generating
// access_token from first example
oidcTokenHash.generate(access_token, 'RS256'); // => 'x7vk7f6BvQj0jQHYFIk4ag'
oidcTokenHash.generate(access_token, 'HS384'); // => 'ups_76_7CCye_J1WIyGHKVG7AAs2olYm'
oidcTokenHash.generate(access_token, 'ES512'); // => 'EGEAhGYyfuwDaVTifvrWSoD5MSy_5hZPy6I7Vm-7pTQ'
oidcTokenHash.generate(access_token, 'Ed25519'); // => 'EGEAhGYyfuwDaVTifvrWSoD5MSy_5hZPy6I7Vm-7pTQ'
oidcTokenHash.generate(access_token, 'EdDSA', 'Ed25519'); // => 'EGEAhGYyfuwDaVTifvrWSoD5MSy_5hZPy6I7Vm-7pTQ'
oidcTokenHash.generate(access_token, 'Ed448'); // => 'jxsy68_eG9-91VnHsZ2VnCr_WqDMv4nspiSuUPRdNZnv1y5lNV3rPVYYWNiY_TbUB1JRwlgiDTzZ'
oidcTokenHash.generate(access_token, 'EdDSA', 'Ed448'); // => 'jxsy68_eG9-91VnHsZ2VnCr_WqDMv4nspiSuUPRdNZnv1y5lNV3rPVYYWNiY_TbUB1JRwlgiDTzZ'
base64url
native encoding in Node.js when availableEd448
and shake256
to use 114 bytes outputsha512
for Ed25519
and shake256
for Ed448
, refactored API, removed handling of none
JWS algbase64url
dependencybase64url
comeback#valid()
now requires a third
argument with the JOSE header alg
value, resulting in strict validationFAQs
oidc-token-hash validates (and generates) ID Token `_hash` claims such as `at_hash` or `c_hash`
We found that oidc-token-hash demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.
Security News
Newly introduced telemetry in devenv 1.4 sparked a backlash over privacy concerns, leading to the removal of its AI-powered feature after strong community pushback.