Created
October 5, 2020 14:01
-
-
Save Carlos-Augusto/214bdbf4b8cf7137627ff542c99dc973 to your computer and use it in GitHub Desktop.
Dart PointyCastle Experiment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:experiment/Unpacker.dart'; | |
import 'package:pointycastle/export.dart' hide ECFieldElement, ECPoint; | |
import 'package:pointycastle/ecc/ecc_fp.dart'; | |
import 'dart:convert'; | |
/// { | |
/// "chain":"9uKhoi3zz9gCa6HGW/e6yqCSZIK1aA24aWokmE9WCEYxmhGmRAP6VadirVR1P/EJQThRF9HStAOLa+QJLiuaFg==", | |
/// "hint":0, | |
/// "payload":"1ENYKuJyh2ab/a7ozIyEHLFdVX+ERFIKjU5GRjgTaI4=", | |
/// "signature":"09m6U3mzT0G6i4wQiLOXd7uKdUyEia4BEtgHj9wKMQH7HLlIHdTQmoanSjqirBjU68KhcpqjGG4/7UdgKa8lfA==", | |
/// "signed":"liPEELGTockiA0KJq5UQnUrg0nPEQPbioaIt88/YAmuhxlv3usqgkmSCtWgNuGlqJJhPVghGMZoRpkQD+lWnYq1UdT/xCUE4URfR0rQDi2vkCS4rmhYAxCDUQ1gq4nKHZpv9rujMjIQcsV1Vf4REUgqNTkZGOBNojg==", | |
/// "uuid":"b193a1c9-2203-4289-ab95-109d4ae0d273", | |
/// "version":35 | |
/// } | |
void main(List<String> arguments) { | |
var uppAsBase64 = | |
'liPEELGTockiA0KJq5UQnUrg0nPEQPbioaIt88/YAmuhxlv3usqgkmSCtWgNuGlqJJhPVghGMZoRpkQD+lWnYq1UdT/xCUE4URfR0rQDi2vkCS4rmhYAxCDUQ1gq4nKHZpv9rujMjIQcsV1Vf4REUgqNTkZGOBNojsRA09m6U3mzT0G6i4wQiLOXd7uKdUyEia4BEtgHj9wKMQH7HLlIHdTQmoanSjqirBjU68KhcpqjGG4/7UdgKa8lfA=='; | |
var bytes = base64.decode(uppAsBase64); | |
var unpacker = Unpacker.fromList(bytes); | |
var _ = unpacker.unpackListIndexed(unpacker.unpackListLength() - 1); | |
var bytesConsumed = unpacker.bytesConsumed(); | |
var signature = unpacker.unpackBinary(); | |
var signatureB = base64.encode(signature); | |
var signed = bytes.sublist(0, bytesConsumed); | |
var signedB = base64.encode(signed); | |
var expectedSigned = | |
'liPEELGTockiA0KJq5UQnUrg0nPEQPbioaIt88/YAmuhxlv3usqgkmSCtWgNuGlqJJhPVghGMZoRpkQD+lWnYq1UdT/xCUE4URfR0rQDi2vkCS4rmhYAxCDUQ1gq4nKHZpv9rujMjIQcsV1Vf4REUgqNTkZGOBNojg=='; | |
var sameSignedData = signedB == expectedSigned; | |
var expectedSignature = | |
'09m6U3mzT0G6i4wQiLOXd7uKdUyEia4BEtgHj9wKMQH7HLlIHdTQmoanSjqirBjU68KhcpqjGG4/7UdgKa8lfA=='; | |
var sameSignatures = signatureB == expectedSignature; | |
print('total_bytes=' + bytes.length.toString()); | |
print('total_bytes_signed=' + signed.length.toString()); | |
print('signed =' + signedB); | |
print('signature=' + signatureB); | |
print('same_signed=' + sameSignedData.toString()); | |
print('same_signature=' + sameSignatures.toString()); | |
var key = base64.decode('AJCfwa3Tfu7ydJrNdJcahTpLMi+Tkk3VTCy9u9AmbY10osu4krJibZ0CUZ0kqUnawrIIJZEYhpEFgW09j0Lp9A=='); | |
var keyLength = key.length; | |
var keyLengthHalf = keyLength ~/ 2; | |
//ecdsa-p256v1 | |
var a = ECCurve_prime256v1(); | |
var params = ECDomainParametersImpl(a.domainName, a.curve, a.G, a.n); | |
var x1b = key.sublist(0, keyLengthHalf); | |
var y1b = key.sublist(keyLengthHalf, keyLength); | |
// var point = params.curve.createPoint(x1b, y1b); | |
// var k1 = ECPublicKey(point, params); | |
///// | |
var x = BigInt.parse("255528576572964601323545154709225394244601557630261293798747932549422935437"); | |
var y = BigInt.parse("52755925690740562257257088612280742564365253582741057443848848827679433222644"); | |
var point2 = params.curve.createPoint(x, y); | |
var k2 = ECPublicKey(point2, params); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment