From wyllys@ardbeg.sfbay.sun.com Wed Jan 27 07:26:59 2010
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id o0RFQxi2006691
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Jan 2010 07:26:59 -0800 (PST)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.4) with ESMTP id o0RFQusk050846
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@Sun.Com>; Wed, 27 Jan 2010 08:26:59 -0700 (MST)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0KWW00519W8YPF00@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@Sun.Com
 (ORCPT PSARC-ext@Sun.Com); Wed, 27 Jan 2010 07:26:58 -0800 (PST)
Received: from ardbeg.sfbay.sun.com ([10.5.240.18])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0KWW004GEW8XFO10@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@Sun.Com (ORCPT PSARC-ext@Sun.Com); Wed,
 27 Jan 2010 07:26:57 -0800 (PST)
Received: from ardbeg.sfbay.sun.com (localhost [127.0.0.1])
	by ardbeg.sfbay.sun.com (8.14.3+Sun/8.14.3) with ESMTP id o0RFJRdY014182; Wed,
 27 Jan 2010 07:19:27 -0800 (PST)
Received: (from wyllys@localhost)
	by ardbeg.sfbay.sun.com (8.14.3+Sun/8.14.3/Submit) id o0RFJR1M014156; Wed,
 27 Jan 2010 07:19:27 -0800 (PST)
Date: Wed, 27 Jan 2010 07:19:27 -0800 (PST)
From: Wyllys Ingersoll <wyllys@ardbeg.sfbay.sun.com>
Subject: EC and SHA2 for KMF [PSARC/2010/032 FastTrack timeout 02/04/2010]
To: PSARC-ext@sun.com
Cc: kmf-discuss@opensolaris.org
Message-id: <201001271519.o0RFJR1M014156@ardbeg.sfbay.sun.com>
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
Status: RO
Content-Length: 6746


Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2010 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
	 EC and SHA2 for KMF
    1.2. Name of Document Author/Supplier:
	 Author:  Wyllys Ingersoll
    1.3  Date of This Document:
	27 January, 2010
4. Technical Description
Project:  EC and SHA2 for KMF
Submitter/Owner:  Wyllys Ingersoll
Release Taxonomy: Micro/Patch

Description:
	This project adds Elliptic Curve support to KMF and pktool
	so that X509 certificates with EC keys and curves can be created.
	Additionally, pktool(1) will be enhanced to allow the user to specify
	the hash algorithm to be used in the X509 certificate or certificate
	signing request (PKCS#10 CSR).  This case is to document the interface
	changes in the KMF library and pktool(1) CLI.

	Additionally, pktool(1), will have a new command for generating
	a keypair (EC, RSA, or DSA) without a certificate (or CSR).  The new
	command is "genkeypair" and details are below and in the modified
	man pages included in the case directory.

	pktool will allow the following hash algorithms to be specified:
		md5, sha1, sha256, sha384, sha512
	The above hash algorithms are all valid with RSA and EC keytypes, DSA
	support for anything other than SHA-1 is not available in our 
	current cryptographic framework.

	Elliptic Curve support for KMF (and pktool) will only be available
	when using the "nss" or "pkcs11" keystore types.  OpenSSL in
	OpenSolaris does not have EC support for legal reasons.

	KMF will support the following named Elliptic Curves.  These
	curve names come from ANSI X9.62-1998 and SECG (Standards
	for Efficient Cryptography Group - Recommended Elliptic Curve
	Domain parameters - http://www.secg.org):

		secp112r1, secp112r2, secp128r1, secp128r2, secp160k1
		secp160r1, secp160r2, secp192k1, secp192r1, secp224k1
		secp224r1, secp256k1, secp256r1, secp384r1, secp521r1
		sect113r1, sect113r2, sect131r1, sect131r2, sect163k1
		sect163r1, sect163r2, sect193r1, sect193r2, sect233k1
		sect233r1, sect239k1, sect283k1, sect283r1, sect409k1
		sect409r1, sect571k1, sect571r1, c2pnb163v1, c2pnb163v2
		c2pnb163v3, c2pnb176v1, c2tnb191v1, c2tnb191v2, c2tnb191v3
		c2pnb208w1, c2tnb239v1, c2tnb239v2, c2tnb239v3, c2pnb272w1
		c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2
		prime192v3

	The above names correspond to the appropriate Object Identifier
	values that the KMF libraries will use when encoding the certificates.

	The libkmf(3LIB) interfaces are not changing, though additional
	pre-defined OID constants will be added to correspond with the
	new hash algorithms and EC curves.  The diffs to "kmftypes.h" are given
	in the case materials.

Interfaces:

    The following list indicates the new options for the 'gencert', 'gencsr'
    and 'genkeypair'

    The new and/or changed items are indicated with "-->".

    gencert keystore=nss
        label=cert-nickname
        serial=serial number hex string]
        [ -i ] | [subject=subject-DN]
        [ altname=[critical:]SubjectAltName ]
        [ keyusage=[critical:]usage,usage,...]
        [ token=token[:manuf[:serial]]]
        [ dir=directory-path ]
        [ prefix=DBprefix ]
   -->     [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
        [ keylen=key-size ]
        [ trust=trust-value ]
        [ eku=[critical:]EKU name,...]
    -->    [ hash=[md5 | sha1 | sha256 | sha384 | sha512]]
    -->    [ listcurves ]
        [ lifetime=number-hour|number-day|number-year ]
    gencert [ keystore=pkcs11 ]
        label=key/cert-label
        serial=serial number hex string
        [ -i ] | [subject=subject-DN]
        [ altname=[critical:]SubjectAltName ]
        [ keyusage=[critical:]usage,usage,...]
        [ token=token[:manuf[:serial]]]
   -->     [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
        [ keylen=key-size ]
        [ eku=[critical:]EKU name,...]
    -->    [ hash=md5 | sha1 | sha256 | sha384 | sha512]
    -->    [ listcurves ]
        [ lifetime=number-hour|number-day|number-year ]
    gencert keystore=file
        outcert=cert_filename
        outkey=key_filename
        serial=serial number hex string
        [ -i ] | [subject=subject-DN]
        [ altname=[critical:]SubjectAltName ]
        [ keyusage=[critical:]usage,usage,...]
        [ format=der|pem ]
        [ keytype=rsa|dsa ]
        [ keylen=key-size ]
        [ eku=[critical:]EKU name,...]
    -->    [ hash=md5 | sha1 | sha256 | sha384 | sha512]
        [ lifetime=number-hour|number-day|number-year ]

    gencsr keystore=nss
        nickname=cert-nickname
        outcsr=csr-fn
        [ -i ] | [subject=subject-DN]
        [ altname=[critical:]SubjectAltName ]
        [ keyusage=[critical:]usage,usage,...]
        [ token=token[:manuf[:serial]]]
        [ dir=directory-path ]
        [ prefix=DBprefix ]
   -->     [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
        [ keylen=key-size ]
        [ eku=[critical:]EKU name,...]
    -->    [ hash=md5 | sha1 | sha256 | sha384 | sha512]
    -->    [ listcurves ]
        [ format=pem|der ]
    gencsr [ keystore=pkcs11 ]
        label=key-label
        outcsr=csr-fn
        [ -i ] | [subject=subject-DN]
        [ altname=[critical:]SubjectAltName ]
        [ keyusage=[critical:]usage,usage,...]
        [ token=token[:manuf[:serial]]]
   -->     [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
        [ keylen=key-size ]
        [ eku=[critical:]EKU name,...]
    -->    [ hash=md5 | sha1 | sha256 | sha384 | sha512]
    -->    [ listcurves ]
        [ format=pem|der ]]
    gencsr keystore=file
        outcsr=csr-fn
        outkey=key-fn
        [ -i ] | [subject=subject-DN]
        [ altname=[critical:]SubjectAltName ]
        [ keyusage=[critical:]usage,usage,...]
        [ keytype=rsa|dsa ]
        [ keylen=key-size ]
        [ eku=[critical:]EKU name,...]
    -->    [ hash=md5 | sha1 | sha256 | sha384 | sha512]
        [ format=pem|der ]

    genkeypair keystore=nss
        label=key-nickname
        [ token=token[:manuf[:serial]]]
        [ dir=directory-path ]
        [ prefix=DBprefix ]
        [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
        [ keylen=key-size ]
        [ listcurves ]
    genkeypair [ keystore=pkcs11 ]
        label=key-label
        [ token=token[:manuf[:serial]]]
        [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
        [ keylen=key-size ]
        [ listcurves ]
    genkeypair keystore=file
        outkey=key_filename
        [ format=der|pem ]
        [ keytype=rsa|dsa ]
        [ keylen=key-size ]


6. Resources and Schedule
    6.4. Steering Committee requested information
   	6.4.1. Consolidation C-team Name:
		ON
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open


From gdamore@sun.com Wed Jan 27 07:34:32 2010
Received: from sunmail6brm.central.sun.com (sunmail6brm.Central.Sun.COM [129.147.4.169])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id o0RFYWDK006750
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Jan 2010 07:34:32 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by sunmail6brm.central.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.4) with ESMTP id o0RFYV3c025983
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 27 Jan 2010 09:34:31 -0600 (CST)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0KWW00807WLJNX00@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Jan 2010 07:34:31 -0800 (PST)
Received: from sca-es-mail-2.sun.com ([192.18.43.133])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0KWW005T3WLI3N60@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Jan 2010 07:34:30 -0800 (PST)
Received: from fe-sfbay-09.sun.com ([192.18.43.129])
	by sca-es-mail-2.sun.com (8.13.7+Sun/8.12.9) with ESMTP id o0RFYUJB025253	for
 <PSARC-ext@sun.com>; Wed, 27 Jan 2010 07:34:30 -0800 (PST)
Received: from conversion-daemon.fe-sfbay-09.sun.com by fe-sfbay-09.sun.com
 (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul  2 2009))
 id <0KWW00G00WAR2B00@fe-sfbay-09.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Jan 2010 07:34:30 -0800 (PST)
Received: from [192.168.251.11] ([unknown] [76.93.15.33])
 by fe-sfbay-09.sun.com
 (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul  2 2009))
 with ESMTPSA id <0KWW00I1GWLGO8A0@fe-sfbay-09.sun.com>; Wed,
 27 Jan 2010 07:34:29 -0800 (PST)
Date: Wed, 27 Jan 2010 07:34:27 -0800
From: "Garrett D'Amore" <gdamore@sun.com>
Subject: Re: EC and SHA2 for KMF [PSARC/2010/032 FastTrack timeout 02/04/2010]
In-reply-to: <201001271519.o0RFJR1M014156@ardbeg.sfbay.sun.com>
Sender: Garrett.Damore@sun.com
To: Wyllys Ingersoll <wyllys@ardbeg.sfbay.sun.com>
Cc: PSARC-ext@sun.com, kmf-discuss@opensolaris.org
Message-id: <4B605D03.8060703@sun.com>
MIME-version: 1.0
Content-type: text/plain; CHARSET=US-ASCII; format=flowed
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <201001271519.o0RFJR1M014156@ardbeg.sfbay.sun.com>
User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1.5) Gecko/20100103
 Lightning/1.0b1 Thunderbird/3.0
Status: RO
Content-Length: 7479

Looks like its a straight-forward enhancement.  Too bad OpenSSL won't 
get it.  I'm assuming that these algorithms are not approved for use in 
any FIPS 140-2 compliant situation?

In any case, +1.

     - Garrett

On 01/27/10 07:19 AM, Wyllys Ingersoll wrote:
> Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
> This information is Copyright 2010 Sun Microsystems
> 1. Introduction
>      1.1. Project/Component Working Name:
> 	 EC and SHA2 for KMF
>      1.2. Name of Document Author/Supplier:
> 	 Author:  Wyllys Ingersoll
>      1.3  Date of This Document:
> 	27 January, 2010
> 4. Technical Description
> Project:  EC and SHA2 for KMF
> Submitter/Owner:  Wyllys Ingersoll
> Release Taxonomy: Micro/Patch
>
> Description:
> 	This project adds Elliptic Curve support to KMF and pktool
> 	so that X509 certificates with EC keys and curves can be created.
> 	Additionally, pktool(1) will be enhanced to allow the user to specify
> 	the hash algorithm to be used in the X509 certificate or certificate
> 	signing request (PKCS#10 CSR).  This case is to document the interface
> 	changes in the KMF library and pktool(1) CLI.
>
> 	Additionally, pktool(1), will have a new command for generating
> 	a keypair (EC, RSA, or DSA) without a certificate (or CSR).  The new
> 	command is "genkeypair" and details are below and in the modified
> 	man pages included in the case directory.
>
> 	pktool will allow the following hash algorithms to be specified:
> 		md5, sha1, sha256, sha384, sha512
> 	The above hash algorithms are all valid with RSA and EC keytypes, DSA
> 	support for anything other than SHA-1 is not available in our
> 	current cryptographic framework.
>
> 	Elliptic Curve support for KMF (and pktool) will only be available
> 	when using the "nss" or "pkcs11" keystore types.  OpenSSL in
> 	OpenSolaris does not have EC support for legal reasons.
>
> 	KMF will support the following named Elliptic Curves.  These
> 	curve names come from ANSI X9.62-1998 and SECG (Standards
> 	for Efficient Cryptography Group - Recommended Elliptic Curve
> 	Domain parameters - http://www.secg.org):
>
> 		secp112r1, secp112r2, secp128r1, secp128r2, secp160k1
> 		secp160r1, secp160r2, secp192k1, secp192r1, secp224k1
> 		secp224r1, secp256k1, secp256r1, secp384r1, secp521r1
> 		sect113r1, sect113r2, sect131r1, sect131r2, sect163k1
> 		sect163r1, sect163r2, sect193r1, sect193r2, sect233k1
> 		sect233r1, sect239k1, sect283k1, sect283r1, sect409k1
> 		sect409r1, sect571k1, sect571r1, c2pnb163v1, c2pnb163v2
> 		c2pnb163v3, c2pnb176v1, c2tnb191v1, c2tnb191v2, c2tnb191v3
> 		c2pnb208w1, c2tnb239v1, c2tnb239v2, c2tnb239v3, c2pnb272w1
> 		c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2
> 		prime192v3
>
> 	The above names correspond to the appropriate Object Identifier
> 	values that the KMF libraries will use when encoding the certificates.
>
> 	The libkmf(3LIB) interfaces are not changing, though additional
> 	pre-defined OID constants will be added to correspond with the
> 	new hash algorithms and EC curves.  The diffs to "kmftypes.h" are given
> 	in the case materials.
>
> Interfaces:
>
>      The following list indicates the new options for the 'gencert', 'gencsr'
>      and 'genkeypair'
>
>      The new and/or changed items are indicated with "-->".
>
>      gencert keystore=nss
>          label=cert-nickname
>          serial=serial number hex string]
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>          [ dir=directory-path ]
>          [ prefix=DBprefix ]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ trust=trust-value ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=[md5 | sha1 | sha256 | sha384 | sha512]]
>      -->     [ listcurves ]
>          [ lifetime=number-hour|number-day|number-year ]
>      gencert [ keystore=pkcs11 ]
>          label=key/cert-label
>          serial=serial number hex string
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>      -->     [ listcurves ]
>          [ lifetime=number-hour|number-day|number-year ]
>      gencert keystore=file
>          outcert=cert_filename
>          outkey=key_filename
>          serial=serial number hex string
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ format=der|pem ]
>          [ keytype=rsa|dsa ]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>          [ lifetime=number-hour|number-day|number-year ]
>
>      gencsr keystore=nss
>          nickname=cert-nickname
>          outcsr=csr-fn
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>          [ dir=directory-path ]
>          [ prefix=DBprefix ]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>      -->     [ listcurves ]
>          [ format=pem|der ]
>      gencsr [ keystore=pkcs11 ]
>          label=key-label
>          outcsr=csr-fn
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>      -->     [ listcurves ]
>          [ format=pem|der ]]
>      gencsr keystore=file
>          outcsr=csr-fn
>          outkey=key-fn
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ keytype=rsa|dsa ]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>          [ format=pem|der ]
>
>      genkeypair keystore=nss
>          label=key-nickname
>          [ token=token[:manuf[:serial]]]
>          [ dir=directory-path ]
>          [ prefix=DBprefix ]
>          [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ listcurves ]
>      genkeypair [ keystore=pkcs11 ]
>          label=key-label
>          [ token=token[:manuf[:serial]]]
>          [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ listcurves ]
>      genkeypair keystore=file
>          outkey=key_filename
>          [ format=der|pem ]
>          [ keytype=rsa|dsa ]
>          [ keylen=key-size ]
>
>
> 6. Resources and Schedule
>      6.4. Steering Committee requested information
>     	6.4.1. Consolidation C-team Name:
> 		ON
>      6.5. ARC review type: FastTrack
>      6.6. ARC Exposure: open
>
>    


From Wyllys.Ingersoll@Sun.COM Wed Jan 27 07:40:36 2010
Received: from newsunmail1brm.central.sun.com (newsunmail1brm.Central.Sun.COM [129.147.62.245])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id o0RFeZB6006852
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Jan 2010 07:40:36 -0800 (PST)
Received: from nwk-avmta-2.sfbay.sun.com (nwk-avmta-2.SFBay.Sun.COM [129.145.155.6])
	by newsunmail1brm.central.sun.com (8.13.7+Sun/8.13.7/ENSMAIL,v2.4) with ESMTP id o0RFeYjE063234
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 27 Jan 2010 08:40:35 -0700 (MST)
Received: from pmxchannel-daemon.nwk-avmta-2.sfbay.sun.com by
 nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0KWW0080BWVNYS00@nwk-avmta-2.sfbay.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@Sun.Com); Wed, 27 Jan 2010 07:40:35 -0800 (PST)
Received: from brmea-mail-4.sun.com ([192.18.98.36])
 by nwk-avmta-2.sfbay.sun.com
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0KWW00540WVM3O80@nwk-avmta-2.sfbay.sun.com> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@Sun.Com); Wed,
 27 Jan 2010 07:40:34 -0800 (PST)
Received: from fe-amer-10.sun.com ([192.18.109.80])
	by brmea-mail-4.sun.com (8.13.6+Sun/8.12.9) with ESMTP id o0RFeYa7029914	for
 <PSARC-ext@Sun.Com>; Wed, 27 Jan 2010 15:40:34 +0000 (GMT)
