Improve ECSignature schema to check signature parameters and that v is 27 or 28

This commit is contained in:
Fabio Berger 2017-05-25 12:06:38 +02:00
parent 0b8ddc1ee1
commit fa559377c8
2 changed files with 15 additions and 4 deletions

View File

@ -1,9 +1,19 @@
export const ECSignatureParameter = {
id: '/ECSignatureParameter',
type: 'string',
pattern: '^0[xX][0-9A-Fa-f]{64}$',
};
export const ECSignatureSchema = { export const ECSignatureSchema = {
id: '/ECSignature', id: '/ECSignature',
properties: { properties: {
v: {type: 'number'}, v: {
r: {type: 'string'}, type: 'number',
s: {type: 'string'}, minimum: 27,
maximum: 28,
},
r: {$ref: '/ECSignatureParameter'},
s: {$ref: '/ECSignatureParameter'},
}, },
required: ['v', 'r', 's'], required: ['v', 'r', 's'],
type: 'object', type: 'object',

View File

@ -1,10 +1,11 @@
import {Validator as V, ValidatorResult} from 'jsonschema'; import {Validator as V, ValidatorResult} from 'jsonschema';
import {ECSignatureSchema} from '../schemas/ec_signature_schema'; import {ECSignatureSchema, ECSignatureParameter} from '../schemas/ec_signature_schema';
export class SchemaValidator { export class SchemaValidator {
private v: V; private v: V;
constructor() { constructor() {
this.v = new V(); this.v = new V();
this.v.addSchema(ECSignatureParameter, ECSignatureParameter.id);
this.v.addSchema(ECSignatureSchema, ECSignatureSchema.id); this.v.addSchema(ECSignatureSchema, ECSignatureSchema.id);
} }
public validate(instance: object, schema: Schema): ValidatorResult { public validate(instance: object, schema: Schema): ValidatorResult {