Skip to content

Commit 155117e

Browse files
iamcarbonabergs
authored andcommitted
Use AsnWriter in EcDsaSigFromSig
1 parent 3fafe8a commit 155117e

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

Test/Fido2Tests.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Buffers.Binary;
33
using System.Collections.Generic;
4+
using System.Formats.Asn1;
45
using System.IO;
56
using System.Linq;
67
using System.Security.Cryptography;
@@ -718,16 +719,23 @@ public void TestAuthenticatorData()
718719
Assert.True(ad.Extensions.GetBytes().SequenceEqual(extBytes));
719720
}
720721

721-
internal static byte[] EcDsaSigFromSig(byte[] sig, int keySize)
722+
internal static byte[] EcDsaSigFromSig(ReadOnlySpan<byte> sig, int keySize)
722723
{
723724
var coefficientSize = (int)Math.Ceiling((decimal)keySize / 8);
724-
var R = sig.Take(coefficientSize);
725-
var S = sig.TakeLast(coefficientSize);
725+
var r = sig.Slice(0, coefficientSize);
726+
var s = sig.Slice(sig.Length - coefficientSize);
726727

727-
var intR = AsnElt.MakeInteger(R.ToArray());
728-
var intS = AsnElt.MakeInteger(S.ToArray());
729-
var ecdsasig = AsnElt.Make(AsnElt.SEQUENCE, new AsnElt[] { intR, intS });
730-
return ecdsasig.Encode();
728+
var writer = new AsnWriter(AsnEncodingRules.BER);
729+
730+
ReadOnlySpan<byte> zero = new byte[1] { 0 };
731+
732+
using (writer.PushSequence())
733+
{
734+
writer.WriteIntegerUnsigned(r.TrimStart(zero));
735+
writer.WriteIntegerUnsigned(s.TrimStart(zero));
736+
}
737+
738+
return writer.Encode();
731739
}
732740

733741
[Fact]

0 commit comments

Comments
 (0)