azure-cli
Version:
Microsoft Azure Cross Platform Command Line tool
365 lines (325 loc) • 11.3 kB
JavaScript
/* jshint latedef:false */
//
// Copyright (c) Microsoft and contributors. 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.
//
var exports = module.exports;
function KeyVaultClient(internalClient) {
this.internalClient = internalClient;
/**
* An object that performs operations on keys.
* @type {KeyVaultKeys}
*/
this.keys = new KeyVaultKeys(this);
/**
* An object that performs operations on secrets.
* @type {KeyVaultSecrets}
*/
this.secrets = new KeyVaultSecrets(this);
}
/** Wrapper for withFilter() of Service class.
* Allows late binding of filters.
*/
KeyVaultClient.prototype.withFilter = function(newFilter) {
this.internalClient = this.internalClient.withFilter(newFilter);
return this;
};
/** A class that performs operations on vault keys.
*/
function KeyVaultKeys(client) {
this.keys = client.internalClient.keys;
}
/**
* Requests that a backup of the specified key be downloaded to the client.
* @param {string} keyIdentifier
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.backup = function(keyIdentifier, callback) {
return this.keys.backup(keyIdentifier, keyResponseDeserializer(callback));
};
/**
* Creates a new, named, key in the specified vault.
* @param {string} vault
* @param {string} keyName
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.create = function(vault, keyName, keyOpRequest, callback) {
return this.keys.create(vault, keyName, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Decrypts a single block of data.
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.decryptData = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.decryptData(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Delete the specified key
* @param {string} vault
* @param {string} keyName
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.deleteKey = function(vault, keyName, callback) {
return this.keys.deleteKey(vault, keyName, keyResponseDeserializer(callback));
};
/**
* Encrypts a single block of data.
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.encryptData = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.encryptData(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Retrieves the public portion of a key plus its attributes
* @param {string} keyIdentifier
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.get = function(keyIdentifier, callback) {
return this.keys.get(keyIdentifier, keyResponseDeserializer(callback));
};
/**
* Imports a key into the specified vault
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.importMethod = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.importMethod(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* List the keys in the vault
* @param {string} vault
* @param {Number} [top]
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.list = function(vault, top, callback) {
return this.keys.list(vault, top, keyResponseDeserializer(callback));
};
/**
* List the next page of keys in the vault
* @param {string} nextLink
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.listNext = function(nextLink, callback) {
return this.keys.listNext(nextLink, keyResponseDeserializer(callback));
};
/**
* List the versions of a key
* @param {string} vault
* @param {string} keyName
* @param {Number} [top]
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.listVersions = function(vault, keyName, top, callback) {
return this.keys.listVersions(vault, keyName, top, keyResponseDeserializer(callback));
};
/**
* List the next page of versions of a key
* @param {string} nextLink
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.listVersionsNext = function(nextLink, callback) {
return this.keys.listVersionsNext(nextLink, keyResponseDeserializer(callback));
};
/**
* Restores the backup key in to a vault
* @param {string} vault
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.restore = function(vault, keyOpRequest, callback) {
return this.keys.restore(vault, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Creates a signature from a digest using the specified key in the vault
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.sign = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.sign(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Unwraps a symmetric key using the specified key in the vault
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.unwrapKey = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.unwrapKey(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Updates the Key Attributes associated with the specified key
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.update = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.update(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Verifies a signature using the specified key
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.verify = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.verify(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
/**
* Wraps a symmetric key using the specified key
* @param {string} keyIdentifier
* @param {object} keyOpRequest
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultKeys.prototype.wrapKey = function(keyIdentifier, keyOpRequest, callback) {
return this.keys.wrapKey(keyIdentifier, serializeKeyRequest(keyOpRequest), keyResponseDeserializer(callback));
};
function serializeKeyRequest(request) {
return {
rawJsonRequest: JSON.stringify(request)
};
}
function keyResponseDeserializer(callback) {
return function(err, response) {
if (err) {
return callback(err, null, response);
}
if (response.keyOpResponse) {
return callback(null, JSON.parse(response.keyOpResponse), response);
}
return callback(new Error('Unrecognized response'), null, response);
};
}
/** A class that performs operations on vault secrets.
*/
function KeyVaultSecrets(client) {
this.secrets = client.internalClient.secrets;
}
/**
* Delete the specified secret
* @param {string} secretIdentifier
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.deleteMethod = function(secretIdentifier, callback) {
return this.secrets.deleteMethod(secretIdentifier, secretResponseDeserializer(callback));
};
/**
* Gets a secret
* @param {string} secretIdentifier
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.get = function(secretIdentifier, callback) {
return this.secrets.get(secretIdentifier, secretResponseDeserializer(callback));
};
/**
* List the secrets in the specified vault
* @param {string} vault
* @param {Number} [top]
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.list = function(vault, top, callback) {
return this.secrets.list(vault, top, secretResponseDeserializer(callback));
};
/**
* List the next page of secrets in the specified vault
* @param {string} nextLink
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.listNext = function(nextLink, callback) {
return this.secrets.listNext(nextLink, secretResponseDeserializer(callback));
};
/**
* List the versions of a secret in the specified vault
* @param {string} vault
* @param {string} secretName
* @param {Number} [top]
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.listVersions = function(vault, secretName, top, callback) {
return this.secrets.listVersions(vault, secretName, top, secretResponseDeserializer(callback));
};
/**
* List the versions of a secret in the specified vault
* @param {string} nextLink
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.listVersionsNext = function(nextLink, callback) {
return this.secrets.listVersionsNext(nextLink, secretResponseDeserializer(callback));
};
/**
* Sets a secret in the specified vault.
* @param {string} secretIdentifier
* @param {object} request
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.set = function(secretIdentifier, request, callback) {
return this.secrets.set(secretIdentifier, serializeSecretRequest(request), secretResponseDeserializer(callback));
};
/**
* Update the specified secret
* @param {string} secretIdentifier
* @param {object} request
* @param {function} callback
* @returns {Stream} The response stream.
*/
KeyVaultSecrets.prototype.update = function(secretIdentifier, request, callback) {
return this.secrets.update(secretIdentifier, serializeSecretRequest(request), secretResponseDeserializer(callback));
};
function serializeSecretRequest(request) {
return {
rawJsonRequest: JSON.stringify(request)
};
}
function secretResponseDeserializer(callback) {
return function(err, response) {
if (err) {
return callback(err, null, response);
}
if (response.response) {
return callback(null, JSON.parse(response.response), response);
}
return callback(new Error('Unrecognized response'), null, response);
};
}
exports.KeyVaultClient = KeyVaultClient;