Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installation/usage? #59

Open
lougreenwood opened this issue Sep 3, 2018 · 11 comments
Open

Installation/usage? #59

lougreenwood opened this issue Sep 3, 2018 · 11 comments

Comments

@lougreenwood
Copy link

Is it possible to use this as a simple es5/6 module and require/import for use in a particular class?

I get the impression that we need to run npm install && npm run build and then link to some generated js file directly in our html?

I'm feeling quite lost at how to get this working, so any help is greatly appreciated :)

@microshine
Copy link
Contributor

webcrypto-liner is a polyfill. It wraps existing global crypto object Window.

pv-webcrypto-tests

<script src="src/promise.js"></script> <!-- Adds Promise to IE -->
<script src="src/webcrypto-liner.min.js"></script>
<script src="src/asmcrypto.js"></script> <!-- RSA/AES implementation -->
<script src="src/elliptic.js"></script> <!-- EC implementation -->

You can use crypto without import/require

window.crypto.subtle.generateKey(alg, true, keyUsage);
// or
crypto.subtle.generateKey(alg, true, keyUsage);

@lougreenwood
Copy link
Author

You can use crypto without import/require

Is there a path to use import/require if I want to? If not, can you help me to understand what the use case is for npm installing if the src files need copy/moving into some dir to reference directly from HTML?

Thanks for bearing with me on this :)

@microshine
Copy link
Contributor

webcrypto-liner is TS project. NPM version contains compiled JS files only. You don't need to install TypeScript and other dependencies for compiled files getting

@lougreenwood
Copy link
Author

For example, I'm also using https://github.com/samthor/fast-text-encoding to polypill TextEncoder on ie11/Edge.

Usage of this is simple, I simply do a yarn add -D fast-text-encoder and then import 'fast-text-encoding'; in my JS and voila - the polyfill is enabled.

I'm trying to figure out if it's possible to have the same experience here...

@lougreenwood
Copy link
Author

lougreenwood commented Sep 3, 2018

@microshine so you're saying all I need to do is yarn add webcrypto-liner and my code will be magically polyfilled? no imports necessary etc?

@microshine
Copy link
Contributor

Do you use any compiler for JS compilation?
If yes. Do you have fast-text-encoding code in your bundled file after import 'fast-text-encoding' using?

@lougreenwood
Copy link
Author

Yes, my project is built with EmberJS, which builds the app using Broccoli. commonjs modules are made available in my project using ember-auto-import https://github.com/ef4/ember-auto-import.

Yep, it's bundled and the fast-text-encoding polyfill is working in production...

@microshine
Copy link
Contributor

The problem is that package.json uses main: build/index.js, but npm module doesn't have build

Can you try to update webcrypto-liner/package.json and set main: dist/webcrypto-liner.shim.js?
There can be problem with https://github.com/PeculiarVentures/webcrypto-liner/blob/master/src/init.ts#L5, you can comment it.

@lougreenwood
Copy link
Author

@microshine that seems to have worked - at least my app is no longer throwing an exception when trying to import 'webcrypto-liner';

Let me check an environment where I was previously getting issues because crypto wasn't available...

@mc-suchecki
Copy link

mc-suchecki commented Jun 10, 2019

@lougreenwood I also expected to import the library in TypeScript like so:
import 'webcrypto-liner';

Right now this won't work with the following error:
Module not found: Error: Can't resolve 'crypto' in '(...)\node_modules\webcrypto-liner\build'

@microshine would it be possible for you to change main in package.json accordingly?

@TJKoury
Copy link
Contributor

TJKoury commented Jun 10, 2019

@microshine @YuryStrozhevsky The issue pointed out by @mc-suchecki was a problem in my pull request to PKI.js. Please change the main field.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants