@maincc/jwt-lib
v0.0.3
Published
> A cryptocurrency-compliant js library > 一个实现符合加密货币的js库 > > Based on jsontokens library (https://github.com/stacks-network/jsontokens-js). > 基于jsontokens库进行扩展。
Readme
jwt-lib
A cryptocurrency-compliant js library 一个实现符合加密货币的js库
Based on jsontokens library (https://github.com/stacks-network/jsontokens-js). 基于jsontokens库进行扩展。
INSTALL
npm install @maincc/jwt-libDocumentation
example import
import WalletJwt from "@maincc/jwt-lib";If you don't have an Ethereum account, you can generate it through generate.
如果你并没有以太坊的账户,可以通过generate生成。examplegenerateconst wallet = WalletJwt.generate();result{ privateKey: '0xc5b893aef8c2e847dc14ddadb7dfd3be5781b7a5a46e0cbcc00bfa992c626ddc', publicKey: '0x6f592757f8e6506a5f950df6fcbb6b8000b3ef00c24cc69dfdb3155d322b182c4d31216ae1154b63211c8970977ccb2a72272ac0cce8004e0c26c86dfc01046a', compressPubKey: '026f592757f8e6506a5f950df6fcbb6b8000b3ef00c24cc69dfdb3155d322b182c', address: '0x50692568f1184911ecbfa2de4147fecba5b0b386' }If you have an Ethereum account and have its public and private keys. Then you can perform jwt related operations.
如果你拥有了以太坊的账户,并掌握其公私钥。那么可以进行jwt的相关操作。examplesign
const data = { header:{ type: 'CWT', chain: 'ethereum' }, payload:{ sub: '1234567890', name: 'John Doe', } }; const jwt = WalletJwt.sign(data, wallet.privateKey);resulteyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJ0eXBlIjoiQ1dUIiwiY2hhaW4iOiJldGhlcmV1bSJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.5ZICOX22jNPVeewb3o0fsMSJM04CQnO5aIbZaW_vfakwYUReR2-mZEiDkz-ezdmkOH6xKObnZDpMcNCnv9n-RwThe signature must contain payload and header fields.
签名的内容必须带有payload和header字段。
exampledecode
WalletJwt.decode(jwt)result{ header: { typ: 'JWT', alg: 'ES256K', type: 'CWT', chain: 'ethereum' }, payload: { sub: '1234567890', name: 'John Doe' }, signature: '5ZICOX22jNPVeewb3o0fsMSJM04CQnO5aIbZaW_vfakwYUReR2-mZEiDkz-ezdmkOH6xKObnZDpMcNCnv9n-Rw' }exampleverify
WalletJwt.verify(jwt, wallet.publicKey) or WalletJwt.verify(jwt, wallet.compressPubKey)resulttrueIf you need public and private keys in pem format, or Signature in jwt is ASN.1 DER format.
如果你需要pem格式的公私钥,或者需要jwt里的Signature是ASN.1 DER格式。exampleprivToPem
WalletJwt.privToPem(wallet.privateKey)Convert the private key to pem format. Note: The resulting pem is SEC1 specification.
将私钥转换成pem格式,注:生成的是SEC1规范的pem。
**`result`** -----BEGIN EC PRIVATE KEY-----
MHQCAQEEIMW4k674wuhH3BTdrbff075XgbelpG4MvMAL+pksYm3coAcGBSuBBAAK
oUQDQgAEb1knV/jmUGpflQ32/LtrgACz7wDCTMad/bMVXTIrGCxNMSFq4RVLYyEc
iXCXfMsqcicqwMzoAE4MJsht/AEEag==
-----END EC PRIVATE KEY-----examplepubToPem
WalletJwt.pubToPem(wallet.publicKey)Convert the public key to pem format. Note: The parameter must be an uncompressed public key.
将公钥转换成pem格式,注:参数必须是未压缩的公钥。
**`result`** -----BEGIN PUBLIC KEY-----
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEb1knV/jmUGpflQ32/LtrgACz7wDCTMad
/bMVXTIrGCxNMSFq4RVLYyEciXCXfMsqcicqwMzoAE4MJsht/AEEag==
-----END PUBLIC KEY-----examplesign(... , 'der') && verify(... , 'der')
const jwtDer = WalletJwt.sign(data, wallet.privateKey, 'der');
WalletJwt.verify(jwtDer, wallet.publicKey, 'der');Generate jwt in ASN.1 DER format (to meet openssl and other cryptographic libraries) and verify.
生成符合ASN.1 DER格式的jwt(满足openssl等密码库)并验证。
**`result`** eyJ0eXAiOiJKV1QiLCJhbGciOiJFUzI1NksiLCJ0eXBlIjoiQ1dUIiwiY2hhaW4iOiJldGhlcmV1bSJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.MEUCIQDlkgI5fbaM09V57BvejR-wxIkzTgJCc7lohtlpb-99qQIgMGFEXkdvpmRIg5M_ns3ZpDh-sSjm52Q6THDQp7_Z_kc
true