Received: from conversion-daemon.mail-amer.sun.com by mail-amer.sun.com
 (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul  2 2009))
 id <0KWW00K00WGDOU00@mail-amer.sun.com> for PSARC-ext@Sun.Com
 (ORCPT PSARC-ext@Sun.Com); Wed, 27 Jan 2010 08:40:34 -0700 (MST)
Received: from [192.168.1.50] (usr29.res.openband.net [216.40.74.29])
 by mail-amer.sun.com
 (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul  2 2009))
 with ESMTPSA id <0KWW00IFXWVL2C10@mail-amer.sun.com>; Wed,
 27 Jan 2010 08:40:34 -0700 (MST)
Date: Wed, 27 Jan 2010 10:40:33 -0500
From: Wyllys Ingersoll <Wyllys.Ingersoll@Sun.COM>
Subject: Re: EC and SHA2 for KMF [PSARC/2010/032 FastTrack timeout 02/04/2010]
In-reply-to: <201001271519.o0RFJR1M014156@ardbeg.sfbay.sun.com>
Sender: Wyllys.Ingersoll@Sun.COM
To: Wyllys Ingersoll <wyllys@ardbeg.sfbay.sun.com>
Cc: PSARC-ext@Sun.COM, kmf-discuss@opensolaris.org
Message-id: <4B605E71.8040803@sun.com>
MIME-version: 1.0
Content-type: text/plain; CHARSET=US-ASCII; format=flowed
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <201001271519.o0RFJR1M014156@ardbeg.sfbay.sun.com>
User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1.5) Gecko/20091207
 Lightning/1.0pre Thunderbird/3.0
Status: RO
Content-Length: 7313


Manpage updates are in the case materials directory.


On 01/27/10 10:19, Wyllys Ingersoll wrote:
>
> Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
> This information is Copyright 2010 Sun Microsystems
> 1. Introduction
>      1.1. Project/Component Working Name:
> 	 EC and SHA2 for KMF
>      1.2. Name of Document Author/Supplier:
> 	 Author:  Wyllys Ingersoll
>      1.3  Date of This Document:
> 	27 January, 2010
> 4. Technical Description
> Project:  EC and SHA2 for KMF
> Submitter/Owner:  Wyllys Ingersoll
> Release Taxonomy: Micro/Patch
>
> Description:
> 	This project adds Elliptic Curve support to KMF and pktool
> 	so that X509 certificates with EC keys and curves can be created.
> 	Additionally, pktool(1) will be enhanced to allow the user to specify
> 	the hash algorithm to be used in the X509 certificate or certificate
> 	signing request (PKCS#10 CSR).  This case is to document the interface
> 	changes in the KMF library and pktool(1) CLI.
>
> 	Additionally, pktool(1), will have a new command for generating
> 	a keypair (EC, RSA, or DSA) without a certificate (or CSR).  The new
> 	command is "genkeypair" and details are below and in the modified
> 	man pages included in the case directory.
>
> 	pktool will allow the following hash algorithms to be specified:
> 		md5, sha1, sha256, sha384, sha512
> 	The above hash algorithms are all valid with RSA and EC keytypes, DSA
> 	support for anything other than SHA-1 is not available in our
> 	current cryptographic framework.
>
> 	Elliptic Curve support for KMF (and pktool) will only be available
> 	when using the "nss" or "pkcs11" keystore types.  OpenSSL in
> 	OpenSolaris does not have EC support for legal reasons.
>
> 	KMF will support the following named Elliptic Curves.  These
> 	curve names come from ANSI X9.62-1998 and SECG (Standards
> 	for Efficient Cryptography Group - Recommended Elliptic Curve
> 	Domain parameters - http://www.secg.org):
>
> 		secp112r1, secp112r2, secp128r1, secp128r2, secp160k1
> 		secp160r1, secp160r2, secp192k1, secp192r1, secp224k1
> 		secp224r1, secp256k1, secp256r1, secp384r1, secp521r1
> 		sect113r1, sect113r2, sect131r1, sect131r2, sect163k1
> 		sect163r1, sect163r2, sect193r1, sect193r2, sect233k1
> 		sect233r1, sect239k1, sect283k1, sect283r1, sect409k1
> 		sect409r1, sect571k1, sect571r1, c2pnb163v1, c2pnb163v2
> 		c2pnb163v3, c2pnb176v1, c2tnb191v1, c2tnb191v2, c2tnb191v3
> 		c2pnb208w1, c2tnb239v1, c2tnb239v2, c2tnb239v3, c2pnb272w1
> 		c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2
> 		prime192v3
>
> 	The above names correspond to the appropriate Object Identifier
> 	values that the KMF libraries will use when encoding the certificates.
>
> 	The libkmf(3LIB) interfaces are not changing, though additional
> 	pre-defined OID constants will be added to correspond with the
> 	new hash algorithms and EC curves.  The diffs to "kmftypes.h" are given
> 	in the case materials.
>
> Interfaces:
>
>      The following list indicates the new options for the 'gencert', 'gencsr'
>      and 'genkeypair'
>
>      The new and/or changed items are indicated with "-->".
>
>      gencert keystore=nss
>          label=cert-nickname
>          serial=serial number hex string]
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>          [ dir=directory-path ]
>          [ prefix=DBprefix ]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ trust=trust-value ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=[md5 | sha1 | sha256 | sha384 | sha512]]
>      -->     [ listcurves ]
>          [ lifetime=number-hour|number-day|number-year ]
>      gencert [ keystore=pkcs11 ]
>          label=key/cert-label
>          serial=serial number hex string
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>      -->     [ listcurves ]
>          [ lifetime=number-hour|number-day|number-year ]
>      gencert keystore=file
>          outcert=cert_filename
>          outkey=key_filename
>          serial=serial number hex string
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ format=der|pem ]
>          [ keytype=rsa|dsa ]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>          [ lifetime=number-hour|number-day|number-year ]
>
>      gencsr keystore=nss
>          nickname=cert-nickname
>          outcsr=csr-fn
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>          [ dir=directory-path ]
>          [ prefix=DBprefix ]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>      -->     [ listcurves ]
>          [ format=pem|der ]
>      gencsr [ keystore=pkcs11 ]
>          label=key-label
>          outcsr=csr-fn
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ token=token[:manuf[:serial]]]
>     -->      [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>      -->     [ listcurves ]
>          [ format=pem|der ]]
>      gencsr keystore=file
>          outcsr=csr-fn
>          outkey=key-fn
>          [ -i ] | [subject=subject-DN]
>          [ altname=[critical:]SubjectAltName ]
>          [ keyusage=[critical:]usage,usage,...]
>          [ keytype=rsa|dsa ]
>          [ keylen=key-size ]
>          [ eku=[critical:]EKU name,...]
>      -->     [ hash=md5 | sha1 | sha256 | sha384 | sha512]
>          [ format=pem|der ]
>
>      genkeypair keystore=nss
>          label=key-nickname
>          [ token=token[:manuf[:serial]]]
>          [ dir=directory-path ]
>          [ prefix=DBprefix ]
>          [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ listcurves ]
>      genkeypair [ keystore=pkcs11 ]
>          label=key-label
>          [ token=token[:manuf[:serial]]]
>          [ keytype=rsa | dsa | ec [curve=ECC Curve Name]]
>          [ keylen=key-size ]
>          [ listcurves ]
>      genkeypair keystore=file
>          outkey=key_filename
>          [ format=der|pem ]
>          [ keytype=rsa|dsa ]
>          [ keylen=key-size ]
>
>
> 6. Resources and Schedule
>      6.4. Steering Committee requested information
>     	6.4.1. Consolidation C-team Name:
> 		ON
>      6.5. ARC review type: FastTrack
>      6.6. ARC Exposure: open
>


