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

Load with requirejs #6

Open
jcalonso opened this issue May 13, 2013 · 4 comments
Open

Load with requirejs #6

jcalonso opened this issue May 13, 2013 · 4 comments

Comments

@jcalonso
Copy link

Is possible to use load this lib with requirejs in frontend?

@njoyard
Copy link

njoyard commented Aug 14, 2013

It is, but you have to wrap the root cryptojs file as described here

@jcalonso
Copy link
Author

Thanks for that, I ended up doing something like this:
This is for AES module.

require.config({
    modules: [
        {
            name: 'main'
        }
    ],
    paths: {
        'crypto': "../components/cryptojs/lib/Crypto",
        'crypto.BlockModes': "../components/cryptojs/lib/BlockModes",
        'crypto.PBKDF2': "../components/cryptojs/lib/PBKDF2",
        'crypto.HMAC': "../components/cryptojs/lib/HMAC",
        'crypto.SHA1': "../components/cryptojs/lib/SHA1",
        'crypto.AES': "../components/cryptojs/lib/AES"
    },
    shim: {
        'crypto.AES': ['crypto','crypto.BlockModes','crypto.PBKDF2','crypto.HMAC','crypto.SHA1']
    }

});

require([
    'crypto.AES'
], function () {

    Crypto.AES.encrypt('password', 'passphrase');
});

@xenoterracide
Copy link

are you sure there aren't changes that could be made to this that could make it simply work by using packages support in requirejs http://requirejs.org/docs/api.html#packages ? without breaking commonjs support?

@xenoterracide
Copy link

paths: {
    'crypto'               :'/bower_components/cryptojs/lib/Crypto',
    'crypto.MD5'      :'/bower_components/cryptojs/lib/MD5',
},
shim: {
    'crypto.MD5'      :['crypto'],
},
// ... in my controller module (note:angular bits are simply to give such users an idea
define(['crypto.MD5', 'angular'], function() { return [ '$scope',   function ( $scope ) {
         var digest = Crypto.MD5( $scope.code ).toString();
     }];
 });

I think it's probably important not to try to use Crypto in the "requirejs name" because it will override the global name export or somethin'. Also usage is based on that global name not the require name.

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

3 participants