You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by mu...@apache.org on 2010/12/30 19:44:17 UTC

svn commit: r1053972 [1/2] - in /santuario/xml-security-java/trunk: ./ data/org/w3c/www/interop/xmldsig11/ data/org/w3c/www/interop/xmldsig11/microsoft/ data/org/w3c/www/interop/xmldsig11/oracle/ data/org/w3c/www/interop/xmldsig11/sun/ libs/ src/org/ap...

Author: mullan
Date: Thu Dec 30 18:44:13 2010
New Revision: 1053972

URL: http://svn.apache.org/viewvc?rev=1053972&view=rev
Log:
Merge java_xmldsig11_ecdsa branch to trunk. This branch includes support for
the XML Signature 1.1 ECDSA algorithms and a set of interoperability tests 
for XML Signature 1.1.
This branch also includes the patch for SANTUARIO-248: Add support for ECDSA 
signature with SHA-2 message digests + enhancements in ASN.1 to XMLDSIG 
converter (and viceversa)
Also, because the ECDSA support requires JDK 1.5 ECC APIs, build.xml has
been updated to specify 1.5 as the javac target and source options.

Added:
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/
      - copied from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/
      - copied from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/dsa_1024_sha1_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/dsa_1024_sha1_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/dsa_1024_sha1_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/dsa_1024_sha1_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha1_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha1_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha1_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha1_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha256_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha256_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha256_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha256_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha384_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha384_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha384_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha384_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha512_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha512_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha512_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p256_sha512_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha1_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha1_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha1_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha1_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha256_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha256_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha256_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha256_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha384_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha384_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha384_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha384_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha512_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha512_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha512_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p384_sha512_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha1_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha1_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha1_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha1_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha256_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha256_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha256_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha256_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha384_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha384_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha384_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha384_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha512_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha512_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha512_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/ecc_p521_sha512_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha1_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha1_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha256_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha256_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha384_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha384_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha512_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/hmac_sha512_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/index.html
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/index.html
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha1_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha1_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha1_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha1_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha256_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha256_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha256_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha256_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha384_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha384_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha384_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha384_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha512_c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha512_c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha512_exc-c14n.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/rsa2048_sha512_exc-c14n.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha1.hmac
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha1.hmac
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha256.hmac
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha256.hmac
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha384.hmac
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha384.hmac
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha512.hmac
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/microsoft/secret-sha512.hmac
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/
      - copied from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/index.html
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/index.html
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-hmac-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-hmac-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-hmac-sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-hmac-sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-hmac-sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-hmac-sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha1.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha1.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha1_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha1_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha256_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha256_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha384_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha384_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha512_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p256_sha512_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha1.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha1.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha1_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha1_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha256_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha256_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha384_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha384_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha512_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p384_sha512_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha1.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha1.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha1_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha1_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha256_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha256_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha384_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha384_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha512_4050.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-p521_sha512_4050.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-rsa-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-rsa-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-rsa_sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-rsa_sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-rsa_sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-rsa_sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-sha256-rsa-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-sha256-rsa-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-sha384-rsa_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-sha384-rsa_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-sha512-rsa_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/oracle/signature-enveloping-sha512-rsa_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/
      - copied from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-hmac-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-hmac-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-hmac-sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-hmac-sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-hmac-sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-hmac-sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-rsa-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-rsa-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-rsa_sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-rsa_sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-rsa_sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-rsa_sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-sha256-rsa-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-sha256-rsa-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-sha384-rsa_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-sha384-rsa_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-sha512-rsa_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/c14n10-signature-enveloping-sha512-rsa_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/index.html
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/index.html
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/index.html?C=D;O=A
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/index.html?C=D;O=A
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-hmac-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-hmac-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-hmac-sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-hmac-sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-hmac-sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-hmac-sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-rsa-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-rsa-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-rsa_sha384.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-rsa_sha384.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-rsa_sha512.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-rsa_sha512.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-sha256-rsa-sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-sha256-rsa-sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-sha384-rsa_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-sha384-rsa_sha256.xml
    santuario/xml-security-java/trunk/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-sha512-rsa_sha256.xml
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/data/org/w3c/www/interop/xmldsig11/sun/signature-enveloping-sha512-rsa_sha256.xml
    santuario/xml-security-java/trunk/libs/junit-4.8.2.jar   (with props)
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/AbstractDOMSignatureMethod.java
      - copied unchanged from r996118, xml/security/branches/java_xmldsig11_ecdsa/src/org/jcp/xml/dsig/internal/dom/AbstractDOMSignatureMethod.java
    santuario/xml-security-java/trunk/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropXMLDSig11Test.java
      - copied, changed from r996118, xml/security/branches/java_xmldsig11_ecdsa/src_unitTests/javax/xml/crypto/test/dsig/CreateInteropXMLDSig11Test.java
    santuario/xml-security-java/trunk/src_unitTests/javax/xml/crypto/test/dsig/InteropXMLDSig11Test.java
      - copied, changed from r996118, xml/security/branches/java_xmldsig11_ecdsa/src_unitTests/javax/xml/crypto/test/dsig/InteropXMLDSig11Test.java
Modified:
    santuario/xml-security-java/trunk/   (props changed)
    santuario/xml-security-java/trunk/build.xml
    santuario/xml-security-java/trunk/src/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java
    santuario/xml-security-java/trunk/src/org/apache/xml/security/resource/config.xml
    santuario/xml-security-java/trunk/src/org/apache/xml/security/signature/XMLSignature.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMReference.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSignatureMethod.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperties.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSignatureProperty.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMSignedInfo.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMTransform.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMX509Data.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMX509IssuerSerial.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMXMLObject.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignature.java
    santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMXMLSignatureFactory.java
    santuario/xml-security-java/trunk/src_samples/javax/xml/crypto/dsig/samples/Validate.java
    santuario/xml-security-java/trunk/src_unitTests/javax/xml/crypto/test/KeySelectors.java
    santuario/xml-security-java/trunk/src_unitTests/org/apache/xml/security/c14n/implementations/UtfHelperTest.java

Propchange: santuario/xml-security-java/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Thu Dec 30 18:44:13 2010
@@ -0,0 +1,3 @@
+/santuario/branches/java_xmldsig11_ecdsa:996119-1049476
+/santuario/xml-security-java/branches/java_xmldsig11_ecdsa:1049477-1053382
+/xml/security/branches/java_xmldsig11_ecdsa:965952-996118

