]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/custom-jsonld-signature.ts
Remove old JSON LD signature implementation
[github/Chocobozzz/PeerTube.git] / server / helpers / custom-jsonld-signature.ts
index 27a187db1d35e3da55eacf864d61092f16e04799..cb07fa3b28bc7ce6c08f2cdf4ad23c14887aa8c9 100644 (file)
@@ -1,13 +1,76 @@
 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: (key, cb) => {
-    nodeDocumentLoader(key, cb)
+  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)
   }
 })
 
@@ -15,6 +78,4 @@ jsonld.documentLoader = (url, cb) => {
   lru.get(url, cb)
 }
 
-jsig.use('jsonld', jsonld)
-
-export { jsig, jsonld }
+export { jsonld }