diff -r b23c42c0c9d6 usr/src/lib/libkmf/include/kmftypes.h
--- a/usr/src/lib/libkmf/include/kmftypes.h	Fri Jan 22 21:39:01 2010 -0800
+++ b/usr/src/lib/libkmf/include/kmftypes.h	Mon Jan 25 14:48:38 2010 -0500
@@ -122,10 +122,18 @@
 	KMF_ALGID_SHA1,
 	KMF_ALGID_RSA,
 	KMF_ALGID_DSA,
+	KMF_ALGID_ECDSA,
 	KMF_ALGID_MD5WithRSA,
 	KMF_ALGID_MD2WithRSA,
 	KMF_ALGID_SHA1WithRSA,
-	KMF_ALGID_SHA1WithDSA
+	KMF_ALGID_SHA256WithRSA,
+	KMF_ALGID_SHA384WithRSA,
+	KMF_ALGID_SHA512WithRSA,
+	KMF_ALGID_SHA1WithDSA,
+	KMF_ALGID_SHA1WithECDSA,
+	KMF_ALGID_SHA256WithECDSA,
+	KMF_ALGID_SHA384WithECDSA,
+	KMF_ALGID_SHA512WithECDSA
 } KMF_ALGORITHM_INDEX;
 
 /*
@@ -146,7 +154,8 @@
 	KMF_RC4 = 4,
 	KMF_DES = 5,
 	KMF_DES3 = 6,
-	KMF_GENERIC_SECRET = 7
+	KMF_GENERIC_SECRET = 7,
+	KMF_ECDSA = 8
 }KMF_KEY_ALG;
 
 typedef enum {
@@ -156,7 +165,6 @@
 	KMF_SYMMETRIC = 3	/* symmetric key */
 }KMF_KEY_CLASS;
 
-
 typedef enum {
 	KMF_CERT = 0,
 	KMF_CSR = 1,
@@ -187,6 +195,11 @@
 } KMF_RAW_SYM_KEY;
 
 typedef struct {
+	KMF_BIGINT	value;
+	KMF_OID		params;
+} KMF_RAW_EC_KEY;
+
+typedef struct {
 	KMF_KEY_ALG	keytype;
 	boolean_t	sensitive;
 	boolean_t	not_extractable;
@@ -194,6 +207,7 @@
 		KMF_RAW_RSA_KEY	rsa;
 		KMF_RAW_DSA_KEY	dsa;
 		KMF_RAW_SYM_KEY	sym;
+		KMF_RAW_EC_KEY  ec;
 	}rawdata;
 	char *label;
 	KMF_DATA id;