From Darren.Moffat@Sun.COM Wed Jan 27 07:48:15 2010
Received: from sunmail6brm.central.sun.com (sunmail6brm.Central.Sun.COM [129.147.4.169])
	by sac.sfbay.sun.com (8.13.8+Sun/8.13.8) with ESMTP id o0RFmEoN006889
	for <psarc-ext@sac.sfbay.sun.com>; Wed, 27 Jan 2010 07:48:15 -0800 (PST)
Received: from nwk-avmta-1.SFBay.Sun.COM (nwk-avmta-1.SFBay.Sun.COM [129.146.11.74])
	by sunmail6brm.central.sun.com (8.13.8+Sun/8.13.8/ENSMAIL,v2.4) with ESMTP id o0RFmDbC007366
	for <@sunmail2sca.sfbay.sun.com:PSARC-ext@sun.com>; Wed, 27 Jan 2010 09:48:14 -0600 (CST)
Received: from pmxchannel-daemon.nwk-avmta-1.sfbay.Sun.COM by
 nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 id <0KWW0080LX8E4S00@nwk-avmta-1.sfbay.Sun.COM> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Jan 2010 07:48:14 -0800 (PST)
Received: from gmp-eb-inf-1.sun.com ([192.18.6.21])
 by nwk-avmta-1.sfbay.Sun.COM
 (Sun Java System Messaging Server 6.2-3.04 (built Jul 15 2005))
 with ESMTP id <0KWW004E6X8CFJ30@nwk-avmta-1.sfbay.Sun.COM> for
 PSARC-ext@sun.com (ORCPT PSARC-ext@sun.com); Wed,
 27 Jan 2010 07:48:13 -0800 (PST)
