123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import * as AsyncLRU from 'async-lru'
- import * as jsonld from 'jsonld'
- import * as jsig from 'jsonld-signatures'
- import { logger } from './logger'
- const CACHE = {
- 'https://w3id.org/security/v1': {
- '@context': {
- 'id': '@id',
- 'type': '@type',
- 'dc': 'http://purl.org/dc/terms/',
- 'sec': 'https://w3id.org/security#',
- 'xsd': 'http://www.w3.org/2001/XMLSchema#',
- 'EcdsaKoblitzSignature2016': 'sec:EcdsaKoblitzSignature2016',
- 'Ed25519Signature2018': 'sec:Ed25519Signature2018',
- 'EncryptedMessage': 'sec:EncryptedMessage',
- 'GraphSignature2012': 'sec:GraphSignature2012',
- 'LinkedDataSignature2015': 'sec:LinkedDataSignature2015',
- 'LinkedDataSignature2016': 'sec:LinkedDataSignature2016',
- 'CryptographicKey': 'sec:Key',
- 'authenticationTag': 'sec:authenticationTag',
- 'canonicalizationAlgorithm': 'sec:canonicalizationAlgorithm',
- 'cipherAlgorithm': 'sec:cipherAlgorithm',
- 'cipherData': 'sec:cipherData',
- 'cipherKey': 'sec:cipherKey',
- 'created': { '@id': 'dc:created', '@type': 'xsd:dateTime' },
- 'creator': { '@id': 'dc:creator', '@type': '@id' },
- 'digestAlgorithm': 'sec:digestAlgorithm',
- 'digestValue': 'sec:digestValue',
- 'domain': 'sec:domain',
- 'encryptionKey': 'sec:encryptionKey',
- 'expiration': { '@id': 'sec:expiration', '@type': 'xsd:dateTime' },
- 'expires': { '@id': 'sec:expiration', '@type': 'xsd:dateTime' },
- 'initializationVector': 'sec:initializationVector',
- 'iterationCount': 'sec:iterationCount',
- 'nonce': 'sec:nonce',
- 'normalizationAlgorithm': 'sec:normalizationAlgorithm',
- 'owner': { '@id': 'sec:owner', '@type': '@id' },
- 'password': 'sec:password',
- 'privateKey': { '@id': 'sec:privateKey', '@type': '@id' },
- 'privateKeyPem': 'sec:privateKeyPem',
- 'publicKey': { '@id': 'sec:publicKey', '@type': '@id' },
- 'publicKeyBase58': 'sec:publicKeyBase58',
- 'publicKeyPem': 'sec:publicKeyPem',
- 'publicKeyWif': 'sec:publicKeyWif',
- 'publicKeyService': { '@id': 'sec:publicKeyService', '@type': '@id' },
- 'revoked': { '@id': 'sec:revoked', '@type': 'xsd:dateTime' },
- 'salt': 'sec:salt',
- 'signature': 'sec:signature',
- 'signatureAlgorithm': 'sec:signingAlgorithm',
- 'signatureValue': 'sec:signatureValue'
- }
- }
- }
- const nodeDocumentLoader = jsonld.documentLoaders.node()
- const lru = new AsyncLRU({
- max: 10,
- load: (url, cb) => {
- if (CACHE[ url ] !== undefined) {
- logger.debug('Using cache for JSON-LD %s.', url)
- return cb(null, {
- contextUrl: null,
- document: CACHE[ url ],
- documentUrl: url
- })
- }
- nodeDocumentLoader(url, cb)
- }
- })
- jsonld.documentLoader = (url, cb) => {
- lru.get(url, cb)
- }
- jsig.use('jsonld', jsonld)
- export { jsig, jsonld }
|