Modified: santuario/xml-security-java/trunk/build.xml
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/build.xml?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/build.xml (original)
+++ santuario/xml-security-java/trunk/build.xml Thu Dec 30 18:44:13 2010
@@ -271,10 +271,11 @@
     <target name="build.src"
             depends="do.build.src,env.mk.dirs,do.check.bindist"
 			unless="is.bin.dist">
-        <javac target="1.4" source="1.4" srcdir="${dir.src}"
+        <javac target="1.5" source="1.5" srcdir="${dir.src}"
                destdir="${dir.build.bin}"
                debug="${build.compile.debug}"
                includeAntRuntime="false">
+            <compilerarg value="-XDignore.symbol.file" />
             <classpath refid="id.classpath" />
             <include name="**/org/apache/xml/security/**/*.java" />
             <include name="**/javax/xml/crypto/**/*.java" />
@@ -292,7 +293,7 @@
     <target name="build.test"
     		depends="build.src"
 		unless="is.bin.dist">
-    	<javac srcdir="${dir.src.test}"
+    	<javac target="1.5" source="1.5" srcdir="${dir.src.test}"
                destdir="${dir.build.test}"
                debug="${build.compile.debug}"
                includeAntRuntime="false">
@@ -311,7 +312,7 @@
     <target name="build.samples"
 		depends="build.src"
 		unless="is.bin.dist">
-	<javac srcdir="${dir.src.samples}"
+	<javac target="1.5" source="1.5" srcdir="${dir.src.samples}"
 		destdir="${dir.build.samples}"
 		debug="${build.compile.debug}"
         includeAntRuntime="false">
@@ -411,7 +412,7 @@
 	    <batchtest fork="yes" todir="${dir.build.junit.xml}">
 	        <fileset dir="${dir.src.test}">
 	            <include name="javax/xml/crypto/**/*Test.java"/>
-                <exclude name="javax/xml/crypto/test/dsig/InteropC14nTest.java"/>
+                    <exclude name="javax/xml/crypto/test/dsig/InteropC14nTest.java"/>
             </fileset>
             </batchtest>
         </junit>

Added: santuario/xml-security-java/trunk/libs/junit-4.8.2.jar
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/libs/junit-4.8.2.jar?rev=1053972&view=auto
==============================================================================
Binary file - no diff available.

Propchange: santuario/xml-security-java/trunk/libs/junit-4.8.2.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: santuario/xml-security-java/trunk/src/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java (original)
+++ santuario/xml-security-java/trunk/src/org/apache/xml/security/algorithms/implementations/SignatureECDSA.java Thu Dec 30 18:44:13 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright  1999-2004 The Apache Software Foundation.
+ * Copyright 1999-2010 The Apache Software Foundation.
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -40,6 +40,7 @@ import org.apache.xml.security.utils.Bas
 /**
  *
  * @author $Author: raul $
+ * @author Alex Dupre
  */
 public abstract class SignatureECDSA extends SignatureAlgorithmSpi {
 
@@ -66,37 +67,45 @@ public abstract class SignatureECDSA ext
     * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#dsa-sha1">6.4.1 DSA</A>
     * @see <A HREF="ftp://ftp.rfc-editor.org/in-notes/rfc4050.txt">3.3. ECDSA Signatures</A>
     */
-   private static byte[] convertASN1toXMLDSIG(byte asn1Bytes[])
+   public static byte[] convertASN1toXMLDSIG(byte asn1Bytes[])
            throws IOException {
 
-      byte rLength = asn1Bytes[3];
+      if (asn1Bytes.length < 8 || asn1Bytes[0] != 48) {
+         throw new IOException("Invalid ASN.1 format of ECDSA signature");
+      }
+      int offset;
+      if (asn1Bytes[1] > 0) {
+         offset = 2;
+      } else if (asn1Bytes[1] == (byte) 0x81) {
+         offset = 3;
+      } else {
+         throw new IOException("Invalid ASN.1 format of ECDSA signature");
+      }
+      
+      byte rLength = asn1Bytes[offset + 1];
       int i;
 
-      for (i = rLength; (i > 0) && (asn1Bytes[(4 + rLength) - i] == 0); i--);
+      for (i = rLength; (i > 0) && (asn1Bytes[(offset + 2 + rLength) - i] == 0); i--);
 
-      byte sLength = asn1Bytes[5 + rLength];
+      byte sLength = asn1Bytes[offset + 2 + rLength + 1];
       int j;
 
       for (j = sLength;
-              (j > 0) && (asn1Bytes[(6 + rLength + sLength) - j] == 0); j--);
+              (j > 0) && (asn1Bytes[(offset + 2 + rLength + 2 + sLength) - j] == 0); j--);
 
-      int rawLen = ((i+7)/8)*8;
+      int rawLen = Math.max(i, j);
       
-      int tmp = ((j+7)/8)*8;
-      
-      if (tmp > rawLen)
-          rawLen = tmp;
-      
-      if ((asn1Bytes[0] != 48) || (asn1Bytes[1] != asn1Bytes.length - 2)
-              || (asn1Bytes[2] != 2) || rawLen < 24
-              || (asn1Bytes[4 + rLength] != 2)     ) {
+      if ((asn1Bytes[offset - 1] & 0xff) != asn1Bytes.length - offset
+              || (asn1Bytes[offset - 1] & 0xff) != 2 + rLength + 2 + sLength
+              || asn1Bytes[offset] != 2
+              || asn1Bytes[offset + 2 + rLength] != 2) {
          throw new IOException("Invalid ASN.1 format of ECDSA signature");
       } 
       byte xmldsigBytes[] = new byte[2*rawLen];
 
-      System.arraycopy(asn1Bytes, (4 + rLength) - i, xmldsigBytes, rawLen - i,
+      System.arraycopy(asn1Bytes, (offset + 2 + rLength) - i, xmldsigBytes, rawLen - i,
                           i);
-      System.arraycopy(asn1Bytes, (6 + rLength + sLength) - j, xmldsigBytes,
+      System.arraycopy(asn1Bytes, (offset + 2 + rLength + 2 + sLength) - j, xmldsigBytes,
                        2*rawLen - j, j);
 
        return xmldsigBytes;      
@@ -115,13 +124,9 @@ public abstract class SignatureECDSA ext
     * @see <A HREF="http://www.w3.org/TR/xmldsig-core/#dsa-sha1">6.4.1 DSA</A>
     * @see <A HREF="ftp://ftp.rfc-editor.org/in-notes/rfc4050.txt">3.3. ECDSA Signatures</A>
     */
-   private static byte[] convertXMLDSIGtoASN1(byte xmldsigBytes[])
+   public static byte[] convertXMLDSIGtoASN1(byte xmldsigBytes[])
            throws IOException {
 
-      if (xmldsigBytes.length < 48) {
-         throw new IOException("Invalid XMLDSIG format of ECDSA signature");
-      }
-
       int rawLen = xmldsigBytes.length/2;
       
       int i;
@@ -143,20 +148,34 @@ public abstract class SignatureECDSA ext
       if (xmldsigBytes[2*rawLen - k] < 0) {
          l += 1;
       }
-
-      byte asn1Bytes[] = new byte[6 + j + l];
-
+      
+      int len = 2 + j + 2 + l;
+      if (len > 255) {
+         throw new IOException("Invalid XMLDSIG format of ECDSA signature");
+      }
+      int offset;
+      byte asn1Bytes[];
+      if (len < 128) {
+         asn1Bytes = new byte[2 + 2 + j + 2 + l];
+         offset = 1;
+      } else {
+         asn1Bytes = new byte[3 + 2 + j + 2 + l];
+         asn1Bytes[1] = (byte) 0x81;
+         offset = 2;
+      }
       asn1Bytes[0] = 48;
-      asn1Bytes[1] = (byte) (4 + j + l);
-      asn1Bytes[2] = 2;
-      asn1Bytes[3] = (byte) j;
+      asn1Bytes[offset++] = (byte) len;
+      asn1Bytes[offset++] = 2;
+      asn1Bytes[offset++] = (byte) j;
 
-      System.arraycopy(xmldsigBytes, rawLen - i, asn1Bytes, (4 + j) - i, i);
+      System.arraycopy(xmldsigBytes, rawLen - i, asn1Bytes, (offset + j) - i, i);
+      
+      offset += j;
 
-      asn1Bytes[4 + j] = 2;
-      asn1Bytes[5 + j] = (byte) l;
+      asn1Bytes[offset++] = 2;
+      asn1Bytes[offset++] = (byte) l;
 
-      System.arraycopy(xmldsigBytes, 2*rawLen - k, asn1Bytes, (6 + j + l) - k, k);
+      System.arraycopy(xmldsigBytes, 2*rawLen - k, asn1Bytes, (offset + l) - k, k);
 
       return asn1Bytes;
    }
@@ -386,4 +405,73 @@ public abstract class SignatureECDSA ext
       }
    }
 
+   /**
+    * Class SignatureRSASHA256
+    *
+    * @author Alex Dupre
+    * @version $Revision$
+    */
+   public static class SignatureECDSASHA256 extends SignatureECDSA {
+
+      /**
+       * Constructor SignatureRSASHA256
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureECDSASHA256() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA256;
+      }
+   }
+
+   /**
+    * Class SignatureRSASHA384
+    *
+    * @author Alex Dupre
+    * @version $Revision$
+    */
+   public static class SignatureECDSASHA384 extends SignatureECDSA {
+
+      /**
+       * Constructor SignatureRSASHA384
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureECDSASHA384() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA384;
+      }
+   }
+
+   /**
+    * Class SignatureRSASHA512
+    *
+    * @author Alex Dupre
+    * @version $Revision$
+    */
+   public static class SignatureECDSASHA512 extends SignatureECDSA {
+
+      /**
+       * Constructor SignatureRSASHA512
+       *
+       * @throws XMLSignatureException
+       */
+      public SignatureECDSASHA512() throws XMLSignatureException {
+         super();
+      }
+
+      /** @inheritDoc */
+      public String engineGetURI() {
+         return XMLSignature.ALGO_ID_SIGNATURE_ECDSA_SHA512;
+      }
+   }
+
 }

Modified: santuario/xml-security-java/trunk/src/org/apache/xml/security/resource/config.xml
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/apache/xml/security/resource/config.xml?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
Binary files - no diff available.

Modified: santuario/xml-security-java/trunk/src/org/apache/xml/security/signature/XMLSignature.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/apache/xml/security/signature/XMLSignature.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/apache/xml/security/signature/XMLSignature.java (original)
+++ santuario/xml-security-java/trunk/src/org/apache/xml/security/signature/XMLSignature.java Thu Dec 30 18:44:13 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright  1999-2009 The Apache Software Foundation.
+ * Copyright  1999-2010 The Apache Software Foundation.
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -107,6 +107,12 @@ public final class XMLSignature extends 
     public static final String ALGO_ID_MAC_HMAC_SHA512 = Constants.MoreAlgorithmsSpecNS + "hmac-sha512";
     /**Signature - Optional ECDSAwithSHA1 */
     public static final String ALGO_ID_SIGNATURE_ECDSA_SHA1 = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1";
+    /**Signature - Optional ECDSAwithSHA256 */
+    public static final String ALGO_ID_SIGNATURE_ECDSA_SHA256 = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256";
+    /**Signature - Optional ECDSAwithSHA384 */
+    public static final String ALGO_ID_SIGNATURE_ECDSA_SHA384 = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha384";
+    /**Signature - Optional ECDSAwithSHA512 */
+    public static final String ALGO_ID_SIGNATURE_ECDSA_SHA512 = "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512";
 
     /** ds:Signature.ds:SignedInfo element */
     private SignedInfo _signedInfo = null;

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMCanonicalizationMethod.java Thu Dec 30 18:44:13 2010
@@ -97,9 +97,4 @@ public class DOMCanonicalizationMethod e
 	return (getAlgorithm().equals(ocm.getAlgorithm()) && 
 	    DOMUtils.paramsEqual(getParameterSpec(), ocm.getParameterSpec()));
     }
-
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 42;
-    }
 }

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMDigestMethod.java Thu Dec 30 18:44:13 2010
@@ -172,11 +172,6 @@ public abstract class DOMDigestMethod ex
 	return (getAlgorithm().equals(odm.getAlgorithm()) && paramsEqual);
     }
 
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 51;
-    }
-
     /**
      * Marshals the algorithm-specific parameters to an Element and
      * appends it to the specified parent element. By default, this method

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMHMACSignatureMethod.java Thu Dec 30 18:44:13 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2009 The Apache Software Foundation.
+ * Copyright 2005-2010 The Apache Software Foundation.
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -48,13 +48,23 @@ import org.jcp.xml.dsig.internal.MacOutp
  *
  * @author Sean Mullan
  */
-public abstract class DOMHMACSignatureMethod extends DOMSignatureMethod {
+public abstract class DOMHMACSignatureMethod extends AbstractDOMSignatureMethod {
 
     private static Logger log = 
 	Logger.getLogger("org.jcp.xml.dsig.internal.dom");
+
+    // see RFC 4051 for these algorithm definitions
+    final static String HMAC_SHA256 =
+        "http://www.w3.org/2001/04/xmldsig-more#hmac-sha256";
+    final static String HMAC_SHA384 =
+        "http://www.w3.org/2001/04/xmldsig-more#hmac-sha384";
+    final static String HMAC_SHA512 =
+        "http://www.w3.org/2001/04/xmldsig-more#hmac-sha512";
+
     private Mac hmac;
     private int outputLength;
     private boolean outputLengthSet;
+    private SignatureMethodParameterSpec params;
 
     /**
      * Creates a <code>DOMHMACSignatureMethod</code> with the specified params 
@@ -64,7 +74,8 @@ public abstract class DOMHMACSignatureMe
      */
     DOMHMACSignatureMethod(AlgorithmParameterSpec params) 
 	throws InvalidAlgorithmParameterException {
-	super(params);
+        checkParams((SignatureMethodParameterSpec) params);
+        this.params = (SignatureMethodParameterSpec) params;
     }
 
     /**
@@ -73,7 +84,15 @@ public abstract class DOMHMACSignatureMe
      * @param smElem a SignatureMethod element
      */
     DOMHMACSignatureMethod(Element smElem) throws MarshalException {
-	super(smElem);
+        Element paramsElem = DOMUtils.getFirstChildElement(smElem);
+        if (paramsElem != null) {
+            params = unmarshalParams(paramsElem);
+        }
+        try {
+            checkParams(params);
+        } catch (InvalidAlgorithmParameterException iape) {
+            throw new MarshalException(iape);
+        }
     }
 
     void checkParams(SignatureMethodParameterSpec params) 
@@ -93,6 +112,10 @@ public abstract class DOMHMACSignatureMe
         }
     }
 
+    public final AlgorithmParameterSpec getParameterSpec() {
+        return params;
+    }
+
     SignatureMethodParameterSpec unmarshalParams(Element paramsElem) 
 	throws MarshalException {
         outputLength = new Integer
@@ -116,7 +139,7 @@ public abstract class DOMHMACSignatureMe
         parent.appendChild(hmacElem);
     }
 
-    boolean verify(Key key, DOMSignedInfo si, byte[] sig,
+    boolean verify(Key key, SignedInfo si, byte[] sig,
 	XMLValidateContext context) 
 	throws InvalidKeyException, SignatureException, XMLSignatureException {
         if (key == null || si == null || sig == null) {
@@ -127,7 +150,7 @@ public abstract class DOMHMACSignatureMe
         }
         if (hmac == null) {
             try {
-                hmac = Mac.getInstance(getSignatureAlgorithm());
+                hmac = Mac.getInstance(getJCAAlgorithm());
             } catch (NoSuchAlgorithmException nsae) {
                 throw new XMLSignatureException(nsae);
             }
@@ -137,13 +160,13 @@ public abstract class DOMHMACSignatureMe
                 ("HMACOutputLength must not be less than " + getDigestLength());
         }
         hmac.init((SecretKey) key);
-        si.canonicalize(context, new MacOutputStream(hmac));
+        ((DOMSignedInfo)si).canonicalize(context, new MacOutputStream(hmac));
         byte[] result = hmac.doFinal();
 
         return MessageDigest.isEqual(sig, result);
     }
 
-    byte[] sign(Key key, DOMSignedInfo si, XMLSignContext context) 
+    byte[] sign(Key key, SignedInfo si, XMLSignContext context) 
 	throws InvalidKeyException, XMLSignatureException {
         if (key == null || si == null) {
             throw new NullPointerException();
@@ -153,7 +176,7 @@ public abstract class DOMHMACSignatureMe
         }
         if (hmac == null) {
             try {
-                hmac = Mac.getInstance(getSignatureAlgorithm());
+                hmac = Mac.getInstance(getJCAAlgorithm());
             } catch (NoSuchAlgorithmException nsae) {
                 throw new XMLSignatureException(nsae);
             }
@@ -163,7 +186,7 @@ public abstract class DOMHMACSignatureMe
                 ("HMACOutputLength must not be less than " + getDigestLength());
         }
         hmac.init((SecretKey) key);
-        si.canonicalize(context, new MacOutputStream(hmac));
+        ((DOMSignedInfo)si).canonicalize(context, new MacOutputStream(hmac));
         return hmac.doFinal();
     }
 
@@ -195,9 +218,12 @@ public abstract class DOMHMACSignatureMe
         public String getAlgorithm() {
             return SignatureMethod.HMAC_SHA1;
         }
-        String getSignatureAlgorithm() {
+        String getJCAAlgorithm() {
             return "HmacSHA1";
         }
+        int getAlgorithmType() {
+            return HMAC;
+        }
         int getDigestLength() {
             return 160;
         }
@@ -214,9 +240,12 @@ public abstract class DOMHMACSignatureMe
         public String getAlgorithm() {
             return HMAC_SHA256;
         }
-        String getSignatureAlgorithm() {
+        String getJCAAlgorithm() {
             return "HmacSHA256";
         }
+        int getAlgorithmType() {
+            return HMAC;
+        }
         int getDigestLength() {
             return 256;
         }
@@ -233,9 +262,12 @@ public abstract class DOMHMACSignatureMe
         public String getAlgorithm() {
             return HMAC_SHA384;
         }
-        String getSignatureAlgorithm() {
+        String getJCAAlgorithm() {
             return "HmacSHA384";
         }
+        int getAlgorithmType() {
+            return HMAC;
+        }
         int getDigestLength() {
             return 384;
         }
@@ -252,9 +284,12 @@ public abstract class DOMHMACSignatureMe
         public String getAlgorithm() {
             return HMAC_SHA512;
         }
-        String getSignatureAlgorithm() {
+        String getJCAAlgorithm() {
             return "HmacSHA512";
         }
+        int getAlgorithmType() {
+            return HMAC;
+        }
         int getDigestLength() {
             return 512;
         }

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfo.java Thu Dec 30 18:44:13 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2009 The Apache Software Foundation.
+ * Copyright 2005-2010 The Apache Software Foundation.
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -105,7 +105,7 @@ public final class DOMKeyInfo extends DO
             } else if (localName.equals("KeyName")) {
 	        content.add(new DOMKeyName(childElem));
             } else if (localName.equals("KeyValue")) {
-	        content.add(new DOMKeyValue(childElem));
+	        content.add(DOMKeyValue.unmarshal(childElem));
             } else if (localName.equals("RetrievalMethod")) {
 	        content.add
 		    (new DOMRetrievalMethod(childElem, context, provider));
@@ -196,9 +196,4 @@ public final class DOMKeyInfo extends DO
 
 	return (keyInfoTypes.equals(oki.getContent()) && idsEqual);
     }
-
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 43;
-    }
 }

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyInfoFactory.java Thu Dec 30 18:44:13 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005-2009 The Apache Software Foundation.
+ * Copyright 2005-2010 The Apache Software Foundation.
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -54,7 +54,16 @@ public final class DOMKeyInfoFactory ext
     }
 
     public KeyValue newKeyValue(PublicKey key)  throws KeyException {
-	return new DOMKeyValue(key);
+        String algorithm = key.getAlgorithm();
+        if (algorithm.equals("DSA")) {
+            return new DOMKeyValue.DSA(key);
+        } else if (algorithm.equals("RSA")) {
+            return new DOMKeyValue.RSA(key);
+        } else if (algorithm.equals("EC")) {
+            return new DOMKeyValue.EC(key);
+        } else {
+	    throw new KeyException("unsupported key algorithm: " + algorithm);
+        }
     }
 
     public PGPData newPGPData(byte[] keyId) {

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyName.java Thu Dec 30 18:44:13 2010
@@ -86,9 +86,4 @@ public final class DOMKeyName extends DO
         KeyName okn = (KeyName) obj;
 	return name.equals(okn.getName());
     }
-
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 44;
-    }
 }

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java Thu Dec 30 18:44:13 2010
@@ -1,5 +1,5 @@
 /*
- * Copyright 2005 The Apache Software Foundation.
+ * Copyright 2005-2010 The Apache Software Foundation.
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -27,14 +27,25 @@ import javax.xml.crypto.dom.DOMCryptoCon
 import javax.xml.crypto.dsig.*;
 import javax.xml.crypto.dsig.keyinfo.KeyValue;
 
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.security.AccessController;
 import java.security.KeyException;
 import java.security.KeyFactory;
 import java.security.NoSuchAlgorithmException;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.security.PublicKey;
 import java.security.interfaces.DSAParams;
 import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.ECPublicKey;
 import java.security.interfaces.RSAPublicKey;
 import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.ECParameterSpec;
+import java.security.spec.ECPoint;
+import java.security.spec.ECPublicKeySpec;
+import java.security.spec.EllipticCurve;
 import java.security.spec.InvalidKeySpecException;
 import java.security.spec.KeySpec;
 import java.security.spec.RSAPublicKeySpec;
@@ -42,59 +53,46 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
+import org.apache.xml.security.exceptions.Base64DecodingException;
+import org.apache.xml.security.utils.Base64;
+
 /**
  * DOM-based implementation of KeyValue.
  *
  * @author Sean Mullan
  */
