public static void CoseKeyHelpers_ECDsaExportCosePublicKey_HappyPath(string expectedHexEncoding, string hexQx, string hexQy, string?hashAlgorithmName, string curveFriendlyName) { byte[] expectedEncoding = expectedHexEncoding.HexToByteArray(); var hashAlgName = hashAlgorithmName != null ? new HashAlgorithmName(hashAlgorithmName) : (HashAlgorithmName?)null; var ecParameters = new ECParameters() { Curve = ECCurve.CreateFromFriendlyName(curveFriendlyName), Q = new ECPoint() { X = hexQx.HexToByteArray(), Y = hexQy.HexToByteArray() }, }; using ECDsa ecDsa = ECDsa.Create(ecParameters); byte[] coseKeyEncoding = CborCoseKeyHelpers.ExportECDsaPublicKey(ecDsa, hashAlgName); AssertHelper.HexEqual(expectedEncoding, coseKeyEncoding); }
public static void CoseKeyHelpers_ECDsaParseCosePublicKey_HappyPath(string hexEncoding, string hexExpectedQx, string hexExpectedQy, string?expectedHashAlgorithmName, string curveFriendlyName) { ECPoint q = new ECPoint() { X = hexExpectedQx.HexToByteArray(), Y = hexExpectedQy.HexToByteArray() }; (ECDsa ecDsa, HashAlgorithmName? name) = CborCoseKeyHelpers.ParseECDsaPublicKey(hexEncoding.HexToByteArray()); using ECDsa _ = ecDsa; ECParameters ecParams = ecDsa.ExportParameters(includePrivateParameters: false); string?expectedCurveFriendlyName = NormalizeCurveForPlatform(curveFriendlyName).Oid.FriendlyName; Assert.True(ecParams.Curve.IsNamed); Assert.Equal(expectedCurveFriendlyName, ecParams.Curve.Oid.FriendlyName); Assert.Equal(q.X, ecParams.Q.X); Assert.Equal(q.Y, ecParams.Q.Y); Assert.Equal(expectedHashAlgorithmName, name?.Name);