示例#1
0
        internal EcdsaCertificate(EVP_PKEY privateKey, X509 certificate, byte[] derCertData, string altNameString, byte[][] chain)
        {
            _certData      = derCertData;
            _key           = privateKey;
            _certificate   = certificate;
            _altNameString = altNameString;
            _chain         = chain ?? new byte[0][];

            _ecKey = EVP_PKEY_get0_EC_KEY(_key);
            var group     = EC_KEY_get0_group(_ecKey);
            var curveName = EC_GROUP_get_curve_name(group);

            _curveName = OBJ_nid2ln(curveName);
            switch (_curveName)
            {
            case "secp256r1":
                _scheme   = SignatureScheme.ecdsa_secp256r1_sha256;
                _hashType = HashType.SHA256;
                break;

            case "secp384r1":
                _scheme   = SignatureScheme.ecdsa_secp384r1_sha384;
                _hashType = HashType.SHA384;
                break;

            case "secp521r1":
                _scheme   = SignatureScheme.ecdsa_secp521r1_sha512;
                _hashType = HashType.SHA512;
                break;

            default:
                ExceptionHelper.ThrowException(new ArgumentException());
                break;
            }
        }
示例#2
0
 internal static extern int ECDSA_size(EC_KEY eckey);
示例#3
0
 private static extern int EVP_PKEY_assign(EVP_PKEY pkey, EVP_PKEY_type keyType, EC_KEY key);
示例#4
0
        public static void EVP_PKEY_assign_EC_KEY(EVP_PKEY pkey, EC_KEY key)
        {
            var result = EVP_PKEY_assign(pkey, EVP_PKEY_type.EVP_PKEY_EC, key);

            ThrowOnErrorReturnCode(result);
        }
 internal static extern int EC_KEY_set_public_key(EC_KEY key, EC_POINT point);
示例#6
0
 internal static extern EC_GROUP EC_KEY_get0_group(EC_KEY group);
示例#7
0
 public static extern EC_GROUP EC_KEY_get0_group(EC_KEY group);
 internal static extern int EVP_PKEY_set1_EC_KEY(EVP_PKEY pkey, EC_KEY key);
示例#9
0
 internal static extern unsafe int ECDSA_sign(int type, void *dgst, int dgstlen, void *sig, ref int siglen, EC_KEY eckey);
 internal static int EVP_PKEY_assign_EC_KEY(EVP_PKEY pkey, EC_KEY key) => EVP_PKEY_assign(pkey, EVP_PKEY_type.EVP_PKEY_EC, key.Ptr);
 internal static extern EC_POINT EC_KEY_get0_public_key(EC_KEY key);
示例#12
0
        public static void EC_KEY_set_public_key(EC_KEY key, EC_POINT point)
        {
            var result = Internal_EC_KEY_set_public_key(key, point);

            ThrowOnErrorReturnCode(result);
        }
示例#13
0
 private static extern int Internal_EC_KEY_set_public_key(EC_KEY key, EC_POINT point);