Received: from fe-emea-10.sun.com
 (gmp-eb-lb-1-fe1.eu.sun.com [192.18.6.7] (may be forged))
	by gmp-eb-inf-1.sun.com (8.13.7+Sun/8.12.9) with ESMTP id o0RFmAva007159	for
 <PSARC-ext@sun.com>; Wed, 27 Jan 2010 15:48:11 +0000 (GMT)
Received: from conversion-daemon.fe-emea-10.sun.com by fe-emea-10.sun.com
 (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul  2 2009))
 id <0KWW00200VBMKF00@fe-emea-10.sun.com> for PSARC-ext@sun.com
 (ORCPT PSARC-ext@sun.com); Wed, 27 Jan 2010 15:48:06 +0000 (GMT)
Received: from [192.168.1.105]
 (cpc2-rdng20-2-0-cust917.15-3.cable.virginmedia.com [86.28.167.150])
 by fe-emea-10.sun.com
 (Sun Java(tm) System Messaging Server 7u2-7.04 64bit (built Jul  2 2009))
 with ESMTPSA id <0KWW00729X84GH80@fe-emea-10.sun.com>; Wed,
 27 Jan 2010 15:48:05 +0000 (GMT)
Date: Wed, 27 Jan 2010 15:48:03 +0000
From: Darren J Moffat <Darren.Moffat@Sun.COM>
Subject: Re: EC and SHA2 for KMF [PSARC/2010/032 FastTrack timeout 02/04/2010]
In-reply-to: <4B605D03.8060703@sun.com>
Sender: Darren.Moffat@Sun.COM
To: "Garrett D'Amore" <gdamore@Sun.COM>
Cc: Wyllys Ingersoll <wyllys@ardbeg.sfbay.sun.com>, PSARC-ext@Sun.COM,
        kmf-discuss@opensolaris.org
