Merge pull request #33 from microsoft/beejones/promise-reject-should-always-return-error

Beejones/promise reject should always return error
This commit is contained in:
beejones 2020-10-22 13:56:08 +02:00 коммит произвёл GitHub
Родитель 09fae0dc67 b45e72b3ce
Коммит ee3a750b8e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
26 изменённых файлов: 136 добавлений и 142 удалений

Просмотреть файл

@ -24,16 +24,15 @@ export default class KeyStoreInMemory implements IKeyStore {
* @param [options] Options for retrieving.
*/
get(keyReference: KeyReference, options?: KeyStoreOptions): Promise<IKeyContainer> {
return new Promise((resolve, reject) => {
if (this.store.has(keyReference.keyReference)) {
const key = (<IKeyContainer>this.store.get(keyReference.keyReference));
if (key.kty === KeyType.Oct) {
if (options && options.publicKeyOnly) {
const error = 'A secret does not has a public key';
reject(error);
throw new Error(error);
return Promise.reject(new Error(error));
}
return resolve(key);
return Promise.resolve(key);
}
if (options && options.publicKeyOnly) {
@ -41,20 +40,19 @@ export default class KeyStoreInMemory implements IKeyStore {
case 'ec':
case 'okp':
case 'rsa':
return resolve(this.publicKeysOnly(key));
return Promise.resolve(this.publicKeysOnly(key));
default:
const error = `A secret does not has a public key`;
return reject(error);
return Promise.reject(new Error(error));
}
} else {
resolve(key);
return Promise.resolve(key);
}
} else {
const error = `${keyReference.keyReference} not found`;
return reject(error);
return Promise.reject(new Error(error));
}
});
}
}
private publicKeysOnly(container: IKeyContainer) {
const publicKeyContainer = clone(container);
@ -88,9 +86,7 @@ export default class KeyStoreInMemory implements IKeyStore {
}
}
}
return new Promise((resolve) => {
resolve(dictionary);
});
return Promise.resolve(dictionary);
}
/**
@ -115,8 +111,6 @@ export default class KeyStoreInMemory implements IKeyStore {
this.store.set(keyIdentifier.keyReference, container);
}
return new Promise((resolve) => {
resolve();
});
return Promise.resolve();
}
}

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-keystore",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"description": "Package for managing keys in a key store.",
"repository": {
"type": "git",
@ -28,18 +28,18 @@
"jasmine-reporters": "^2.3.2",
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"prettier": "^1.18.2",
"ts-node": "8.5.4",
"tslint": "^5.20.0",
"typescript": "3.9.2"
},
"dependencies": {
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.7",
"@types/node": "12.12.16",
"base64url": "^3.0.1",
"clone": "^2.1.2",
"webcrypto-core": "1.1.1"
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -108,7 +108,7 @@ describe('KeyStoreInMemory', () => {
const error = await keyStore.get(new KeyReference('key'), new KeyStoreOptions({ publicKeyOnly: true }))
.catch((err) => {
throwCaught = true;
expect(err).toBe('A secret does not has a public key');
expect(err.message).toBe('A secret does not has a public key');
});
expect(error).toBeUndefined();
expect(throwCaught).toBe(true);
@ -128,7 +128,7 @@ describe('KeyStoreInMemory', () => {
const error = await keyStore.get(new KeyReference('key'), new KeyStoreOptions({ publicKeyOnly: true }))
.catch((err) => {
throwCaught = true;
expect(err).toBe('A secret does not has a public key');
expect(err.message).toBe('A secret does not has a public key');
});
expect(error).toBeUndefined();
expect(throwCaught).toBe(true);
@ -149,7 +149,7 @@ describe('KeyStoreInMemory', () => {
const signature = await keyStore.get(new KeyReference('key1'))
.catch((err) => {
throwCaught = true;
expect(err).toBe('key1 not found');
expect(err.message).toBe('key1 not found');
});
expect(signature).toBeUndefined();
expect(throwCaught).toBe(true);

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-keys",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"description": "Package for managing keys in the DID space.",
"repository": {
"type": "git",
@ -28,7 +28,7 @@
"jasmine-reporters": "^2.3.2",
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"preload-js": "^0.6.3",
"prettier": "^1.18.2",
"ts-node": "8.5.4",
@ -39,8 +39,8 @@
"@types/node": "12.12.16",
"base64url": "^3.0.1",
"clone": "2.1.2",
"node-jose": "1.0.0",
"webcrypto-core": "1.1.1"
"node-jose": "2.0.0",
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-plugin-cryptofactory-suites",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"description": "Package crypto factory suites.",
"repository": {
"type": "git",
@ -29,20 +29,19 @@
"jasmine-reporters": "^2.3.2",
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"prettier": "^1.18.2",
"ts-node": "8.5.4",
"tslint": "^5.20.0",
"typescript": "3.9.2"
},
"dependencies": {
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-elliptic": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-elliptic": "1.1.11-preview.7",
"base64url": "^3.0.1",
"clone": "2.1.2",
"node-jose": "1.0.0",
"webcrypto-core": "1.1.1"
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-plugin-elliptic",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/VerifiableCredentials-Crypto-SDK-Typescript.git"
@ -29,8 +29,8 @@
"elliptic": "6.5.3",
"minimalistic-crypto-utils": "1.0.1",
"sha.js": "^2.4.11",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.6",
"webcrypto-core": "1.1.1"
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.7",
"webcrypto-core": "1.1.8"
},
"devDependencies": {
"@types/jasmine": "2.8.16",
@ -42,7 +42,7 @@
"jasmine-ts": "0.3.0",
"ts-loader": "2.3.7",
"node-fetch": "2.4.1",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"source-map-support": "0.5.12",
"ts-node": "8.5.4",
"tslint": "^5.20.0",

Просмотреть файл

@ -22,7 +22,7 @@ export default class SubtleCryptoElliptic extends SubtleCrypto implements ISubtl
this.providers.set(new EllipticEdDsaProvider(crypto));
}
checkRequiredArguments(args: IArguments, size: number, methodName: string) {
checkRequiredArguments(args: any[], size: number, methodName: string) {
if (methodName !== 'generateKey' && args.length !== size) {
throw new TypeError(`Failed to execute '${methodName}' on 'SubtleCrypto': ${size} arguments required, but only ${args.length} present`);
}

Просмотреть файл

@ -1,7 +1,7 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-plugin-factory",
"description": "Factory Package for crypto plugins.",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/VerifiableCredentials-Crypto-SDK-Typescript.git"
@ -29,7 +29,7 @@
"jasmine-reporters": "^2.3.2",
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"prettier": "^1.18.2",
"ts-node": "8.5.4",
"tslint": "^5.20.0",
@ -37,12 +37,12 @@
},
"dependencies": {
"@azure/identity": "1.0.0",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-cryptofactory-suites": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-keyvault": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-cryptofactory-suites": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-keyvault": "1.1.11-preview.7",
"@types/node": "12.12.16",
"webcrypto-core": "1.1.1"
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-plugin-keyvault",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/VerifiableCredentials-Crypto-SDK-Typescript.git"
@ -35,7 +35,7 @@
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"ms-rest-azure": "2.6.0",
"nyc": "14.1.1",
"nyc": "15.1.0",
"prettier": "^1.18.2",
"source-map-support": "^0.5.9",
"ts-node": "8.5.4",
@ -47,13 +47,13 @@
"@azure/identity": "1.0.0",
"@azure/keyvault-keys": "4.0.2",
"@azure/keyvault-secrets": "4.0.2",
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-elliptic": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-elliptic": "1.1.11-preview.7",
"base64url": "3.0.1",
"clone": "2.1.2",
"webcrypto-core": "1.1.1"
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -28,7 +28,7 @@ export default class SubtleCryptoKeyVault extends SubtleCrypto implements ISubtl
* @param options Options used to define optional name
*/
public async generateKey(algorithm: Algorithm, extractable: boolean, keyUsages: KeyUsage[], options?: IKeyGenerationOptions) {
this.checkRequiredArguments(arguments, options ? 4 : 3, "generateKey");
//this.checkRequiredArguments(arguments, options ? 4 : 3, "generateKey");
const preparedAlgorithm = this.prepareAlgorithm(algorithm);
const provider: any = this.getProvider(preparedAlgorithm.name);
const result = await provider.generateKey({ ...preparedAlgorithm, name: provider.name }, extractable, keyUsages, options);

Просмотреть файл

@ -123,7 +123,7 @@ describe('KeyStoreKeyVault', () => {
expect(throwed).toBeTruthy();
} catch (err) {
throwed = true;
expect(err).toEqual(`${name} not found`)
expect(err.message).toEqual(`${name} not found`)
} finally {
await (<SecretClient>keyStore.getKeyStoreClient('secret')).beginDeleteSecret(name);

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-plugin",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"description": "Package for plugeable crypto based on subtle crypto.",
"repository": {
"type": "git",
@ -35,17 +35,16 @@
"typescript": "3.9.2"
},
"dependencies": {
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.6",
"@peculiar/webcrypto": "1.1.1",
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.7",
"@peculiar/webcrypto": "1.1.3",
"@types/node": "12.12.16",
"base64url": "^3.0.1",
"big-integer": "1.6.48",
"bn.js": "5.1.2",
"clone": "2.1.2",
"elliptic": "6.5.3",
"node-jose": "1.0.0",
"webcrypto-core": "1.1.1"
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -41,12 +41,12 @@ export default class JwtToken {
): Promise<JwsToken> {
if (typeof payload !== 'object') {
return Promise.reject(`JWT payload needs to be an object with a set of claims`);
return Promise.reject(new Error(`JWT payload needs to be an object with a set of claims`));
}
options = options || this.options;
if (!options) {
return Promise.reject(`JWT need to be defined`);
return Promise.reject(new Error(`JWT need to be defined`));
}
// Set the protected header

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-protocol-jose",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/VerifiableCredentials-Crypto-SDK-Typescript.git"
@ -32,21 +32,21 @@
"jasmine-reporters": "^2.3.2",
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"prettier": "^1.18.2",
"ts-node": "8.5.4",
"tslint": "^5.20.0",
"typescript": "3.9.2"
},
"dependencies": {
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-protocols-common": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-cryptofactory-suites": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-protocols-common": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-cryptofactory-suites": "1.1.11-preview.7",
"base64url": "^3.0.1",
"typescript-map": "0.0.7",
"webcrypto-core": "1.1.1"
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript-protocols-common",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/VerifiableCredentials-Crypto-SDK-Typescript.git"
@ -32,19 +32,19 @@
"jasmine-reporters": "^2.3.2",
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"prettier": "^1.18.2",
"ts-node": "8.5.4",
"tslint": "^5.20.0",
"typescript": "3.9.2"
},
"dependencies": {
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.7",
"base64url": "3.0.1",
"typescript-map": "0.0.7",
"webcrypto-core": "1.1.1"
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -21,6 +21,7 @@ export default class Crypto {
.useJwtProtocol()
.build(),
JSONLDProofs: new JoseBuilder(this)
.useJsonLdProofsProtocol('JcsEd25519Signature2020')
.build()
};
@ -35,6 +36,17 @@ export default class Crypto {
return this._builder;
}
/**
* Get the protocol used for signing
*/
public signingProtocol(type: string): IPayloadProtectionSigning {
return this.signingProtocols[type];
}
public get signingProtocols(): { [protocol: string]: IPayloadProtectionSigning } {
return this._signingProtocols;
}
public async generateKey(keyUse: KeyUse, type: string = 'signing'): Promise<Crypto> {
let keyReference: KeyReference;
let jwaAlgorithm: string;
@ -48,7 +60,7 @@ export default class Crypto {
jwaAlgorithm = this.builder.recoveryAlgorithm;
break;
default:
return Promise.reject(`Key generation type '${type}' not supported`);
return Promise.reject(new Error(`Key generation type '${type}' not supported`));
}
if (keyUse === KeyUse.Signature) {
@ -85,19 +97,8 @@ export default class Crypto {
return this;
} else {
return Promise.reject('not implemented');
return Promise.reject(new Error('not implemented'));
}
}
/**
* Get the protocol used for signing
*/
public signingProtocol(type: string): IPayloadProtectionSigning {
return this.signingProtocols[type];
}
public get signingProtocols(): { [protocol: string]: IPayloadProtectionSigning } {
return this._signingProtocols;
}
}

Просмотреть файл

@ -61,14 +61,14 @@ export default class Jose implements IPayloadProtectionSigning {
// Support json ld proofs
console.log('Support JSON LD proofs');
if (typeof payload === 'string' || payload instanceof Buffer) {
return Promise.reject(`Input to sign JSON LD must be an object`);
return Promise.reject(new Error(`Input to sign JSON LD must be an object`));
}
let suite: IJsonLinkedDataProofSuite;
try {
suite = this.builder.getLinkedDataProofSuite(this);
} catch (exception) {
return Promise.reject(exception.message);
return Promise.reject(new Error(exception.message));
}
this._jsonLdProofObject = await suite.sign(payload);
@ -89,7 +89,7 @@ export default class Jose implements IPayloadProtectionSigning {
if (this.isJwtProtocol()) {
if (typeof payload === 'string' || payload instanceof Buffer) {
return Promise.reject(`Input to sign JWT must be an object`);
return Promise.reject(new Error(`Input to sign JWT must be an object`));
}
// Add standardized properties
@ -140,7 +140,7 @@ export default class Jose implements IPayloadProtectionSigning {
const jwsOptions: IJwsSigningOptions = Jose.optionsFromBuilder(this.builder);
if (!this._token) {
return Promise.reject('Import a token by deserialize');
return Promise.reject(new Error('Import a token by deserialize'));
}
const result = await this._token.verify(validationKeys!, jwsOptions);
@ -156,12 +156,12 @@ export default class Jose implements IPayloadProtectionSigning {
return this._jsonLdProofSuite.serialize(this._jsonLdProofObject);
}
return Promise.reject(`No token to serialize`);
return Promise.reject(new Error(`No token to serialize`));
}
const protocolFormat: ProtectionFormat = Jose.getProtectionFormat(this.builder.serializationFormat);
if (!this._token) {
return Promise.reject(`No token to serialize`);
return Promise.reject(new Error(`No token to serialize`));
}
switch (protocolFormat) {
@ -170,7 +170,7 @@ export default class Jose implements IPayloadProtectionSigning {
case ProtectionFormat.JwsGeneralJson:
return Promise.resolve(this._token.serialize(protocolFormat)); ``
default:
return Promise.reject(`The serialization format '${this.builder.serializationFormat}' is not supported`);
return Promise.reject(new Error(`The serialization format '${this.builder.serializationFormat}' is not supported`));
}
}
@ -220,7 +220,7 @@ export default class Jose implements IPayloadProtectionSigning {
this._signaturePayload = this._token.payload;
return Promise.resolve(this);
default:
return Promise.reject(`Serialization format '${this.builder.serializationFormat}' is not supported`);
return Promise.reject(new Error(`Serialization format '${this.builder.serializationFormat}' is not supported`));
}
}

Просмотреть файл

@ -1,3 +1,4 @@
import uuid from 'uuid';
import { IPayloadProtection, IPayloadProtectionSigning } from 'verifiablecredentials-crypto-sdk-typescript-protocols-common';
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.

Просмотреть файл

@ -38,7 +38,7 @@ export default class JsonLinkedDataProofsBase implements IJsonLinkedDataProofSui
* @param payload to embed signature
*/
public async sign(_payload: object): Promise<any> {
return Promise.reject('sign not implemented');
return Promise.reject(new Error('sign not implemented'));
}
/**
@ -48,7 +48,7 @@ export default class JsonLinkedDataProofsBase implements IJsonLinkedDataProofSui
* @returns True if signature validated.
*/
public async verify(_validationKeys?: PublicKey[]): Promise<boolean> {
return Promise.reject('verify not implemented');
return Promise.reject(new Error('verify not implemented'));
}
/**
@ -56,14 +56,12 @@ export default class JsonLinkedDataProofsBase implements IJsonLinkedDataProofSui
* @param signedPayload The payload to serialize
*/
public serialize(signedPayload?: any): Promise<string> {
return new Promise((resolve, reject) => {
this._credential = signedPayload ? signedPayload : this._credential;
if (!this._credential) {
return reject('No credential to serialize');
return Promise.reject(new Error('No credential to serialize'));
}
resolve(JSON.stringify(this._credential));
});
return Promise.resolve(JSON.stringify(this._credential));
}
/**
@ -75,7 +73,7 @@ export default class JsonLinkedDataProofsBase implements IJsonLinkedDataProofSui
this._credential = JSON.parse(credential);
return Promise.resolve(this._credential);
} catch (exeption) {
return Promise.reject('Could not parse JSON LD token');
return Promise.reject(new Error('Could not parse JSON LD token'));
}
}
}

Просмотреть файл

@ -43,11 +43,11 @@ export default class SuiteJcsEd25519Signature2020 extends JsonLinkedDataProofsBa
public async sign(payload: any): Promise<any> {
if (!payload) {
return Promise.reject('JSON LD proof input is undefined');
return Promise.reject(new Error('JSON LD proof input is undefined'));
}
if (typeof payload !== 'object') {
return Promise.reject('JSON LD proof input should be an object');
return Promise.reject(new Error('JSON LD proof input should be an object'));
}
const crypto = this._signer.builder.crypto;
@ -75,7 +75,7 @@ export default class SuiteJcsEd25519Signature2020 extends JsonLinkedDataProofsBa
public async verify(validationKeys?: PublicKey[], signedPayload?: any): Promise<boolean> {
this._credential = signedPayload ? signedPayload : this._credential;
if (!this._credential) {
return Promise.reject('Import a credential by deserialize');
return Promise.reject(new Error('Import a credential by deserialize'));
}
@ -83,7 +83,7 @@ export default class SuiteJcsEd25519Signature2020 extends JsonLinkedDataProofsBa
const proof = this._credential.proof;
if (!proof) {
return Promise.reject('No proof to validate in signedPayload');
return Promise.reject(new Error('No proof to validate in signedPayload'));
}
const payload = clone(this._credential);
@ -98,7 +98,7 @@ export default class SuiteJcsEd25519Signature2020 extends JsonLinkedDataProofsBa
const signatureValue = proof.signatureValue;
if (!signatureValue) {
return Promise.reject('Proof does not contain the signatureValue');
return Promise.reject(new Error('Proof does not contain the signatureValue'));
}
const signature = bs58.decode(signatureValue);

Просмотреть файл

@ -1,6 +1,6 @@
{
"name": "verifiablecredentials-crypto-sdk-typescript",
"version": "1.1.11-preview.6",
"version": "1.1.11-preview.7",
"repository": {
"type": "git",
"url": "https://github.com/microsoft/VerifiableCredentials-Crypto-SDK-Typescript.git"
@ -33,7 +33,7 @@
"jasmine-reporters": "^2.3.2",
"jasmine-spec-reporter": "^6.0.0",
"jasmine-ts": "^0.3.0",
"nyc": "14.1.1",
"nyc": "^15.1.0",
"prettier": "^1.18.2",
"ts-node": "8.5.4",
"tslint": "^5.20.0",
@ -52,16 +52,16 @@
"jsonld": "2.0.2",
"typescript-map": "0.0.7",
"uuid": "^8.3.1",
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-cryptofactory-suites": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-elliptic": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-factory": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-plugin-keyvault": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-protocol-jose": "1.1.11-preview.6",
"verifiablecredentials-crypto-sdk-typescript-protocols-common": "1.1.11-preview.6",
"webcrypto-core": "1.1.1"
"verifiablecredentials-crypto-sdk-typescript-keys": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-keystore": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-cryptofactory-suites": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-elliptic": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-factory": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-plugin-keyvault": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-protocol-jose": "1.1.11-preview.7",
"verifiablecredentials-crypto-sdk-typescript-protocols-common": "1.1.11-preview.7",
"webcrypto-core": "1.1.8"
},
"nyc": {
"extension": [

Просмотреть файл

@ -34,7 +34,7 @@ describe('Crypto', () => {
let throwed = false;
await crypto.generateKey(KeyUse.Signature, 'test')
.catch((exception) => {
expect(exception).toEqual(`Key generation type 'test' not supported`);
expect(exception.message).toEqual(`Key generation type 'test' not supported`);
throwed = true;
})
expect(throwed).toBeTruthy();
@ -42,7 +42,7 @@ describe('Crypto', () => {
try {
await crypto.generateKey(KeyUse.Encryption);
} catch (exception) {
expect(exception).toEqual('not implemented');
expect(exception.message).toEqual('not implemented');
}
});
});

Просмотреть файл

@ -34,7 +34,7 @@ describe('SuiteJcsEd25519Signature2020', () => {
await suite.verify();
fail('Should throw ' + 'Import a credential by deserialize');
} catch (exception) {
expect(exception).toEqual('Import a credential by deserialize');
expect(exception.message).toEqual('Import a credential by deserialize');
}
let signedPayload = await suite.sign(payload);
@ -65,14 +65,14 @@ describe('SuiteJcsEd25519Signature2020', () => {
await suite.sign(<any>undefined);
fail('Should throw ' + 'JSON LD proof input is undefined');
} catch (exception) {
expect(exception).toEqual('JSON LD proof input is undefined');
expect(exception.message).toEqual('JSON LD proof input is undefined');
}
try {
await suite.sign(suite.sign(<any>' '));
fail('Should throw ' + 'JSON LD proof input should be an object');
} catch (exception) {
expect(exception).toEqual('JSON LD proof input should be an object');
expect(exception.message).toEqual('JSON LD proof input should be an object');
}
try {
@ -81,7 +81,7 @@ describe('SuiteJcsEd25519Signature2020', () => {
await suite.verify([key]);
fail('Should throw ' + 'No proof to validate in signedPayload');
} catch (exception) {
expect(exception).toEqual('No proof to validate in signedPayload');
expect(exception.message).toEqual('No proof to validate in signedPayload');
}
try {
@ -90,7 +90,7 @@ describe('SuiteJcsEd25519Signature2020', () => {
await suite.verify([key]);
fail('Should throw ' + 'Proof does not contain the signatureValue');
} catch (exception) {
expect(exception).toEqual('Proof does not contain the signatureValue');
expect(exception.message).toEqual('Proof does not contain the signatureValue');
}
});

Просмотреть файл

@ -117,7 +117,7 @@ describe('Jose', () => {
await jose.verify([jwkPublic]);
fail('no token should fail');
} catch (ex) {
expect(ex).toEqual('Import a token by deserialize');
expect(ex.message).toEqual('Import a token by deserialize');
}
// serialize has no token
@ -126,7 +126,7 @@ describe('Jose', () => {
await jose.serialize();
fail('no token to serialize should fail');
} catch (ex) {
expect(ex).toEqual('No token to serialize');
expect(ex.message).toEqual('No token to serialize');
}
}
});
@ -167,7 +167,7 @@ describe('Jose', () => {
await jose.sign(Buffer.from(JSON.stringify(payload)));
fail('Should have throwed exception');
} catch (exception) {
expect(exception).toEqual('Input to sign JWT must be an object');
expect(exception.message).toEqual('Input to sign JWT must be an object');
}
// Negative cases
@ -176,7 +176,7 @@ describe('Jose', () => {
await jose.deserialize(serialized);
fail(`Serialization format 'JwsCompactJson' is not supported should fail`);
} catch (ex) {
expect(ex).toEqual(`Serialization format 'JwsCompactJson' is not supported`);
expect(ex.message).toEqual(`Serialization format 'JwsCompactJson' is not supported`);
}
});

Просмотреть файл

@ -25,9 +25,11 @@ describe('JSONLD proofs', () => {
crypto = await crypto.generateKey(KeyUse.Signature, 'recovery');
crypto.builder.useDid(await new LongFormDid(crypto).serialize());
let jsonLdProofBuilder = new JoseBuilder(crypto)
.useJsonLdProofsProtocol('JcsEd25519Signature2020')
.useJsonLdProofsProtocol('JcsEd25519Signature2020')
let jsonLdProof: IPayloadProtectionSigning = jsonLdProofBuilder.build();
expect(jsonLdProofBuilder.isJsonLdProofsProtocol()).toBeTruthy();
const doc = {
'@context': [
'https://www.w3.org/2018/credentials/v1',
@ -56,23 +58,23 @@ describe('JSONLD proofs', () => {
spyOn(Jose, 'payloadIsJsonLdProof').and.returnValue(['xxx', 'JcsEd25519Signature2020']);
await jsonLdProof.deserialize(serialized + 'kkk');
} catch (exception) {
expect(exception).toEqual('Could not parse JSON LD token');
expect(exception.message).toEqual('Could not parse JSON LD token');
}
try {
await jsonLdProof.serialize();
} catch (exception) {
expect(exception).toEqual('No token to serialize');
expect(exception.message).toEqual('No token to serialize');
}
try {
await jsonLdProof.sign(Buffer.from('{}'));
} catch (exception) {
expect(exception).toEqual('Input to sign JSON LD must be an object');
expect(exception.message).toEqual('Input to sign JSON LD must be an object');
}
try {
spyOn(jsonLdProofBuilder, 'getLinkedDataProofSuite').and.throwError('some error');
await jsonLdProof.sign(doc);
} catch (exception) {
expect(exception).toEqual('some error');
expect(exception.message).toEqual('some error');
}
});

Просмотреть файл

@ -19,28 +19,28 @@ describe('JsonLinkedDataProofsBase', () => {
await jsonLdBase.sign({});
fail('should throw ' + 'sign not implemented')
} catch (error) {
expect(error).toEqual('sign not implemented')
expect(error.message).toEqual('sign not implemented')
}
try {
await jsonLdBase.verify([]);
fail('should throw ' + 'verify not implemented')
} catch (error) {
expect(error).toEqual('verify not implemented')
expect(error.message).toEqual('verify not implemented')
}
try {
await jsonLdBase.serialize();
fail('should throw ' + 'No credential to serialize')
} catch (error) {
expect(error).toEqual('No credential to serialize')
expect(error.message).toEqual('No credential to serialize')
}
try {
await jsonLdBase.deserialize('xxx');
fail('should throw ' + 'Could not parse JSON LD token')
} catch (error) {
expect(error).toEqual('Could not parse JSON LD token')
expect(error.message).toEqual('Could not parse JSON LD token')
}
});
});