public void CanParseUnblindedSignature() { var requester = new Requester(); using var r = new Key(Encoders.Hex.DecodeData("31E151628AED2A6ABF7155809CF4F3C762E7160F38B4DA56B784D9045190CFA0")); using var key = new Key(Encoders.Hex.DecodeData("B7E151628AED2A6ABF7158809CF4F3C762E7160F38B4DA56A784D9045190CFEF")); var signer = new Signer(key); var message = new uint256(Encoders.Hex.DecodeData("243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89"), false); var blindedMessage = requester.BlindMessage(message, r.PubKey, key.PubKey); var blindSignature = signer.Sign(blindedMessage, r); var unblindedSignature = requester.UnblindSignature(blindSignature); var str = unblindedSignature.ToString(); Assert.True(UnblindedSignature.TryParse(str, out var unblindedSignature2)); Assert.Equal(unblindedSignature.C, unblindedSignature2 !.C); Assert.Equal(unblindedSignature.S, unblindedSignature2.S); str += "o"; Assert.False(UnblindedSignature.TryParse(str, out _)); Assert.Throws <FormatException>(() => UnblindedSignature.Parse(str)); byte[] overflow = new byte[64]; overflow.AsSpan().Fill(255); Assert.False(UnblindedSignature.TryParse(overflow, out _)); Assert.Throws <FormatException>(() => UnblindedSignature.Parse(overflow)); }
/// <inheritdoc /> public override object ReadJson(JsonReader reader, Type?objectType, object?existingValue, JsonSerializer?serializer) { JArray arr = JArray.Load(reader); var carr = ToFixedLengthByteArray(StringToBigInteger(arr[0].Value <string>())); var sarr = ToFixedLengthByteArray(StringToBigInteger(arr[1].Value <string>())); var signatureBytes = carr.Concat(sarr).ToArray(); var signature = ByteHelpers.ToHex(signatureBytes); var sig = UnblindedSignature.Parse(signature); return(sig); }