public static void TestKeySizeCreateKey() { using (ECDsa ec = ECDsaFactory.Create(ECCurve.NamedCurves.nistP256)) { // Ensure the handle is created Assert.Equal(256, ec.KeySize); ec.Exercise(); ec.KeySize = 521; //nistP521 Assert.Equal(521, ec.KeySize); ec.Exercise(); Assert.ThrowsAny <CryptographicException>(() => ec.KeySize = 9999); } }
private static void VerifyExplicitCurve(ECParameters parameters, ECDsa ec, CurveDef curveDef) { Assert.True(parameters.Curve.IsExplicit); ECCurve curve = parameters.Curve; Assert.True(curveDef.IsCurveTypeEqual(curve.CurveType)); Assert.True( curveDef.IncludePrivate && parameters.D.Length > 0 || !curveDef.IncludePrivate && parameters.D == null); Assert.Equal(curveDef.KeySize, ec.KeySize); Assert.Equal(curve.A.Length, parameters.Q.X.Length); Assert.Equal(curve.A.Length, parameters.Q.Y.Length); Assert.Equal(curve.A.Length, curve.B.Length); Assert.Equal(curve.A.Length, curve.G.X.Length); Assert.Equal(curve.A.Length, curve.G.Y.Length); Assert.True(curve.Seed == null || curve.Seed.Length > 0); Assert.True(curve.Order == null || curve.Order.Length > 0); if (curve.IsPrime) { Assert.Equal(curve.A.Length, curve.Prime.Length); } if (curveDef.IncludePrivate) { ec.Exercise(); } // Ensure the key doesn't get regenerated after export ECParameters paramSecondExport = ec.ExportExplicitParameters(curveDef.IncludePrivate); AssertEqual(parameters, paramSecondExport); }
private static void VerifyNamedCurve(ECParameters parameters, ECDsa ec, int keySize, bool includePrivate) { parameters.Validate(); Assert.True(parameters.Curve.IsNamed); Assert.Equal(keySize, ec.KeySize); Assert.True( includePrivate && parameters.D.Length > 0 || !includePrivate && parameters.D == null); if (includePrivate) { ec.Exercise(); } // Ensure the key doesn't get regenerated after export ECParameters paramSecondExport = ec.ExportParameters(includePrivate); paramSecondExport.Validate(); AssertEqual(parameters, paramSecondExport); }
public static void ImportExplicitWithHashButNoSeed() { if (!ECDsaFactory.ExplicitCurvesSupported) { return; } using (ECDsa ec = ECDsaFactory.Create()) { ECCurve curve = EccTestData.GetNistP256ExplicitCurve(); Assert.NotNull(curve.Hash); ec.GenerateKey(curve); ECParameters parameters = ec.ExportExplicitParameters(true); Assert.NotNull(parameters.Curve.Hash); parameters.Curve.Seed = null; ec.ImportParameters(parameters); ec.Exercise(); } }
private static void VerifyExplicitCurve(ECParameters parameters, ECDsa ec, CurveDef curveDef) { Assert.True(parameters.Curve.IsExplicit); ECCurve curve = parameters.Curve; Assert.True(curveDef.IsCurveTypeEqual(curve.CurveType)); Assert.True( curveDef.IncludePrivate && parameters.D.Length > 0 || !curveDef.IncludePrivate && parameters.D == null); Assert.Equal(curveDef.KeySize, ec.KeySize); Assert.Equal(curve.A.Length, parameters.Q.X.Length); Assert.Equal(curve.A.Length, parameters.Q.Y.Length); Assert.Equal(curve.A.Length, curve.B.Length); Assert.Equal(curve.A.Length, curve.G.X.Length); Assert.Equal(curve.A.Length, curve.G.Y.Length); Assert.True(curve.Seed == null || curve.Seed.Length > 0); Assert.True(curve.Order == null || curve.Order.Length > 0); if (curve.IsPrime) { Assert.Equal(curve.A.Length,curve.Prime.Length); } if (curveDef.IncludePrivate) ec.Exercise(); // Ensure the key doesn't get regenerated after export ECParameters paramSecondExport = ec.ExportExplicitParameters(curveDef.IncludePrivate); AssertEqual(parameters, paramSecondExport); }
private static void VerifyNamedCurve(ECParameters parameters, ECDsa ec, int keySize, bool includePrivate) { parameters.Validate(); Assert.True(parameters.Curve.IsNamed); Assert.Equal(keySize, ec.KeySize); Assert.True( includePrivate && parameters.D.Length > 0 || !includePrivate && parameters.D == null); if (includePrivate) ec.Exercise(); // Ensure the key doesn't get regenerated after export ECParameters paramSecondExport = ec.ExportParameters(includePrivate); paramSecondExport.Validate(); AssertEqual(parameters, paramSecondExport); }