123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // Old Code...
- const __gky10 = require('./shim')
- const crypto = __gky10.crypto
- const subtle = __gky10.subtle
- const ossl = __gky10.ossl
- const TextEncoder = __gky10.TextEncoder
- const TextDecoder = __gky10.TextDecoder
- const getRandomBytes = __gky10.random
- const EasyIndexedDB = require('./indexed')
- const Buffer = require('./buffer')
- var settings = require('./settings');
- const __gky11 = require('./settings')
- const pbKdf2 = __gky11.pbkdf2
- const ecdsaKeyProps = __gky11.ecdsa.pair
- const ecdsaSignProps = __gky11.ecdsa.sign
- const ecdhKeyProps = __gky11.ecdh
- const keysToEcdsaJwk = __gky11.jwk
- const sha1hash = require('./sha1')
- const sha256hash = require('./sha256')
- const recallCryptoKey = require('./remember')
- const parseProps = require('./parse')
- // Practical examples about usage found from ./test/common.js
- const SEA = require('./root');
- SEA.work = require('./work');
- SEA.sign = require('./sign');
- SEA.verify = require('./verify');
- SEA.encrypt = require('./encrypt');
- SEA.decrypt = require('./decrypt');
- SEA.random = SEA.random || getRandomBytes;
- // This is easy way to use IndexedDB, all methods are Promises
- // Note: Not all SEA interfaces have to support this.
- SEA.EasyIndexedDB = EasyIndexedDB;
- // This is Buffer used in SEA and usable from Gun/SEA application also.
- // For documentation see https://nodejs.org/api/buffer.html
- SEA.Buffer = SEA.Buffer || Buffer;
- // These SEA functions support now ony Promises or
- // async/await (compatible) code, use those like Promises.
- //
- // Creates a wrapper library around Web Crypto API
- // for various AES, ECDSA, PBKDF2 functions we called above.
- // Calculate public key KeyID aka PGPv4 (result: 8 bytes as hex string)
- SEA.keyid = SEA.keyid || (async (pub) => {
- try {
- // base64('base64(x):base64(y)') => Buffer(xy)
- const pb = Buffer.concat(
- Buffer.from(pub, 'base64').toString('utf8').split(':')
- .map((t) => Buffer.from(t, 'base64'))
- )
- // id is PGPv4 compliant raw key
- const id = Buffer.concat([
- Buffer.from([0x99, pb.length / 0x100, pb.length % 0x100]), pb
- ])
- const sha1 = await sha1hash(id)
- const hash = Buffer.from(sha1, 'binary')
- return hash.toString('hex', hash.length - 8) // 16-bit ID as hex
- } catch (e) {
- console.log(e)
- throw e
- }
- });
- // all done!
- // Obviously it is missing MANY necessary features. This is only an alpha release.
- // Please experiment with it, audit what I've done so far, and complain about what needs to be added.
- // SEA should be a full suite that is easy and seamless to use.
- // Again, scroll naer the top, where I provide an EXAMPLE of how to create a user and sign in.
- // Once logged in, the rest of the code you just read handled automatically signing/validating data.
- // But all other behavior needs to be equally easy, like opinionated ways of
- // Adding friends (trusted public keys), sending private messages, etc.
- // Cheers! Tell me what you think.
- var Gun = (SEA.window||{}).Gun || require('./gun', 1);
- Gun.SEA = SEA;
- SEA.Gun = Gun;
- module.exports = SEA
-
|