@@ -355,20 +369,6 @@
 } KMF_OCSP_REVOKED_STATUS;
 
 typedef enum {
-	KMF_ALGCLASS_NONE 	= 0,
-	KMF_ALGCLASS_CUSTOM,
-	KMF_ALGCLASS_SIGNATURE,
-	KMF_ALGCLASS_SYMMETRIC,
-	KMF_ALGCLASS_DIGEST,
-	KMF_ALGCLASS_RANDOMGEN,
-	KMF_ALGCLASS_UNIQUEGEN,
-	KMF_ALGCLASS_MAC,
-	KMF_ALGCLASS_ASYMMETRIC,
-	KMF_ALGCLASS_KEYGEN,
-	KMF_ALGCLASS_DERIVEKEY
-} KMF_ALGCLASS;
-
-typedef enum {
 	KMF_CERT_ISSUER		= 1,
 	KMF_CERT_SUBJECT,
 	KMF_CERT_VERSION,
@@ -786,7 +786,8 @@
 	KMF_CIPHERTEXT_DATA_ATTR,
 	KMF_VALIDATE_RESULT_ATTR,
 	KMF_KEY_DATA_ATTR,
-	KMF_PK11_USER_TYPE_ATTR
+	KMF_PK11_USER_TYPE_ATTR,
+	KMF_ECC_CURVE_OID_ATTR
 } KMF_ATTR_TYPE;
 
 typedef struct {
@@ -1155,11 +1156,14 @@
 KMFOID_SHA1,
 KMFOID_RSA,
 KMFOID_DSA,
+KMFOID_MD5,
 KMFOID_MD5WithRSA,
 KMFOID_MD2WithRSA,
 KMFOID_SHA1WithRSA,
+KMFOID_SHA256WithRSA,
+KMFOID_SHA384WithRSA,
+KMFOID_SHA512WithRSA,
 KMFOID_SHA1WithDSA,
-KMFOID_OIW_DSAWithSHA1,
 KMFOID_X9CM_DSA,
 KMFOID_X9CM_DSAWithSHA1;
 
@@ -1171,6 +1175,79 @@
 KMFOID_MS_KP_SCLogon,
 KMFOID_MS_KP_SCLogon_UPN;
 
+/* For ECC support */
+extern const KMF_OID
+KMFOID_EC_PUBLIC_KEY,
+KMFOID_SHA1WithECDSA,
+KMFOID_SHA224WithECDSA,
+KMFOID_SHA256WithECDSA,
+KMFOID_SHA384WithECDSA,
+KMFOID_SHA512WithECDSA,
+KMFOID_SHA224WithDSA,
+KMFOID_SHA256WithDSA,
+KMFOID_SHA224,
+KMFOID_SHA256,
+KMFOID_SHA384,
+KMFOID_SHA512,
+KMFOID_ECC_secp112r1,
+KMFOID_ECC_secp112r2,
+KMFOID_ECC_secp128r1,
+KMFOID_ECC_secp128r2,
+KMFOID_ECC_secp160k1,
+KMFOID_ECC_secp160r1,
+KMFOID_ECC_secp160r2,
+KMFOID_ECC_secp192k1,
+KMFOID_ECC_secp224k1,
+KMFOID_ECC_secp224r1,
+KMFOID_ECC_secp256k1,
+KMFOID_ECC_secp384r1,
+KMFOID_ECC_secp521r1,
+KMFOID_ECC_sect113r1,
+KMFOID_ECC_sect113r2,
+KMFOID_ECC_sect131r1,
+KMFOID_ECC_sect131r2,
+KMFOID_ECC_sect163k1,
+KMFOID_ECC_sect163r1,
+KMFOID_ECC_sect163r2,
+KMFOID_ECC_sect193r1,
+KMFOID_ECC_sect193r2,
+KMFOID_ECC_sect233k1,
+KMFOID_ECC_sect233r1,
+KMFOID_ECC_sect239k1,
+KMFOID_ECC_sect283k1,
+KMFOID_ECC_sect283r1,
+KMFOID_ECC_sect409k1,
+KMFOID_ECC_sect409r1,
+KMFOID_ECC_sect571k1,
+KMFOID_ECC_sect571r1,
+KMFOID_ECC_c2pnb163v1,
+KMFOID_ECC_c2pnb163v2,
+KMFOID_ECC_c2pnb163v3,
+KMFOID_ECC_c2pnb176v1,
+KMFOID_ECC_c2tnb191v1,
+KMFOID_ECC_c2tnb191v2,
+KMFOID_ECC_c2tnb191v3,
+KMFOID_ECC_c2pnb208w1,
+KMFOID_ECC_c2tnb239v1,
+KMFOID_ECC_c2tnb239v2,
+KMFOID_ECC_c2tnb239v3,
+KMFOID_ECC_c2pnb272w1,
+KMFOID_ECC_c2pnb304w1,
+KMFOID_ECC_c2tnb359v1,
+KMFOID_ECC_c2pnb368w1,
+KMFOID_ECC_c2tnb431r1,
+KMFOID_ECC_prime192v2,
+KMFOID_ECC_prime192v3,
+KMFOID_ECC_secp192r1,
+KMFOID_ECC_secp256r1;
+
+/*
+ * ANSI X9-62 prime192v1 is same as secp192r1 and
+ * ANSI X9-62 prime256v1 is same as secp256r1
+ */
+#define	KMFOID_ANSIX962_prime192v1 KMFOID_ECC_secp192r1
+#define	KMFOID_ANSIX962_prime256v1 KMFOID_ECC_secp256r1
+
 /*
  * KMF Certificate validation codes.  These may be masked together.
  */