Message-id: <4B606033.8010801@Sun.COM>
MIME-version: 1.0
Content-type: text/plain; CHARSET=US-ASCII; format=flowed
Content-transfer-encoding: 7BIT
X-PMX-Version: 5.4.1.325704
References: <201001271519.o0RFJR1M014156@ardbeg.sfbay.sun.com>
 <4B605D03.8060703@sun.com>
User-Agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.1.5) Gecko/20100103
 Lightning/1.0b1 Thunderbird/3.0
Status: RO
Content-Length: 921

On 27/01/2010 15:34, Garrett D'Amore wrote:
> Looks like its a straight-forward enhancement.  Too bad OpenSSL won't
> get it. I'm assuming that these algorithms are not approved for use in
> any FIPS 140-2 compliant situation?

ECDSA should be covered by FIPS 140-2, since FIPS 186-3 specifies this. 
  ECMQV and EC DH are outside of FIPS but allowed to be exported from a 
FIPS 140-2 validated module.

Mozilla NSS already has a FIPS 140-2 validation and is in the process (I 
believe) of refreshing that, according to 
https://wiki.mozilla.org/FIPS_Validation that refresh should include ECDSA.

Similarly if/when the core Solaris crypto framework ever does a FIPS 140 
validation then the relevant Elliptic Curve functionality will very 
likely be included (I see no reason for us not to include it in other 
words, particularly since it is the same code base as the Mozilla NSS 
Elliptic Curve).

-- 
Darren J Moffat