-public final class DOMKeyValue extends DOMStructure implements KeyValue {
-
-    private KeyFactory rsakf, dsakf;
-    private PublicKey publicKey;
-    private javax.xml.crypto.dom.DOMStructure externalPublicKey;
+public abstract class DOMKeyValue extends DOMStructure implements KeyValue {
 
-    // DSAKeyValue CryptoBinaries
-    private DOMCryptoBinary p, q, g, y, j, seed, pgen;
+    private static final String XMLDSIG_11_XMLNS 
+        = "http://www.w3.org/2009/xmldsig11#";
+    private final PublicKey publicKey;
 
-    // RSAKeyValue CryptoBinaries
-    private DOMCryptoBinary modulus, exponent;
-
-    public DOMKeyValue(PublicKey key)  throws KeyException {
+    public DOMKeyValue(PublicKey key) throws KeyException {
 	if (key == null) {
 	    throw new NullPointerException("key cannot be null");
 	}
 	this.publicKey = key;
-	if (key instanceof DSAPublicKey) {
-	    DSAPublicKey dkey = (DSAPublicKey) key;
-	    DSAParams params = dkey.getParams();
-	    p = new DOMCryptoBinary(params.getP());
-	    q = new DOMCryptoBinary(params.getQ());
-	    g = new DOMCryptoBinary(params.getG());
-	    y = new DOMCryptoBinary(dkey.getY());
-	} else if (key instanceof RSAPublicKey) {
-	    RSAPublicKey rkey = (RSAPublicKey) key;
-	    exponent = new DOMCryptoBinary(rkey.getPublicExponent());
-	    modulus = new DOMCryptoBinary(rkey.getModulus());
-	} else {
-	    throw new KeyException("unsupported key algorithm: " +
-		key.getAlgorithm());
-	}
     }
 
     /**
      * Creates a <code>DOMKeyValue</code> from an element.
      *
-     * @param kvElem a KeyValue element
+     * @param kvtElem a KeyValue child element
      */
-    public DOMKeyValue(Element kvElem) throws MarshalException {
+    public DOMKeyValue(Element kvtElem) throws MarshalException {
+        this.publicKey = unmarshalKeyValue(kvtElem);
+    }
+
+    static KeyValue unmarshal(Element kvElem) throws MarshalException {
 	Element kvtElem = DOMUtils.getFirstChildElement(kvElem);
         if (kvtElem.getLocalName().equals("DSAKeyValue")) {
-            publicKey = unmarshalDSAKeyValue(kvtElem);
+            return new DSA(kvtElem);
         } else if (kvtElem.getLocalName().equals("RSAKeyValue")) {
-            publicKey = unmarshalRSAKeyValue(kvtElem);
+            return new RSA(kvtElem);
+        } else if (kvtElem.getLocalName().equals("ECKeyValue")) {
+            return new EC(kvtElem);
         } else {
-	    publicKey = null;
-	    externalPublicKey = new javax.xml.crypto.dom.DOMStructure(kvtElem);
+            return new Unknown(kvtElem);
 	}
     }
 
@@ -118,122 +116,13 @@ public final class DOMKeyValue extends D
         parent.appendChild(kvElem);
     }
 
-    private void marshalPublicKey(Node parent, Document doc, String dsPrefix,
-	DOMCryptoContext context) throws MarshalException {
-        if (publicKey != null) {
-            if (publicKey instanceof DSAPublicKey) {
-                // create and append DSAKeyValue element
-                marshalDSAPublicKey(parent, doc, dsPrefix, context);
-            } else if (publicKey instanceof RSAPublicKey) {
-                // create and append RSAKeyValue element
-                marshalRSAPublicKey(parent, doc, dsPrefix, context);
-            } else {
-                throw new MarshalException(publicKey.getAlgorithm() +
-                    " public key algorithm not supported");
-            }
-        } else {
-	    parent.appendChild(externalPublicKey.getNode());
-        }
-    }
+    abstract void marshalPublicKey(Node parent, Document doc, String dsPrefix, 
+        DOMCryptoContext context) throws MarshalException;
 
-    private void marshalDSAPublicKey(Node parent, Document doc, 
-	String dsPrefix, DOMCryptoContext context) throws MarshalException {
-        Element dsaElem = DOMUtils.createElement
-	    (doc, "DSAKeyValue", XMLSignature.XMLNS, dsPrefix);
-        // parameters J, Seed & PgenCounter are not included
-        Element pElem = DOMUtils.createElement
-	    (doc, "P", XMLSignature.XMLNS, dsPrefix);
-        Element qElem = DOMUtils.createElement
-	    (doc, "Q", XMLSignature.XMLNS, dsPrefix);
-        Element gElem = DOMUtils.createElement
-	    (doc, "G", XMLSignature.XMLNS, dsPrefix);
-        Element yElem = DOMUtils.createElement
-	    (doc, "Y", XMLSignature.XMLNS, dsPrefix);
-        p.marshal(pElem, dsPrefix, context);
-        q.marshal(qElem, dsPrefix, context);
-        g.marshal(gElem, dsPrefix, context);
-        y.marshal(yElem, dsPrefix, context);
-        dsaElem.appendChild(pElem);
-        dsaElem.appendChild(qElem);
-        dsaElem.appendChild(gElem);
-        dsaElem.appendChild(yElem);
-        parent.appendChild(dsaElem);
-    }
-
-    private void marshalRSAPublicKey(Node parent, Document doc, 
-	String dsPrefix, DOMCryptoContext context) throws MarshalException {
-        Element rsaElem = DOMUtils.createElement
-	    (doc, "RSAKeyValue", XMLSignature.XMLNS, dsPrefix);
-        Element modulusElem = DOMUtils.createElement
-	    (doc, "Modulus", XMLSignature.XMLNS, dsPrefix);
-        Element exponentElem = DOMUtils.createElement
-	    (doc, "Exponent", XMLSignature.XMLNS, dsPrefix);
-	modulus.marshal(modulusElem, dsPrefix, context);
-	exponent.marshal(exponentElem, dsPrefix, context);
-        rsaElem.appendChild(modulusElem);
-        rsaElem.appendChild(exponentElem);
-        parent.appendChild(rsaElem);
-    }
+    abstract PublicKey unmarshalKeyValue(Element kvtElem) 
+	throws MarshalException;
 
-    private DSAPublicKey unmarshalDSAKeyValue(Element kvtElem) 
-	throws MarshalException {
-	if (dsakf == null) {
-	    try {
-	        dsakf = KeyFactory.getInstance("DSA");
-	    } catch (NoSuchAlgorithmException e) {
-	        throw new RuntimeException("unable to create DSA KeyFactory: " +
-		    e.getMessage());
-	    }
-	}
-	Element curElem = DOMUtils.getFirstChildElement(kvtElem);
-	// check for P and Q
-	if (curElem.getLocalName().equals("P")) {
-	    p = new DOMCryptoBinary(curElem.getFirstChild());
-	    curElem = DOMUtils.getNextSiblingElement(curElem);
-	    q = new DOMCryptoBinary(curElem.getFirstChild());
-	    curElem = DOMUtils.getNextSiblingElement(curElem);
-	} 
-        if (curElem.getLocalName().equals("G")) {
-            g = new DOMCryptoBinary(curElem.getFirstChild());
-	    curElem = DOMUtils.getNextSiblingElement(curElem);
-	}
-        y = new DOMCryptoBinary(curElem.getFirstChild());
-        curElem = DOMUtils.getNextSiblingElement(curElem);
-        if (curElem != null && curElem.getLocalName().equals("J")) {
-	    j = new DOMCryptoBinary(curElem.getFirstChild());
-	    curElem = DOMUtils.getNextSiblingElement(curElem);
-	}
-	if (curElem != null) {
-	    seed = new DOMCryptoBinary(curElem.getFirstChild());
-	    curElem = DOMUtils.getNextSiblingElement(curElem);
-	    pgen = new DOMCryptoBinary(curElem.getFirstChild());
-	}
-	//@@@ do we care about j, pgenCounter or seed?
-	DSAPublicKeySpec spec = new DSAPublicKeySpec
-	    (y.getBigNum(), p.getBigNum(), q.getBigNum(), g.getBigNum());
-        return (DSAPublicKey) generatePublicKey(dsakf, spec);
-    }
-
-    private RSAPublicKey unmarshalRSAKeyValue(Element kvtElem) 
-	throws MarshalException {
-	if (rsakf == null) {
-	    try {
-	        rsakf = KeyFactory.getInstance("RSA");
-	    } catch (NoSuchAlgorithmException e) {
-	        throw new RuntimeException("unable to create RSA KeyFactory: " +
-		    e.getMessage());
-	    }
-	}
-	Element modulusElem = DOMUtils.getFirstChildElement(kvtElem);
-        modulus = new DOMCryptoBinary(modulusElem.getFirstChild());
-	Element exponentElem = DOMUtils.getNextSiblingElement(modulusElem);
-        exponent = new DOMCryptoBinary(exponentElem.getFirstChild());
-        RSAPublicKeySpec spec = new RSAPublicKeySpec
-	    (modulus.getBigNum(), exponent.getBigNum());
-        return (RSAPublicKey) generatePublicKey(rsakf, spec);
-    }
-
-    private PublicKey generatePublicKey(KeyFactory kf, KeySpec keyspec) {
+    private static PublicKey generatePublicKey(KeyFactory kf, KeySpec keyspec) {
         try {
             return kf.generatePublic(keyspec);
         } catch (InvalidKeySpecException e) {
@@ -266,8 +155,307 @@ public final class DOMKeyValue extends D
         return true;
     }
 
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 45;
+    static final class RSA extends DOMKeyValue {
+        // RSAKeyValue CryptoBinaries
+        private DOMCryptoBinary modulus, exponent;
+        private KeyFactory rsakf;
+
+        RSA(PublicKey key) throws KeyException {
+            super(key);
+	    RSAPublicKey rkey = (RSAPublicKey) key;
+	    exponent = new DOMCryptoBinary(rkey.getPublicExponent());
+	    modulus = new DOMCryptoBinary(rkey.getModulus());
+        }
+
+        RSA(Element elem) throws MarshalException {
+            super(elem);
+        }
+
+        void marshalPublicKey(Node parent, Document doc, String dsPrefix, 
+            DOMCryptoContext context) throws MarshalException {
+            Element rsaElem = DOMUtils.createElement
+	        (doc, "RSAKeyValue", XMLSignature.XMLNS, dsPrefix);
+            Element modulusElem = DOMUtils.createElement
+	        (doc, "Modulus", XMLSignature.XMLNS, dsPrefix);
+            Element exponentElem = DOMUtils.createElement
+	        (doc, "Exponent", XMLSignature.XMLNS, dsPrefix);
+	    modulus.marshal(modulusElem, dsPrefix, context);
+	    exponent.marshal(exponentElem, dsPrefix, context);
+            rsaElem.appendChild(modulusElem);
+            rsaElem.appendChild(exponentElem);
+            parent.appendChild(rsaElem);
+        }
+
+        PublicKey unmarshalKeyValue(Element kvtElem) 
+	    throws MarshalException {
+	    if (rsakf == null) {
+	        try {
+	            rsakf = KeyFactory.getInstance("RSA");
+	        } catch (NoSuchAlgorithmException e) {
+	            throw new RuntimeException
+                        ("unable to create RSA KeyFactory: " + e.getMessage());
+	        }
+	    }
+	    Element modulusElem = DOMUtils.getFirstChildElement(kvtElem);
+            modulus = new DOMCryptoBinary(modulusElem.getFirstChild());
+	    Element exponentElem = DOMUtils.getNextSiblingElement(modulusElem);
+            exponent = new DOMCryptoBinary(exponentElem.getFirstChild());
+            RSAPublicKeySpec spec = new RSAPublicKeySpec
+	        (modulus.getBigNum(), exponent.getBigNum());
+            return generatePublicKey(rsakf, spec);
+        }
+    }
+
+    static final class DSA extends DOMKeyValue {
+        // DSAKeyValue CryptoBinaries
+        private DOMCryptoBinary p, q, g, y, j, seed, pgen;
+        private KeyFactory dsakf;
+
+        DSA(PublicKey key) throws KeyException {
+            super(key);
+	    DSAPublicKey dkey = (DSAPublicKey) key;
+	    DSAParams params = dkey.getParams();
+	    p = new DOMCryptoBinary(params.getP());
+	    q = new DOMCryptoBinary(params.getQ());
+	    g = new DOMCryptoBinary(params.getG());
+	    y = new DOMCryptoBinary(dkey.getY());
+        }
+
+        DSA(Element elem) throws MarshalException {
+            super(elem);
+        }
+
+        void marshalPublicKey(Node parent, Document doc, String dsPrefix, 
+            DOMCryptoContext context) throws MarshalException {
+            Element dsaElem = DOMUtils.createElement
+	        (doc, "DSAKeyValue", XMLSignature.XMLNS, dsPrefix);
+            // parameters J, Seed & PgenCounter are not included
+            Element pElem = DOMUtils.createElement
+	        (doc, "P", XMLSignature.XMLNS, dsPrefix);
+            Element qElem = DOMUtils.createElement
+	        (doc, "Q", XMLSignature.XMLNS, dsPrefix);
+            Element gElem = DOMUtils.createElement
+	        (doc, "G", XMLSignature.XMLNS, dsPrefix);
+            Element yElem = DOMUtils.createElement
+	        (doc, "Y", XMLSignature.XMLNS, dsPrefix);
+            p.marshal(pElem, dsPrefix, context);
+            q.marshal(qElem, dsPrefix, context);
+            g.marshal(gElem, dsPrefix, context);
+            y.marshal(yElem, dsPrefix, context);
+            dsaElem.appendChild(pElem);
+            dsaElem.appendChild(qElem);
+            dsaElem.appendChild(gElem);
+            dsaElem.appendChild(yElem);
+            parent.appendChild(dsaElem);
+        }
+
+        PublicKey unmarshalKeyValue(Element kvtElem) 
+	    throws MarshalException {
+	    if (dsakf == null) {
+	        try {
+	            dsakf = KeyFactory.getInstance("DSA");
+	        } catch (NoSuchAlgorithmException e) {
+	            throw new RuntimeException
+                        ("unable to create DSA KeyFactory: " + e.getMessage());
+	        }
+	    }
+	    Element curElem = DOMUtils.getFirstChildElement(kvtElem);
+	    // check for P and Q
+	    if (curElem.getLocalName().equals("P")) {
+	        p = new DOMCryptoBinary(curElem.getFirstChild());
+	        curElem = DOMUtils.getNextSiblingElement(curElem);
+	        q = new DOMCryptoBinary(curElem.getFirstChild());
+	        curElem = DOMUtils.getNextSiblingElement(curElem);
+	    } 
+            if (curElem.getLocalName().equals("G")) {
+                g = new DOMCryptoBinary(curElem.getFirstChild());
+	        curElem = DOMUtils.getNextSiblingElement(curElem);
+	    }
+            y = new DOMCryptoBinary(curElem.getFirstChild());
+            curElem = DOMUtils.getNextSiblingElement(curElem);
+            if (curElem != null && curElem.getLocalName().equals("J")) {
+	        j = new DOMCryptoBinary(curElem.getFirstChild());
+	        curElem = DOMUtils.getNextSiblingElement(curElem);
+	    }
+	    if (curElem != null) {
+	        seed = new DOMCryptoBinary(curElem.getFirstChild());
+	        curElem = DOMUtils.getNextSiblingElement(curElem);
+	        pgen = new DOMCryptoBinary(curElem.getFirstChild());
+	    }
+	    //@@@ do we care about j, pgenCounter or seed?
+	    DSAPublicKeySpec spec = new DSAPublicKeySpec
+	        (y.getBigNum(), p.getBigNum(), q.getBigNum(), g.getBigNum());
+            return generatePublicKey(dsakf, spec);
+        }
+    }
+
+    static final class EC extends DOMKeyValue {
+        // ECKeyValue CryptoBinaries
+        private byte[] ecPublicKey;
+        private KeyFactory eckf;
+        private ECParameterSpec ecParams;
+        private Method encodePoint, decodePoint, getCurveName,
+                       getECParameterSpec;
+
+        EC(PublicKey key) throws KeyException {
+            super(key);
+            ECPublicKey ecKey = (ECPublicKey) key;
+            ECPoint ecPoint = ecKey.getW();
+            ecParams = ecKey.getParams();
+            try {
+                AccessController.doPrivileged(
+                    new PrivilegedExceptionAction() {
+                        public Object run() throws
+                                ClassNotFoundException, NoSuchMethodException {
+                            getMethods();
+                            return null;
+                        }
+                    }
+                );
+            } catch (PrivilegedActionException pae) {
+                throw new KeyException("ECKeyValue not supported",
+                                        pae.getException());
+            }
+            Object[] args = new Object[] { ecPoint, ecParams.getCurve() };
+            try {
+                ecPublicKey = (byte[]) encodePoint.invoke(null, args);
+            } catch (IllegalAccessException iae) {
+                throw new KeyException(iae);
+            } catch (InvocationTargetException ite) {
+                throw new KeyException(ite);
+            }
+        }
+
+        EC(Element dmElem) throws MarshalException {
+            super(dmElem);
+        }
+
+        void getMethods() throws ClassNotFoundException, NoSuchMethodException {
+            Class c  = Class.forName("sun.security.ec.ECParameters");
+            Class[] params = new Class[] { ECPoint.class, EllipticCurve.class };
+            encodePoint = c.getMethod("encodePoint", params);
+            params = new Class[] { ECParameterSpec.class };
+            getCurveName = c.getMethod("getCurveName", params);
+            params = new Class[] { byte[].class, EllipticCurve.class };
+            decodePoint = c.getMethod("decodePoint", params);
+            c  = Class.forName("sun.security.ec.NamedCurve");
+            params = new Class[] { String.class };
+            getECParameterSpec = c.getMethod("getECParameterSpec", params);
+        }
+
+        void marshalPublicKey(Node parent, Document doc, String dsPrefix, 
+            DOMCryptoContext context) throws MarshalException {
+            String prefix = DOMUtils.getNSPrefix(context, XMLDSIG_11_XMLNS);
+            Element ecKeyValueElem = DOMUtils.createElement
+	        (doc, "ECKeyValue", XMLDSIG_11_XMLNS, prefix);
+            Element namedCurveElem = DOMUtils.createElement
+	        (doc, "NamedCurve", XMLDSIG_11_XMLNS, prefix);
+            Element publicKeyElem = DOMUtils.createElement
+	        (doc, "PublicKey", XMLDSIG_11_XMLNS, prefix);
+            Object[] args = new Object[] { ecParams };
+            try {
+                String oid = (String) getCurveName.invoke(null, args);
+                DOMUtils.setAttribute(namedCurveElem, "URI", "urn:oid:" + oid);
+            } catch (IllegalAccessException iae) {
+                throw new MarshalException(iae);
+            } catch (InvocationTargetException ite) {
+                throw new MarshalException(ite);
+            }
+	    String qname = (prefix == null || prefix.length() == 0) 
+		       ? "xmlns" : "xmlns:" + prefix;
+            namedCurveElem.setAttributeNS
+                ("http://www.w3.org/2000/xmlns/", qname, XMLDSIG_11_XMLNS);
+            ecKeyValueElem.appendChild(namedCurveElem);
+            String encoded = Base64.encode(ecPublicKey);
+            publicKeyElem.appendChild
+	        (DOMUtils.getOwnerDocument(publicKeyElem).createTextNode(encoded));
+            ecKeyValueElem.appendChild(publicKeyElem);
+            parent.appendChild(ecKeyValueElem);
+        }
+
+        PublicKey unmarshalKeyValue(Element kvtElem) 
+	    throws MarshalException {
+	    if (eckf == null) {
+	        try {
+	            eckf = KeyFactory.getInstance("EC");
+	        } catch (NoSuchAlgorithmException e) {
+	            throw new RuntimeException
+                        ("unable to create EC KeyFactory: " + e.getMessage());
+	        }
+	    }
+            try {
+                AccessController.doPrivileged(
+                    new PrivilegedExceptionAction() {
+                        public Object run() throws
+                                ClassNotFoundException, NoSuchMethodException {
+                            getMethods();
+                            return null;
+                        }
+                    }
+                );
+            } catch (PrivilegedActionException pae) {
+                throw new MarshalException("ECKeyValue not supported",
+                                           pae.getException());
+            }
+            ECParameterSpec ecParams = null;
+	    Element curElem = DOMUtils.getFirstChildElement(kvtElem);
+            if (curElem.getLocalName().equals("ECParameters")) {
+                throw new UnsupportedOperationException
+                    ("ECParameters not supported");
+            } else if (curElem.getLocalName().equals("NamedCurve")) {
+                String uri = DOMUtils.getAttributeValue(curElem, "URI");
+                // strip off "urn:oid"
+                if (uri.startsWith("urn:oid:")) {
+                    String oid = uri.substring(8);
+                    try {
+                        Object[] args = new Object[] { oid };
+                        ecParams = (ECParameterSpec)
+                                    getECParameterSpec.invoke(null, args);
+                    } catch (IllegalAccessException iae) {
+                        throw new MarshalException(iae);
+                    } catch (InvocationTargetException ite) {
+                        throw new MarshalException(ite);
+                    }
+                } else {
+                    throw new MarshalException("Invalid NamedCurve URI");
+                }
+            } else {
+                throw new MarshalException("Invalid ECKeyValue");
+            }
+	    curElem = DOMUtils.getNextSiblingElement(curElem);
+            ECPoint ecPoint = null;
+            try {
+                Object[] args = new Object[] { Base64.decode(curElem),
+                                               ecParams.getCurve() };
+                ecPoint = (ECPoint) decodePoint.invoke(null, args);
+            } catch (Base64DecodingException bde) {
+                throw new MarshalException("Invalid EC PublicKey", bde);
+            } catch (IllegalAccessException iae) {
+                throw new MarshalException(iae);
+            } catch (InvocationTargetException ite) {
+                throw new MarshalException(ite);
+            }
+/*
+                ecPoint = sun.security.ec.ECParameters.decodePoint(
+                    Base64.decode(curElem), ecParams.getCurve());
+*/
+            ECPublicKeySpec spec = new ECPublicKeySpec(ecPoint, ecParams);
+            return generatePublicKey(eckf, spec);
+        }
+    }
+
+    static final class Unknown extends DOMKeyValue {
+        private javax.xml.crypto.dom.DOMStructure externalPublicKey;
+        Unknown(Element elem) throws MarshalException {
+            super(elem);
+        }
+        PublicKey unmarshalKeyValue(Element kvElem) throws MarshalException {
+            externalPublicKey = new javax.xml.crypto.dom.DOMStructure(kvElem);
+            return null;
+        }
+        void marshalPublicKey(Node parent, Document doc, String dsPrefix, 
+            DOMCryptoContext context) throws MarshalException {
+	    parent.appendChild(externalPublicKey.getNode());
+        }
     }
 }

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMManifest.java Thu Dec 30 18:44:13 2010
@@ -131,9 +131,4 @@ public final class DOMManifest extends D
 
 	return (idsEqual && references.equals(oman.getReferences()));
     }
-
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 46;
-    }
 }

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMReference.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMReference.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMReference.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMReference.java Thu Dec 30 18:44:13 2010
@@ -519,11 +519,6 @@ public final class DOMReference extends 
             allTransforms.equals(oref.getTransforms()) && digestValuesEqual;
     }
 
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 47;
-    }
-
     boolean isDigested() {
 	return digested;
     }

Modified: santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java?rev=1053972&r1=1053971&r2=1053972&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java (original)
+++ santuario/xml-security-java/trunk/src/org/jcp/xml/dsig/internal/dom/DOMRetrievalMethod.java Thu Dec 30 18:44:13 2010
@@ -247,9 +247,4 @@ public final class DOMRetrievalMethod ex
 	return (uri.equals(orm.getURI()) && 
 	    transforms.equals(orm.getTransforms()) && typesEqual);
     }
-
-    public int hashCode() {
-	assert false : "hashCode not designed";
-	return 48;
-    }
 }