import { Address } from '../src/crypto'; import { PrivateKey } from '../src/crypto/PrivateKey'; import { Signature } from '../src/crypto/Signature'; import { str2hexstr } from '../src/utils'; import { SignatureScheme } from './../src/crypto/SignatureScheme'; describe('test sign and verify with ECDSAwithSHA256', () => { test('test sign and verify', () => { const pri = new PrivateKey('0fdbd5d046997da9959b1931c727c96d83dff19e8ec0244952c1e72d1cdb5bf4'); const content = 'helloworld'; const msg = str2hexstr(content); const signature = pri.sign(msg, SignatureScheme.ECDSAwithSHA256); console.log('hex: ' + signature.serializeHex()); console.log('pk: ' + pri.getPublicKey().key); const pub = pri.getPublicKey(); const result = pub.verify(msg, signature); expect(result).toBeTruthy(); }); test('test verify signature generated by Java SDK', () => { // tslint:disable-next-line:max-line-length const content = 'deviceCode=device79dd02d40eb6422bb1f7924c2a6b06af&nonce=1042961893&ontId=did:ont:AVRKWDig5TorzjCS5xphjgMnmdsT7KgsGD×tamp=1535970123'; const hexStr = str2hexstr(content); const pri = new PrivateKey('0fdbd5d046997da9959b1931c727c96d83dff19e8ec0244952c1e72d1cdb5bf4'); const pub = pri.getPublicKey(); // Signature from Java sdk in base64 // tslint:disable-next-line:max-line-length const msg = new Buffer('AYUi0ZgY7ZGN9Msr42prWjsghbcQ6yGaRL34RSUwQr949JMXuhrbjWCYIO3UV1FbFbNKG0YZByYHkffu800pNMw=', 'base64').toString('hex'); const sig = Signature.deserializeHex(msg); const result = pub.verify(hexStr, sig); expect(result).toBeTruthy(); }); test('tt', () => { const pri4 = new PrivateKey('7c47df9664e7db85c1308c080f398400cb24283f5d922e76b478b5429e821b98'); const pub4 = pri4.getPublicKey(); const address = Address.fromPubKey(pub4).toBase58(); const ontid4 = 'did:ont:' + address; console.log('did: ' + ontid4); const req = { timestamp: 1535336885, ontId: address, nonce: 45348391, deviceCode: 'deviceCOde', sig: '' }; const msg = 'deviceCode=' + req.deviceCode + '&nonce=' + req.nonce + '&ontId=' + req.ontId + '×tamp=' + req.timestamp; const hexMsg = str2hexstr(msg); const sig = pri4.sign(hexMsg).serializeHex(); req.sig = sig; console.log(req); }); });