Skip to content

Instantly share code, notes, and snippets.

@shanewholloway
Last active January 28, 2017 06:07
Show Gist options
  • Save shanewholloway/ebcd702910974be34b98a7e20970ceb0 to your computer and use it in GitHub Desktop.
Save shanewholloway/ebcd702910974be34b98a7e20970ceb0 to your computer and use it in GitHub Desktop.
create image data url from otpauth:// url
const speakeasy = require('speakeasy')
const totp_obj = { label: 'gist-totp-demo', algorithm: 'sha256',
secret: 'some secret string', encoding: 'base64'}
const otp_url = speakeasy.otpauthURL(totp_obj)
const qr_image = require('qr-image')
const png_buffer = qr_image.imageSync(otp_url, {type: 'png'})
const svg = qr_image.imageSync(otp_url, {type: 'svg'})
const svg_buffer = Buffer.from(svg)
const png_data_url = `data:image/png;base64,${png_buffer.toString('base64')}`
const svg_data_url = `data:image/svg;base64,${svg_buffer.toString('base64')}`
console.log(`
### PNG URL
![PNG Data Url](${png_data_url})
### SVG URL
![SVG Data Url](${svg_data_url})
### SVG Raw
\`\`\`xml
${svg}
\`\`\`
`)
@shanewholloway
Copy link
Author

PNG URL

PNG Data Url

SVG URL

SVG Data Url

