Skip to content

Commit

Permalink
Merge pull request #196 from Netflix/simpleclient-nodejs
Browse files Browse the repository at this point in the history
Update simple client example to work with Node.js-compatible JavaScript stack.
  • Loading branch information
wmiaw authored Oct 4, 2017
2 parents b0f6528 + 37db927 commit 7bac40b
Show file tree
Hide file tree
Showing 11 changed files with 105 additions and 77 deletions.
24 changes: 20 additions & 4 deletions examples/simple/src/main/javascript/client/App.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
/**
* Copyright (c) 2016-2017 Netflix, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

function getQueryParam(key, defaultValue) {
var queryString = window.location.search;
var regex = new RegExp(key + '=([^&?]*)');
Expand Down Expand Up @@ -108,7 +124,7 @@ function addRsaKey() {
keyB64 = keyB64.replace(/\s+/g, '');

// Import the public key.
PublicKey$import(keyB64, WebCryptoAlgorithm.RSASSA_SHA256, WebCryptoUsage.VERIFY, KeyFormat.SPKI, {
PublicKey.import(keyB64, WebCryptoAlgorithm.RSASSA_SHA256, WebCryptoUsage.VERIFY, KeyFormat.SPKI, {
result: function (pubkey) {
client.addRsaPublicKey(identity, pubkey);
keyform.style.visibility = 'hidden';
Expand Down Expand Up @@ -233,7 +249,7 @@ function sendRequest() {
var isIntegrityProtected = document.getElementById('integrity-protected').checked;
var isNonReplayable = document.getElementById('non-replayable').checked;
var isRequestingTokens = document.getElementById('requesting-tokens').checked;
var data = textEncoding$getBytes(document.getElementById('data').value);
var data = textEncoding.getBytes(document.getElementById('data').value);
request = new AdvancedRequest(recipient, isEncrypted, isIntegrityProtected, isNonReplayable, isRequestingTokens, data);
break;
default:
Expand Down Expand Up @@ -303,15 +319,15 @@ function showResponse(mis) {
return;

// Convert the bytes to text and update the response field.
var s = textEncoding$getString(bytes, MslConstants$DEFAULT_CHARSET);
var s = textEncoding.getString(bytes, MslConstants.DEFAULT_CHARSET);
responseText.innerHTML += s;

// Continue reading.
showResponse(mis);
},
timeout: function(bytes) {
// Convert the bytes to text and update the response field.
var s = textEncoding$getString(bytes, MslConstants$DEFAULT_CHARSET);
var s = textEncoding.getString(bytes, MslConstants.DEFAULT_CHARSET);
responseText.innerHTML += s;

// Notify of timeout.
Expand Down
81 changes: 46 additions & 35 deletions examples/simple/src/main/javascript/client/SimpleClient.html

Large diffs are not rendered by default.

14 changes: 7 additions & 7 deletions examples/simple/src/main/javascript/client/SimpleClient.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2014 Netflix, Inc. All rights reserved.
* Copyright (c) 2014-2017 Netflix, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -22,7 +22,7 @@ var SimpleClient$create;
/**
* <p>An HTTP location that is implemented using XMLHttpRequest.</p>
*/
var Xhr = IHttpLocation.extend({
var Xhr = Url.IHttpLocation.extend({
/**
* <p>Create a new XHR pointing at the specified endpoint.
*
Expand Down Expand Up @@ -58,7 +58,7 @@ var SimpleClient$create;
*
* @author Wesley Miaw <[email protected]>
*/
SimpleClient = util.Class.create({
SimpleClient = Class.create({
/**
* <p>Create a new client.</p>
*
Expand All @@ -73,13 +73,13 @@ var SimpleClient$create;
var self = this;

// Import the server RSA public key.
PublicKey$import(SimpleConstants.RSA_PUBKEY_B64, WebCryptoAlgorithm.RSASSA_SHA256, WebCryptoUsage.VERIFY, KeyFormat.SPKI, {
PublicKey.import(SimpleConstants.RSA_PUBKEY_B64, WebCryptoAlgorithm.RSASSA_SHA256, WebCryptoUsage.VERIFY, KeyFormat.SPKI, {
result: function(publicKey) {
AsyncExecutor(callback, function() {
// Create the key manager.
var mechanism = (MslCrypto$getWebCryptoVersion() == MslCrypto$WebCryptoVersion.LEGACY)
? AsymmetricWrappedExchange$Mechanism.JWE_RSA
: AsymmetricWrappedExchange$Mechanism.JWK_RSA;
var mechanism = (MslCrypto.getWebCryptoVersion() == MslCrypto.WebCryptoVersion.LEGACY)
? AsymmetricWrappedExchange.Mechanism.JWE_RSA
: AsymmetricWrappedExchange.Mechanism.JWK_RSA;
SimpleKeyxManager$create(mechanism, {
result: function(keyxMgr) {
AsyncExecutor(callback, function() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2014 Netflix, Inc. All rights reserved.
* Copyright (c) 2014-2017 Netflix, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -25,7 +25,7 @@ var SimpleKeyxManager$KeyPair;
*
* @author Wesley Miaw <[email protected]>
*/
var KeyPair = SimpleKeyxManager$KeyPair = util.Class.create({
var KeyPair = SimpleKeyxManager$KeyPair = Class.create({
/**
* <p>Create a new key pair.</p>
*
Expand All @@ -50,12 +50,12 @@ var SimpleKeyxManager$KeyPair;
*
* @author Wesley Miaw <[email protected]>
*/
SimpleKeyxManager = util.Class.create({
SimpleKeyxManager = Class.create({
/**
* <p>Create a new asymmetric wrapped key exchange manager. A pair of
* initial keys will be generated.</p>
*
* @param {AsymmetricWrappedExchange$Mechanism} mechanism the key
* @param {AsymmetricWrappedExchange.Mechanism} mechanism the key
* mechanism to use.
* @param {{result: function(SimpleKeyxManager), error: function(Error)}}
* callback the callback that will receive the key manager or
Expand Down Expand Up @@ -87,7 +87,7 @@ var SimpleKeyxManager$KeyPair;
/**
* <p>Return the key exchange mechanism.</p>
*
* @return {AsymmetricWrappedExchange$Mechanism} the key exchange
* @return {AsymmetricWrappedExchange.Mechanism} the key exchange
* mechanism.
*/
getMechanism: function getMechanism() {
Expand Down Expand Up @@ -115,9 +115,9 @@ var SimpleKeyxManager$KeyPair;

AsyncExecutor(callback, function() {
var oncomplete = function(result) {
PrivateKey$create(result.privateKey, {
PrivateKey.create(result.privateKey, {
result: function(privateKey) {
PublicKey$create(result.publicKey, {
PublicKey.create(result.publicKey, {
result: function(publicKey) {
AsyncExecutor(callback, function() {
this._pubkey = publicKey;
Expand Down Expand Up @@ -151,7 +151,7 @@ var SimpleKeyxManager$KeyPair;
* <p>Create a new asymmetric wrapped key exchange manager. A pair of
* initial keys will be generated.</p>
*
* @param {AsymmetricWrappedExchange$Mechanism} mechanism the key
* @param {AsymmetricWrappedExchange.Mechanism} mechanism the key
* mechanism to use.
* @param {{result: function(SimpleKeyxManager), error: function(Error)}}
* callback the callback that will receive the key manager or
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2015 Netflix, Inc. All rights reserved.
* Copyright (c) 2015-2017 Netflix, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -27,7 +27,7 @@ var AdvancedRequest;
(function() {
"use strict";

AdvancedRequest = util.Class.create({
AdvancedRequest = Class.create({
/**
* <p>Create an advanced request with the specified message properties
* and application data.</p>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2015 Netflix, Inc. All rights reserved.
* Copyright (c) 2015-2017 Netflix, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -19,8 +19,8 @@ var AdvancedRequestMessageContext;
"use strict";

// Shortcuts.
var Mechanism = AsymmetricWrappedExchange$Mechanism;
var RequestData = AsymmetricWrappedExchange$RequestData;
var Mechanism = AsymmetricWrappedExchange.Mechanism;
var RequestData = AsymmetricWrappedExchange.RequestData;

/**
* <p>Example client message context for sending advanced requests.</p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ var SimpleFilterStreamFactory;
AsyncExecutor(callback, function() {
try {
if (data)
self._target.innerHTML += textEncoding$getString(data, MslConstants$DEFAULT_CHARSET);
self._target.innerHTML += textEncoding.getString(data, MslConstants.DEFAULT_CHARSET);
return data;
} catch (e) {
throw new MslIoException("Error encoding data into string.", e);
Expand All @@ -80,7 +80,7 @@ var SimpleFilterStreamFactory;
AsyncExecutor(callback, function() {
try {
if (data)
self._target.innerHTML += textEncoding$getString(data, MslConstants$DEFAULT_CHARSET);
self._target.innerHTML += textEncoding.getString(data, MslConstants.DEFAULT_CHARSET);
return data;
} catch (e) {
throw new MslIoException("Error encoding data into string.", e);
Expand Down Expand Up @@ -124,7 +124,7 @@ var SimpleFilterStreamFactory;
var self = this;
AsyncExecutor(callback, function() {
try {
this._target.innerHTML += textEncoding$getString(data.subarray(off, off + len), MslConstants$DEFAULT_CHARSET);
this._target.innerHTML += textEncoding.getString(data.subarray(off, off + len), MslConstants.DEFAULT_CHARSET);
} catch (e) {
throw new MslIoException("Error encoding data into string.", e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2014 Netflix, Inc. All rights reserved.
* Copyright (c) 2014-2017 Netflix, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -57,7 +57,7 @@ var SimpleRequest$Type;
QUIT: "QUIT",
};

SimpleRequest = util.Class.create({
SimpleRequest = Class.create({
/**
* <p>Create a simple request.</p>
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (c) 2014 Netflix, Inc. All rights reserved.
* Copyright (c) 2014-2017 Netflix, Inc. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -20,8 +20,8 @@ var SimpleRequestMessageContext;

// Shortcuts.
var Type = SimpleRequest$Type;
var Mechanism = AsymmetricWrappedExchange$Mechanism;
var RequestData = AsymmetricWrappedExchange$RequestData;
var Mechanism = AsymmetricWrappedExchange.Mechanism;
var RequestData = AsymmetricWrappedExchange.RequestData;

/**
* <p>Example client message context for sending request messages.</p>
Expand Down Expand Up @@ -145,7 +145,7 @@ var SimpleRequestMessageContext;
write: function(output, timeout, callback) {
AsyncExecutor(callback, function() {
var json = JSON.stringify(this._request);
var jsonBytes = textEncoding$getBytes(json, MslConstants$DEFAULT_CHARSET);
var jsonBytes = textEncoding.getBytes(json, MslConstants.DEFAULT_CHARSET);
output.write(jsonBytes, 0, jsonBytes.length, timeout, {
result: function(numWritten) {
// Technically we should check that numWritten is equal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ var SimpleMslContext;
*/
init: function init(clientId, rsaStore, keyxMgr, errorCallback) {
// Message capabilities.
var compressionAlgos = [ MslConstants$CompressionAlgorithm.LZW ];
var compressionAlgos = [ MslConstants.CompressionAlgorithm.LZW ];
var languages = [ "US_en" ];
var encoderFormats = [ MslEncoderFormat.JSON ];
var msgCaps = new MessageCapabilities(compressionAlgos, languages, encoderFormats);
Expand Down Expand Up @@ -167,7 +167,7 @@ var SimpleMslContext;

/** @inheritDoc */
getEntityAuthenticationScheme: function getEntityAuthenticationScheme(name) {
return EntityAuthenticationScheme$getScheme(name);
return EntityAuthenticationScheme.getScheme(name);
},

/** @inheritDoc */
Expand All @@ -179,7 +179,7 @@ var SimpleMslContext;

/** @inheritDoc */
getUserAuthenticationScheme: function getUserAuthenticationScheme(name) {
return UserAuthenticationScheme$getScheme(name);
return UserAuthenticationScheme.getScheme(name);
},

/** @inheritDoc */
Expand All @@ -194,7 +194,7 @@ var SimpleMslContext;

/** @inheritDoc */
getKeyExchangeScheme: function getKeyExchangeScheme(name) {
return KeyExchangeScheme$getScheme(name);
return KeyExchangeScheme.getScheme(name);
},

/** @inheritDoc */
Expand Down
11 changes: 6 additions & 5 deletions tests/src/test/javascript/msltests.html
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@
<script type="text/javascript" src="../../../../core/src/main/javascript/MslMessageException.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/MslUserAuthException.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/MslUserIdTokenException.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/InputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/OutputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/ByteArrayInputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/ByteArrayOutputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/BufferedInputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/MslEncodable.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/MslEncoderException.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/MslEncoderFormat.js"></script>
Expand Down Expand Up @@ -88,17 +93,13 @@
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/MslCiphertextEnvelope.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/MslSignatureEnvelope.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/ICryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/ClientMslCryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/EccCryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/JsonWebEncryptionCryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/NullCryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/RsaCryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/SymmetricCryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/crypto/SessionCryptoContext.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/InputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/OutputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/BufferedInputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/ByteArrayInputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/ByteArrayOutputStream.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/ClarinetParser.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/JsonMslArray.js"></script>
<script type="text/javascript" src="../../../../core/src/main/javascript/io/JsonMslObject.js"></script>
Expand Down

0 comments on commit 7bac40b

Please sign in to comment.