Beispiel #1
0
        /// <summary>
        /// Determine the curve name from an EC key blob
        /// </summary>
        /// <param name="magic">Magic number</param>
        /// <returns>Curve name</returns>
        private static string getCurveName(int magic, CurveNamespace nameSpace)
        {
            switch (magic)
            {
            case (int)KeyBlobMagicNumber.ECDHPublicP256:
            case (int)KeyBlobMagicNumber.ECDsaPublicP256:
                switch (nameSpace)
                {
                case CurveNamespace.X962:
                    return("prime256v1");

                case CurveNamespace.NIST:
                    return("P-256");

                case CurveNamespace.SEC:
                    return("SecP256r1");
                }
                break;

            case (int)KeyBlobMagicNumber.ECDHPublicP384:
            case (int)KeyBlobMagicNumber.ECDsaPublicP384:
                switch (nameSpace)
                {
                case CurveNamespace.X962:                   // These aren't in the BC list
                    return("prime384v1");

                case CurveNamespace.NIST:
                    return("P-384");

                case CurveNamespace.SEC:
                    return("SecP384r1");
                }
                break;

            case (int)KeyBlobMagicNumber.ECDHPublicP521:
            case (int)KeyBlobMagicNumber.ECDsaPublicP521:
                switch (nameSpace)
                {
                case CurveNamespace.X962:               // These aren't in the BC list
                    return("prime521v1");

                case CurveNamespace.NIST:
                    return("P-521");

                case CurveNamespace.SEC:
                    return("SecP521r1");
                }
                break;
            }
            return("");
        }
Beispiel #2
0
        /// <summary>
        /// Get the curve from an EC key blob
        /// </summary>
        /// <param name="magic">Magic number</param>
        /// <returns>Curve </returns>
        private static X9ECParameters getCurve(int magic, CurveNamespace nameSpace)
        {
            switch (magic)
            {
            case (int)KeyBlobMagicNumber.ECDHPublicP256:
            case (int)KeyBlobMagicNumber.ECDsaPublicP256:
                switch (nameSpace)
                {
                case CurveNamespace.X962:
                    return(X962NamedCurves.GetByName("prime256v1"));

                case CurveNamespace.NIST:
                    return(NistNamedCurves.GetByName("P-256"));

                case CurveNamespace.SEC:
                    return(SecNamedCurves.GetByName("SecP256r1"));
                }
                break;

            case (int)KeyBlobMagicNumber.ECDHPublicP384:
            case (int)KeyBlobMagicNumber.ECDsaPublicP384:
                switch (nameSpace)
                {
                case CurveNamespace.X962:                   // These aren't in the BC list
                    return(X962NamedCurves.GetByName("prime384v1"));

                case CurveNamespace.NIST:
                    return(NistNamedCurves.GetByName("P-384"));

                case CurveNamespace.SEC:
                    return(SecNamedCurves.GetByName("SecP384r1"));
                }
                break;

            case (int)KeyBlobMagicNumber.ECDHPublicP521:
            case (int)KeyBlobMagicNumber.ECDsaPublicP521:
                switch (nameSpace)
                {
                case CurveNamespace.X962:               // These aren't in the BC list
                    return(X962NamedCurves.GetByName("prime521v1"));

                case CurveNamespace.NIST:
                    return(NistNamedCurves.GetByName("P-521"));

                case CurveNamespace.SEC:
                    return(SecNamedCurves.GetByName("SecP521r1"));
                }
                break;
            }
            return(null);
        }