SVG Raw

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 39 39"><path d="M1 1h7v7h-7zM9 1h1v1h2v-1h1v3h1v1h1v-1h1v1h1v-1h-1v-1h2v1h1v1h-1v3h-1v-1h-1v-1h-1v1h-1v1h-1v-3h-2v1h-2v-1h1v-1h1v-1h-1v1h-1zM14 1h1v1h1v1h-2zM16 1h3v1h1v-1h2v1h-1v2h-2v-1h-1v-1h-2zM25 1h3v1h-3zM31 1h7v7h-7zM2 2v5h5v-5zM23 2h1v1h-1zM32 2v5h5v-5zM3 3h3v3h-3zM22 3h1v2h-1zM26 3h2v1h-1v1h-1v3h1v1h-1v1h-1v-3h-1v-1h1v-1h-1v-1h2zM33 3h3v3h-3zM29 4h1v2h-1zM19 5h2v1h-2zM27 5h1v1h-1zM21 6h1v3h-1zM9 7h1v1h-1zM11 7h1v1h-1zM15 7h1v1h1v2h-2zM19 7h1v2h-2v-1h1zM23 7h1v2h-1zM27 7h1v1h-1zM29 7h1v2h1v1h-1v3h2v-1h1v-1h-2v-1h2v-1h1v2h1v1h2v-1h1v7h-2v1h-1v2h1v-1h1v2h1v3h-1v-2h-2v-1h-1v2h2v1h-2v1h2v1h-1v1h-2v1h1v1h1v-2h1v1h1v1h1v8h-1v-1h-1v1h-3v-1h1v-1h3v-2h-1v-2h1v-1h-1v1h-1v-1h-1v1h1v1h-1v1h-2v1h-1v1h-1v1h1v1h-2v-3h1v-1h-1v1h-1v-1h-1v-1h1v-1h1v-1h-1v-1h1v-2h-1v2h-1v1h-1v-1h-1v-2h1v1h1v-1h-1v-2h2v1h1v-1h1v1h1v-2h1v2h1v-7h1v-2h-1v-1h1v-1h-2v-2h-3v1h2v1h-1v1h-1v-1h-1v1h-1v-1h-2v-1h3v-2h1v-1h-1v1h-1v-2h-1v-1h1v-1h1v1h1v-1h-1v-1h1zM10 8h1v1h2v2h-2v-1h-1v1h-1v1h-3v-1h2v-1h-4v-1h6zM1 9h1v1h-1zM20 9h1v1h-1zM22 9h1v1h-1zM35 9h3v1h-1v1h-1v-1h-1zM3 10h1v1h-1zM17 10h1v1h1v2h-2v-1h-2v-1h2zM19 10h1v1h-1zM24 10h1v1h1v2h-3v-1h-1v2h-1v-1h-1v-2h4zM1 11h1v1h1v1h-1v2h-1zM10 11h1v1h-1zM13 11h1v3h1v-1h2v2h1v2h-2v2h-4v2h-2v1h-1v-3h1v-1h4v-1h-1v-2h-2v-1h-1v-1h1v-1h1v1h1zM5 12h1v1h-1zM9 12h1v1h-1zM6 13h2v1h-1v1h-2v1h-2v-1h1v-1h2zM33 13v1h1v1h3v-2h-1v1h-2v-1zM8 14h2v1h1v1h1v1h-2v-1h-3v-1h1zM24 14h1v1h-1zM14 15v1h1v-1zM19 15h3v1h-3zM23 15h1v1h-1zM1 16h2v1h1v1h-1v2h-1v1h-1v-3h1v-1h-1zM6 16h1v1h-1zM36 16v1h1v-1zM7 17h2v1h-2zM18 17h2v1h-1v2h-1v1h-2v-1h1v-1h1zM21 17h6v1h-3v1h-1v-1h-2zM28 17h1v1h-1zM31 17h1v1h1v1h-3v-1h1zM4 18h1v1h3v1h-2v1h2v1h-3v1h3v1h-4v-1h-2v1h-1v-2h1v-1h1v1h1zM20 19h3v1h-3zM24 19h2v1h-2zM27 19h2v1h-2zM37 19h1v1h-1zM14 20h1v1h-1zM19 20h1v1h1v2h-1v-1h-1v1h-1v-2h1zM23 20h1v1h-1zM26 20h1v1h-1zM30 20h1v1h1v1h-1v1h-1zM12 21h2v1h-2zM15 21h1v2h2v1h-2v1h1v1h-1v1h-1v2h-1v-1h-1v-1h1v-1h-1v-1h-1v-1h1v-1h1v-1h1zM27 21h2v3h-1v-2h-1zM8 22h1v1h-1zM10 22h2v2h-1v-1h-1zM22 22h3v2h-1v-1h-1v1h-1zM26 23h1v1h-1zM2 24h1v1h-1zM10 24h1v1h-1zM19 24h2v2h-1v-1h-1zM23 24h1v1h-1zM27 24h1v1h-1zM3 25h1v1h1v-1h3v1h-1v1h3v1h-1v2h-6v-2h-1v2h-1v-4h1v1h1zM18 25h1v1h1v1h-2zM22 25h1v3h-3v-1h1v-1h1zM28 25h1v1h-1zM12 26h1v1h-1zM24 26h1v1h-1zM16 27h1v1h-1zM36 27h2v1h-2zM7 28v1h1v-1zM10 28h3v2h-1v-1h-1v2h-1v4h-1v-5h1zM17 28h1v1h-1zM30 28v1h1v-1zM16 29h1v1h-1zM18 29h1v2h1v-1h2v1h-1v1h-3zM23 29h1v2h2v1h-2v2h-1v-2h-1v-1h1zM13 30h2v2h1v-1h1v2h-2v1h-1v-1h-1v-1h1v-1h-1zM30 30v3h3v-3zM1 31h7v7h-7zM11 31h1v1h-1zM31 31h1v1h-1zM2 32v5h5v-5zM26 32h1v1h-1zM3 33h3v3h-3zM11 33h1v2h1v-1h1v2h1v2h-1v-1h-1v-1h-2zM17 33h1v1h-1zM19 33h1v1h-1zM21 33h1v1h1v1h-1v1h-1v-1h-1v-1h1zM25 33h1v1h-1zM24 34h1v1h1v2h-1v-1h-2v-1h1zM26 34h1v1h-1zM34 34h2v1h-2zM15 35h1v1h-1zM32 35h2v1h-2zM10 36h1v2h-2v-1h1zM16 36h1v1h-1zM18 36h1v2h-2v-1h1zM20 36h1v2h-1zM27 36h1v1h-1zM31 36h1v1h-1zM23 37h2v1h-2z"/></svg>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment