javax.xml.crypto.XMLStructure Java Examples
The following examples show how to use
javax.xml.crypto.XMLStructure.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: XMLDSigVerifier.java From alpha-wallet-android with MIT License | 5 votes |
private List getCertificateChainFromXML(List xmlElements) throws KeyStoreException { boolean found = false; List certs = null; for (int i = 0; i < xmlElements.size(); i++) { XMLStructure xmlStructure = (XMLStructure) xmlElements.get(i); if (xmlStructure instanceof X509Data) { if(found) throw new KeyStoreException("Duplicate X509Data element"); found = true; certs = (List<X509Certificate>) ((X509Data) xmlStructure).getContent(); } } return certs; }
Example #2
Source File: X509KeySelector.java From neoscada with Eclipse Public License 1.0 | 5 votes |
@Override public KeySelectorResult select ( final KeyInfo keyInfo, final KeySelector.Purpose purpose, final AlgorithmMethod method, final XMLCryptoContext context ) throws KeySelectorException { if ( keyInfo == null ) { throw new KeySelectorException ( "Null KeyInfo object!" ); } final SignatureMethod sm = (SignatureMethod)method; final List<?> list = keyInfo.getContent (); for ( final Object l : list ) { final XMLStructure xmlStructure = (XMLStructure)l; if ( xmlStructure instanceof X509Data ) { for ( final Object o : ( (X509Data)xmlStructure ).getContent () ) { KeySelectorResult result = null; if ( o instanceof X509Certificate ) { result = findPublicKey ( (X509Certificate)o, sm ); } if ( result != null ) { return result; } } } } throw new KeySelectorException ( "No KeyValue element found!" ); }
Example #3
Source File: GenerationTests.java From jdk8u-jdk with GNU General Public License v2.0 | 4 votes |
static void test_create_sign_spec() throws Exception { System.out.println("* Generating sign-spec.xml"); List<Reference> refs = new ArrayList<Reference>(2); // create reference 1 List<XPathType> types = new ArrayList<XPathType>(3); types.add(new XPathType(" //ToBeSigned ", XPathType.Filter.INTERSECT)); types.add(new XPathType(" //NotToBeSigned ", XPathType.Filter.SUBTRACT)); types.add(new XPathType(" //ReallyToBeSigned ", XPathType.Filter.UNION)); XPathFilter2ParameterSpec xp1 = new XPathFilter2ParameterSpec(types); refs.add(fac.newReference ("", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform(Transform.XPATH2, xp1)), null, null)); // create reference 2 List<Transform> trans2 = new ArrayList<Transform>(2); trans2.add(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)); XPathFilter2ParameterSpec xp2 = new XPathFilter2ParameterSpec (Collections.singletonList (new XPathType(" / ", XPathType.Filter.UNION))); trans2.add(fac.newTransform(Transform.XPATH2, xp2)); refs.add(fac.newReference("#signature-value", fac.newDigestMethod(DigestMethod.SHA1, null), trans2, null, null)); // create SignedInfo SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod (CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs); // create KeyInfo List<XMLStructure> kits = new ArrayList<XMLStructure>(2); kits.add(kifac.newKeyValue(validatingKey)); List<Object> xds = new ArrayList<Object>(2); xds.add("CN=User"); xds.add(signingCert); kits.add(kifac.newX509Data(xds)); KeyInfo ki = kifac.newKeyInfo(kits); // create XMLSignature XMLSignature sig = fac.newXMLSignature (si, ki, null, null, "signature-value"); Document doc = db.newDocument(); Element tbs1 = doc.createElementNS(null, "ToBeSigned"); Comment tbs1Com = doc.createComment(" comment "); Element tbs1Data = doc.createElementNS(null, "Data"); Element tbs1ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs1rtbs = doc.createElementNS(null, "ReallyToBeSigned"); Comment tbs1rtbsCom = doc.createComment(" comment "); Element tbs1rtbsData = doc.createElementNS(null, "Data"); tbs1rtbs.appendChild(tbs1rtbsCom); tbs1rtbs.appendChild(tbs1rtbsData); tbs1ntbs.appendChild(tbs1rtbs); tbs1.appendChild(tbs1Com); tbs1.appendChild(tbs1Data); tbs1.appendChild(tbs1ntbs); Element tbs2 = doc.createElementNS(null, "ToBeSigned"); Element tbs2Data = doc.createElementNS(null, "Data"); Element tbs2ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs2ntbsData = doc.createElementNS(null, "Data"); tbs2ntbs.appendChild(tbs2ntbsData); tbs2.appendChild(tbs2Data); tbs2.appendChild(tbs2ntbs); Element document = doc.createElementNS(null, "Document"); document.appendChild(tbs1); document.appendChild(tbs2); doc.appendChild(document); DOMSignContext dsc = new DOMSignContext(signingKey, document); sig.sign(dsc); // dumpDocument(doc, new FileWriter("/tmp/foo.xml")); DOMValidateContext dvc = new DOMValidateContext (new KeySelectors.KeyValueKeySelector(), document.getLastChild()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #4
Source File: GenerationTests.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
static void test_create_signature_reference_dependency() throws Exception { System.out.println("* Generating signature-reference-dependency.xml"); // create references List<Reference> refs = Collections.singletonList (fac.newReference("#object-1", sha1)); // create SignedInfo SignedInfo si = fac.newSignedInfo(withoutComments, rsaSha1, refs); // create objects List<XMLStructure> objs = new ArrayList<XMLStructure>(); // Object 1 List<Reference> manRefs = Collections.singletonList (fac.newReference("#object-2", sha1)); objs.add(fac.newXMLObject(Collections.singletonList (fac.newManifest(manRefs, "manifest-1")), "object-1", null, null)); // Object 2 Document doc = db.newDocument(); Element nc = doc.createElementNS(null, "NonCommentandus"); nc.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", ""); nc.appendChild(doc.createComment(" Commentandum ")); objs.add(fac.newXMLObject(Collections.singletonList (new DOMStructure(nc)), "object-2", null, null)); // create XMLSignature XMLSignature sig = fac.newXMLSignature(si, rsa, objs, "signature", null); DOMSignContext dsc = new DOMSignContext(getPrivateKey("RSA", 512), doc); sig.sign(dsc); // dumpDocument(doc, new PrintWriter(System.out)); DOMValidateContext dvc = new DOMValidateContext (kvks, doc.getDocumentElement()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #5
Source File: GenerationTests.java From openjdk-jdk9 with GNU General Public License v2.0 | 4 votes |
static void test_create_exc_signature() throws Exception { System.out.println("* Generating exc_signature.xml"); List<Reference> refs = new ArrayList<>(4); // create reference 1 refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList (fac.newTransform(CanonicalizationMethod.EXCLUSIVE, (TransformParameterSpec) null)), null, null)); // create reference 2 List<String> prefixList = new ArrayList<>(2); prefixList.add("bar"); prefixList.add("#default"); ExcC14NParameterSpec params = new ExcC14NParameterSpec(prefixList); refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList (fac.newTransform(CanonicalizationMethod.EXCLUSIVE, params)), null, null)); // create reference 3 refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, (TransformParameterSpec) null)), null, null)); // create reference 4 prefixList = new ArrayList<>(2); prefixList.add("bar"); prefixList.add("#default"); params = new ExcC14NParameterSpec(prefixList); refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, params)), null, null)); // create SignedInfo SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod (CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs); // create KeyInfo List<XMLStructure> kits = new ArrayList<>(2); kits.add(kifac.newKeyValue(validatingKey)); KeyInfo ki = kifac.newKeyInfo(kits); // create Objects Document doc = db.newDocument(); Element baz = doc.createElementNS("urn:bar", "bar:Baz"); Comment com = doc.createComment(" comment "); baz.appendChild(com); XMLObject obj = fac.newXMLObject(Collections.singletonList (new DOMStructure(baz)), "to-be-signed", null, null); // create XMLSignature XMLSignature sig = fac.newXMLSignature (si, ki, Collections.singletonList(obj), null, null); Element foo = doc.createElementNS("urn:foo", "Foo"); foo.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "urn:foo"); foo.setAttributeNS ("http://www.w3.org/2000/xmlns/", "xmlns:bar", "urn:bar"); doc.appendChild(foo); DOMSignContext dsc = new DOMSignContext(signingKey, foo); dsc.putNamespacePrefix(XMLSignature.XMLNS, "dsig"); sig.sign(dsc); // dumpDocument(doc, new FileWriter("/tmp/foo.xml")); DOMValidateContext dvc = new DOMValidateContext (new KeySelectors.KeyValueKeySelector(), foo.getLastChild()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #6
Source File: GenerationTests.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
static void test_create_exc_signature() throws Exception { System.out.println("* Generating exc_signature.xml"); List<Reference> refs = new ArrayList<Reference>(4); // create reference 1 refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList (fac.newTransform(CanonicalizationMethod.EXCLUSIVE, (TransformParameterSpec) null)), null, null)); // create reference 2 List<String> prefixList = new ArrayList<String>(2); prefixList.add("bar"); prefixList.add("#default"); ExcC14NParameterSpec params = new ExcC14NParameterSpec(prefixList); refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList (fac.newTransform(CanonicalizationMethod.EXCLUSIVE, params)), null, null)); // create reference 3 refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, (TransformParameterSpec) null)), null, null)); // create reference 4 prefixList = new ArrayList<String>(2); prefixList.add("bar"); prefixList.add("#default"); params = new ExcC14NParameterSpec(prefixList); refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, params)), null, null)); // create SignedInfo SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod (CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs); // create KeyInfo List<XMLStructure> kits = new ArrayList<XMLStructure>(2); kits.add(kifac.newKeyValue(validatingKey)); KeyInfo ki = kifac.newKeyInfo(kits); // create Objects Document doc = db.newDocument(); Element baz = doc.createElementNS("urn:bar", "bar:Baz"); Comment com = doc.createComment(" comment "); baz.appendChild(com); XMLObject obj = fac.newXMLObject(Collections.singletonList (new DOMStructure(baz)), "to-be-signed", null, null); // create XMLSignature XMLSignature sig = fac.newXMLSignature (si, ki, Collections.singletonList(obj), null, null); Element foo = doc.createElementNS("urn:foo", "Foo"); foo.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "urn:foo"); foo.setAttributeNS ("http://www.w3.org/2000/xmlns/", "xmlns:bar", "urn:bar"); doc.appendChild(foo); DOMSignContext dsc = new DOMSignContext(signingKey, foo); dsc.putNamespacePrefix(XMLSignature.XMLNS, "dsig"); sig.sign(dsc); // dumpDocument(doc, new FileWriter("/tmp/foo.xml")); DOMValidateContext dvc = new DOMValidateContext (new KeySelectors.KeyValueKeySelector(), foo.getLastChild()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #7
Source File: GenerationTests.java From jdk8u60 with GNU General Public License v2.0 | 4 votes |
static void test_create_exc_signature() throws Exception { System.out.println("* Generating exc_signature.xml"); List<Reference> refs = new ArrayList<Reference>(4); // create reference 1 refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList (fac.newTransform(CanonicalizationMethod.EXCLUSIVE, (TransformParameterSpec) null)), null, null)); // create reference 2 List<String> prefixList = new ArrayList<String>(2); prefixList.add("bar"); prefixList.add("#default"); ExcC14NParameterSpec params = new ExcC14NParameterSpec(prefixList); refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList (fac.newTransform(CanonicalizationMethod.EXCLUSIVE, params)), null, null)); // create reference 3 refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, (TransformParameterSpec) null)), null, null)); // create reference 4 prefixList = new ArrayList<String>(2); prefixList.add("bar"); prefixList.add("#default"); params = new ExcC14NParameterSpec(prefixList); refs.add(fac.newReference ("#xpointer(id('to-be-signed'))", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform (CanonicalizationMethod.EXCLUSIVE_WITH_COMMENTS, params)), null, null)); // create SignedInfo SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod (CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs); // create KeyInfo List<XMLStructure> kits = new ArrayList<XMLStructure>(2); kits.add(kifac.newKeyValue(validatingKey)); KeyInfo ki = kifac.newKeyInfo(kits); // create Objects Document doc = db.newDocument(); Element baz = doc.createElementNS("urn:bar", "bar:Baz"); Comment com = doc.createComment(" comment "); baz.appendChild(com); XMLObject obj = fac.newXMLObject(Collections.singletonList (new DOMStructure(baz)), "to-be-signed", null, null); // create XMLSignature XMLSignature sig = fac.newXMLSignature (si, ki, Collections.singletonList(obj), null, null); Element foo = doc.createElementNS("urn:foo", "Foo"); foo.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "urn:foo"); foo.setAttributeNS ("http://www.w3.org/2000/xmlns/", "xmlns:bar", "urn:bar"); doc.appendChild(foo); DOMSignContext dsc = new DOMSignContext(signingKey, foo); dsc.putNamespacePrefix(XMLSignature.XMLNS, "dsig"); sig.sign(dsc); // dumpDocument(doc, new FileWriter("/tmp/foo.xml")); DOMValidateContext dvc = new DOMValidateContext (new KeySelectors.KeyValueKeySelector(), foo.getLastChild()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #8
Source File: GenerationTests.java From jdk8u60 with GNU General Public License v2.0 | 4 votes |
static void test_create_signature_reference_dependency() throws Exception { System.out.println("* Generating signature-reference-dependency.xml"); // create references List<Reference> refs = Collections.singletonList (fac.newReference("#object-1", sha1)); // create SignedInfo SignedInfo si = fac.newSignedInfo(withoutComments, rsaSha1, refs); // create objects List<XMLStructure> objs = new ArrayList<XMLStructure>(); // Object 1 List<Reference> manRefs = Collections.singletonList (fac.newReference("#object-2", sha1)); objs.add(fac.newXMLObject(Collections.singletonList (fac.newManifest(manRefs, "manifest-1")), "object-1", null, null)); // Object 2 Document doc = db.newDocument(); Element nc = doc.createElementNS(null, "NonCommentandus"); nc.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", ""); nc.appendChild(doc.createComment(" Commentandum ")); objs.add(fac.newXMLObject(Collections.singletonList (new DOMStructure(nc)), "object-2", null, null)); // create XMLSignature XMLSignature sig = fac.newXMLSignature(si, rsa, objs, "signature", null); DOMSignContext dsc = new DOMSignContext(getPrivateKey("RSA"), doc); sig.sign(dsc); // dumpDocument(doc, new PrintWriter(System.out)); DOMValidateContext dvc = new DOMValidateContext (kvks, doc.getDocumentElement()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #9
Source File: GenerationTests.java From TencentKona-8 with GNU General Public License v2.0 | 4 votes |
static void test_create_sign_spec() throws Exception { System.out.println("* Generating sign-spec.xml"); List<Reference> refs = new ArrayList<Reference>(2); // create reference 1 List<XPathType> types = new ArrayList<XPathType>(3); types.add(new XPathType(" //ToBeSigned ", XPathType.Filter.INTERSECT)); types.add(new XPathType(" //NotToBeSigned ", XPathType.Filter.SUBTRACT)); types.add(new XPathType(" //ReallyToBeSigned ", XPathType.Filter.UNION)); XPathFilter2ParameterSpec xp1 = new XPathFilter2ParameterSpec(types); refs.add(fac.newReference ("", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform(Transform.XPATH2, xp1)), null, null)); // create reference 2 List<Transform> trans2 = new ArrayList<Transform>(2); trans2.add(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)); XPathFilter2ParameterSpec xp2 = new XPathFilter2ParameterSpec (Collections.singletonList (new XPathType(" / ", XPathType.Filter.UNION))); trans2.add(fac.newTransform(Transform.XPATH2, xp2)); refs.add(fac.newReference("#signature-value", fac.newDigestMethod(DigestMethod.SHA1, null), trans2, null, null)); // create SignedInfo SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod (CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs); // create KeyInfo List<XMLStructure> kits = new ArrayList<XMLStructure>(2); kits.add(kifac.newKeyValue(validatingKey)); List<Object> xds = new ArrayList<Object>(2); xds.add("CN=User"); xds.add(signingCert); kits.add(kifac.newX509Data(xds)); KeyInfo ki = kifac.newKeyInfo(kits); // create XMLSignature XMLSignature sig = fac.newXMLSignature (si, ki, null, null, "signature-value"); Document doc = db.newDocument(); Element tbs1 = doc.createElementNS(null, "ToBeSigned"); Comment tbs1Com = doc.createComment(" comment "); Element tbs1Data = doc.createElementNS(null, "Data"); Element tbs1ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs1rtbs = doc.createElementNS(null, "ReallyToBeSigned"); Comment tbs1rtbsCom = doc.createComment(" comment "); Element tbs1rtbsData = doc.createElementNS(null, "Data"); tbs1rtbs.appendChild(tbs1rtbsCom); tbs1rtbs.appendChild(tbs1rtbsData); tbs1ntbs.appendChild(tbs1rtbs); tbs1.appendChild(tbs1Com); tbs1.appendChild(tbs1Data); tbs1.appendChild(tbs1ntbs); Element tbs2 = doc.createElementNS(null, "ToBeSigned"); Element tbs2Data = doc.createElementNS(null, "Data"); Element tbs2ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs2ntbsData = doc.createElementNS(null, "Data"); tbs2ntbs.appendChild(tbs2ntbsData); tbs2.appendChild(tbs2Data); tbs2.appendChild(tbs2ntbs); Element document = doc.createElementNS(null, "Document"); document.appendChild(tbs1); document.appendChild(tbs2); doc.appendChild(document); DOMSignContext dsc = new DOMSignContext(signingKey, document); sig.sign(dsc); // dumpDocument(doc, new FileWriter("/tmp/foo.xml")); DOMValidateContext dvc = new DOMValidateContext (new KeySelectors.KeyValueKeySelector(), document.getLastChild()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #10
Source File: GenerationTests.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
static void test_create_sign_spec() throws Exception { System.out.println("* Generating sign-spec.xml"); List<Reference> refs = new ArrayList<Reference>(2); // create reference 1 List<XPathType> types = new ArrayList<XPathType>(3); types.add(new XPathType(" //ToBeSigned ", XPathType.Filter.INTERSECT)); types.add(new XPathType(" //NotToBeSigned ", XPathType.Filter.SUBTRACT)); types.add(new XPathType(" //ReallyToBeSigned ", XPathType.Filter.UNION)); XPathFilter2ParameterSpec xp1 = new XPathFilter2ParameterSpec(types); refs.add(fac.newReference ("", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform(Transform.XPATH2, xp1)), null, null)); // create reference 2 List<Transform> trans2 = new ArrayList<Transform>(2); trans2.add(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)); XPathFilter2ParameterSpec xp2 = new XPathFilter2ParameterSpec (Collections.singletonList (new XPathType(" / ", XPathType.Filter.UNION))); trans2.add(fac.newTransform(Transform.XPATH2, xp2)); refs.add(fac.newReference("#signature-value", fac.newDigestMethod(DigestMethod.SHA1, null), trans2, null, null)); // create SignedInfo SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod (CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs); // create KeyInfo List<XMLStructure> kits = new ArrayList<XMLStructure>(2); kits.add(kifac.newKeyValue(validatingKey)); List<Object> xds = new ArrayList<Object>(2); xds.add("CN=User"); xds.add(signingCert); kits.add(kifac.newX509Data(xds)); KeyInfo ki = kifac.newKeyInfo(kits); // create XMLSignature XMLSignature sig = fac.newXMLSignature (si, ki, null, null, "signature-value"); Document doc = db.newDocument(); Element tbs1 = doc.createElementNS(null, "ToBeSigned"); Comment tbs1Com = doc.createComment(" comment "); Element tbs1Data = doc.createElementNS(null, "Data"); Element tbs1ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs1rtbs = doc.createElementNS(null, "ReallyToBeSigned"); Comment tbs1rtbsCom = doc.createComment(" comment "); Element tbs1rtbsData = doc.createElementNS(null, "Data"); tbs1rtbs.appendChild(tbs1rtbsCom); tbs1rtbs.appendChild(tbs1rtbsData); tbs1ntbs.appendChild(tbs1rtbs); tbs1.appendChild(tbs1Com); tbs1.appendChild(tbs1Data); tbs1.appendChild(tbs1ntbs); Element tbs2 = doc.createElementNS(null, "ToBeSigned"); Element tbs2Data = doc.createElementNS(null, "Data"); Element tbs2ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs2ntbsData = doc.createElementNS(null, "Data"); tbs2ntbs.appendChild(tbs2ntbsData); tbs2.appendChild(tbs2Data); tbs2.appendChild(tbs2ntbs); Element document = doc.createElementNS(null, "Document"); document.appendChild(tbs1); document.appendChild(tbs2); doc.appendChild(document); DOMSignContext dsc = new DOMSignContext(signingKey, document); sig.sign(dsc); // dumpDocument(doc, new FileWriter("/tmp/foo.xml")); DOMValidateContext dvc = new DOMValidateContext (new KeySelectors.KeyValueKeySelector(), document.getLastChild()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #11
Source File: GenerationTests.java From dragonwell8_jdk with GNU General Public License v2.0 | 4 votes |
static void test_create_signature_reference_dependency() throws Exception { System.out.println("* Generating signature-reference-dependency.xml"); // create references List<Reference> refs = Collections.singletonList (fac.newReference("#object-1", sha1)); // create SignedInfo SignedInfo si = fac.newSignedInfo(withoutComments, rsaSha1, refs); // create objects List<XMLStructure> objs = new ArrayList<XMLStructure>(); // Object 1 List<Reference> manRefs = Collections.singletonList (fac.newReference("#object-2", sha1)); objs.add(fac.newXMLObject(Collections.singletonList (fac.newManifest(manRefs, "manifest-1")), "object-1", null, null)); // Object 2 Document doc = db.newDocument(); Element nc = doc.createElementNS(null, "NonCommentandus"); nc.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", ""); nc.appendChild(doc.createComment(" Commentandum ")); objs.add(fac.newXMLObject(Collections.singletonList (new DOMStructure(nc)), "object-2", null, null)); // create XMLSignature XMLSignature sig = fac.newXMLSignature(si, rsa, objs, "signature", null); DOMSignContext dsc = new DOMSignContext(getPrivateKey("RSA", 512), doc); sig.sign(dsc); // dumpDocument(doc, new PrintWriter(System.out)); DOMValidateContext dvc = new DOMValidateContext (kvks, doc.getDocumentElement()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #12
Source File: GenerationTests.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
static void test_create_signature_reference_dependency() throws Exception { System.out.println("* Generating signature-reference-dependency.xml"); // create references List<Reference> refs = Collections.singletonList (fac.newReference("#object-1", sha1)); // create SignedInfo SignedInfo si = fac.newSignedInfo(withoutComments, rsaSha1, refs); // create objects List<XMLStructure> objs = new ArrayList<XMLStructure>(); // Object 1 List<Reference> manRefs = Collections.singletonList (fac.newReference("#object-2", sha1)); objs.add(fac.newXMLObject(Collections.singletonList (fac.newManifest(manRefs, "manifest-1")), "object-1", null, null)); // Object 2 Document doc = db.newDocument(); Element nc = doc.createElementNS(null, "NonCommentandus"); nc.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", ""); nc.appendChild(doc.createComment(" Commentandum ")); objs.add(fac.newXMLObject(Collections.singletonList (new DOMStructure(nc)), "object-2", null, null)); // create XMLSignature XMLSignature sig = fac.newXMLSignature(si, rsa, objs, "signature", null); DOMSignContext dsc = new DOMSignContext(getPrivateKey("RSA", 512), doc); sig.sign(dsc); // dumpDocument(doc, new PrintWriter(System.out)); DOMValidateContext dvc = new DOMValidateContext (kvks, doc.getDocumentElement()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #13
Source File: GenerationTests.java From openjdk-jdk8u with GNU General Public License v2.0 | 4 votes |
static void test_create_sign_spec() throws Exception { System.out.println("* Generating sign-spec.xml"); List<Reference> refs = new ArrayList<Reference>(2); // create reference 1 List<XPathType> types = new ArrayList<XPathType>(3); types.add(new XPathType(" //ToBeSigned ", XPathType.Filter.INTERSECT)); types.add(new XPathType(" //NotToBeSigned ", XPathType.Filter.SUBTRACT)); types.add(new XPathType(" //ReallyToBeSigned ", XPathType.Filter.UNION)); XPathFilter2ParameterSpec xp1 = new XPathFilter2ParameterSpec(types); refs.add(fac.newReference ("", fac.newDigestMethod(DigestMethod.SHA1, null), Collections.singletonList(fac.newTransform(Transform.XPATH2, xp1)), null, null)); // create reference 2 List<Transform> trans2 = new ArrayList<Transform>(2); trans2.add(fac.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null)); XPathFilter2ParameterSpec xp2 = new XPathFilter2ParameterSpec (Collections.singletonList (new XPathType(" / ", XPathType.Filter.UNION))); trans2.add(fac.newTransform(Transform.XPATH2, xp2)); refs.add(fac.newReference("#signature-value", fac.newDigestMethod(DigestMethod.SHA1, null), trans2, null, null)); // create SignedInfo SignedInfo si = fac.newSignedInfo( fac.newCanonicalizationMethod (CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec) null), fac.newSignatureMethod(SignatureMethod.DSA_SHA1, null), refs); // create KeyInfo List<XMLStructure> kits = new ArrayList<XMLStructure>(2); kits.add(kifac.newKeyValue(validatingKey)); List<Object> xds = new ArrayList<Object>(2); xds.add("CN=User"); xds.add(signingCert); kits.add(kifac.newX509Data(xds)); KeyInfo ki = kifac.newKeyInfo(kits); // create XMLSignature XMLSignature sig = fac.newXMLSignature (si, ki, null, null, "signature-value"); Document doc = db.newDocument(); Element tbs1 = doc.createElementNS(null, "ToBeSigned"); Comment tbs1Com = doc.createComment(" comment "); Element tbs1Data = doc.createElementNS(null, "Data"); Element tbs1ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs1rtbs = doc.createElementNS(null, "ReallyToBeSigned"); Comment tbs1rtbsCom = doc.createComment(" comment "); Element tbs1rtbsData = doc.createElementNS(null, "Data"); tbs1rtbs.appendChild(tbs1rtbsCom); tbs1rtbs.appendChild(tbs1rtbsData); tbs1ntbs.appendChild(tbs1rtbs); tbs1.appendChild(tbs1Com); tbs1.appendChild(tbs1Data); tbs1.appendChild(tbs1ntbs); Element tbs2 = doc.createElementNS(null, "ToBeSigned"); Element tbs2Data = doc.createElementNS(null, "Data"); Element tbs2ntbs = doc.createElementNS(null, "NotToBeSigned"); Element tbs2ntbsData = doc.createElementNS(null, "Data"); tbs2ntbs.appendChild(tbs2ntbsData); tbs2.appendChild(tbs2Data); tbs2.appendChild(tbs2ntbs); Element document = doc.createElementNS(null, "Document"); document.appendChild(tbs1); document.appendChild(tbs2); doc.appendChild(document); DOMSignContext dsc = new DOMSignContext(signingKey, document); sig.sign(dsc); // dumpDocument(doc, new FileWriter("/tmp/foo.xml")); DOMValidateContext dvc = new DOMValidateContext (new KeySelectors.KeyValueKeySelector(), document.getLastChild()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #14
Source File: GenerationTests.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 4 votes |
static void test_create_signature_reference_dependency() throws Exception { System.out.println("* Generating signature-reference-dependency.xml"); // create references List<Reference> refs = Collections.singletonList (fac.newReference("#object-1", sha1)); // create SignedInfo SignedInfo si = fac.newSignedInfo(withoutComments, rsaSha1, refs); // create objects List<XMLStructure> objs = new ArrayList<XMLStructure>(); // Object 1 List<Reference> manRefs = Collections.singletonList (fac.newReference("#object-2", sha1)); objs.add(fac.newXMLObject(Collections.singletonList (fac.newManifest(manRefs, "manifest-1")), "object-1", null, null)); // Object 2 Document doc = db.newDocument(); Element nc = doc.createElementNS(null, "NonCommentandus"); nc.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", ""); nc.appendChild(doc.createComment(" Commentandum ")); objs.add(fac.newXMLObject(Collections.singletonList (new DOMStructure(nc)), "object-2", null, null)); // create XMLSignature XMLSignature sig = fac.newXMLSignature(si, rsa, objs, "signature", null); DOMSignContext dsc = new DOMSignContext(getPrivateKey("RSA", 512), doc); sig.sign(dsc); // dumpDocument(doc, new PrintWriter(System.out)); DOMValidateContext dvc = new DOMValidateContext (kvks, doc.getDocumentElement()); XMLSignature sig2 = fac.unmarshalXMLSignature(dvc); if (sig.equals(sig2) == false) { throw new Exception ("Unmarshalled signature is not equal to generated signature"); } if (sig2.validate(dvc) == false) { throw new Exception("Validation of generated signature failed"); } System.out.println(); }
Example #15
Source File: XSLTTransformParameterSpec.java From jdk8u60 with GNU General Public License v2.0 | 3 votes |
/** * Creates an <code>XSLTTransformParameterSpec</code> with the specified * stylesheet. * * @param stylesheet the XSLT stylesheet to be used * @throws NullPointerException if <code>stylesheet</code> is * <code>null</code> */ public XSLTTransformParameterSpec(XMLStructure stylesheet) { if (stylesheet == null) { throw new NullPointerException(); } this.stylesheet = stylesheet; }
Example #16
Source File: XSLTTransformParameterSpec.java From TencentKona-8 with GNU General Public License v2.0 | 3 votes |
/** * Creates an <code>XSLTTransformParameterSpec</code> with the specified * stylesheet. * * @param stylesheet the XSLT stylesheet to be used * @throws NullPointerException if <code>stylesheet</code> is * <code>null</code> */ public XSLTTransformParameterSpec(XMLStructure stylesheet) { if (stylesheet == null) { throw new NullPointerException(); } this.stylesheet = stylesheet; }
Example #17
Source File: XSLTTransformParameterSpec.java From dragonwell8_jdk with GNU General Public License v2.0 | 3 votes |
/** * Creates an <code>XSLTTransformParameterSpec</code> with the specified * stylesheet. * * @param stylesheet the XSLT stylesheet to be used * @throws NullPointerException if <code>stylesheet</code> is * <code>null</code> */ public XSLTTransformParameterSpec(XMLStructure stylesheet) { if (stylesheet == null) { throw new NullPointerException(); } this.stylesheet = stylesheet; }
Example #18
Source File: XSLTTransformParameterSpec.java From openjdk-jdk9 with GNU General Public License v2.0 | 3 votes |
/** * Creates an <code>XSLTTransformParameterSpec</code> with the specified * stylesheet. * * @param stylesheet the XSLT stylesheet to be used * @throws NullPointerException if <code>stylesheet</code> is * <code>null</code> */ public XSLTTransformParameterSpec(XMLStructure stylesheet) { if (stylesheet == null) { throw new NullPointerException(); } this.stylesheet = stylesheet; }
Example #19
Source File: XSLTTransformParameterSpec.java From JDKSourceCode1.8 with MIT License | 3 votes |
/** * Creates an <code>XSLTTransformParameterSpec</code> with the specified * stylesheet. * * @param stylesheet the XSLT stylesheet to be used * @throws NullPointerException if <code>stylesheet</code> is * <code>null</code> */ public XSLTTransformParameterSpec(XMLStructure stylesheet) { if (stylesheet == null) { throw new NullPointerException(); } this.stylesheet = stylesheet; }
Example #20
Source File: XSLTTransformParameterSpec.java From jdk1.8-source-analysis with Apache License 2.0 | 3 votes |
/** * Creates an <code>XSLTTransformParameterSpec</code> with the specified * stylesheet. * * @param stylesheet the XSLT stylesheet to be used * @throws NullPointerException if <code>stylesheet</code> is * <code>null</code> */ public XSLTTransformParameterSpec(XMLStructure stylesheet) { if (stylesheet == null) { throw new NullPointerException(); } this.stylesheet = stylesheet; }
Example #21
Source File: XMLSignatureFactory.java From JDKSourceCode1.8 with MIT License | 2 votes |
/** * Creates a <code>CanonicalizationMethod</code> for the specified * algorithm URI and parameters. The parameters are specified as a * mechanism-specific <code>XMLStructure</code> (ex: {@link DOMStructure}). * This method is useful when the parameters are in XML form or there is * no standard class for specifying the parameters. * * @param algorithm the URI identifying the canonicalization algorithm * @param params a mechanism-specific XML structure from which to * unmarshal the parameters from (may be <code>null</code> if * not required or optional) * @return the <code>CanonicalizationMethod</code> * @throws ClassCastException if the type of <code>params</code> is * inappropriate for this <code>XMLSignatureFactory</code> * @throws InvalidAlgorithmParameterException if the specified parameters * are inappropriate for the requested algorithm * @throws NoSuchAlgorithmException if an implementation of the * specified algorithm cannot be found * @throws NullPointerException if <code>algorithm</code> is * <code>null</code> */ public abstract CanonicalizationMethod newCanonicalizationMethod( String algorithm, XMLStructure params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException;
Example #22
Source File: TransformService.java From JDKSourceCode1.8 with MIT License | 2 votes |
/** * Marshals the algorithm-specific parameters. If there are no parameters * to be marshalled, this method returns without throwing an exception. * * @param parent a mechanism-specific structure containing the parent * node that the marshalled parameters should be appended to * @param context the <code>XMLCryptoContext</code> containing * additional context (may be <code>null</code> if not applicable) * @throws ClassCastException if the type of <code>parent</code> or * <code>context</code> is not compatible with this * <code>TransformService</code> * @throws NullPointerException if <code>parent</code> is <code>null</code> * @throws MarshalException if the parameters cannot be marshalled */ public abstract void marshalParams (XMLStructure parent, XMLCryptoContext context) throws MarshalException;
Example #23
Source File: TransformService.java From JDKSourceCode1.8 with MIT License | 2 votes |
/** * Initializes this <code>TransformService</code> with the specified * parameters and document context. * * @param parent a mechanism-specific structure containing the parent * structure * @param context the <code>XMLCryptoContext</code> containing * additional context (may be <code>null</code> if not applicable) * @throws ClassCastException if the type of <code>parent</code> or * <code>context</code> is not compatible with this * <code>TransformService</code> * @throws NullPointerException if <code>parent</code> is <code>null</code> * @throws InvalidAlgorithmParameterException if the specified parameters * are invalid for this algorithm */ public abstract void init(XMLStructure parent, XMLCryptoContext context) throws InvalidAlgorithmParameterException;
Example #24
Source File: XMLSignatureFactory.java From jdk8u-jdk with GNU General Public License v2.0 | 2 votes |
/** * Creates a <code>CanonicalizationMethod</code> for the specified * algorithm URI and parameters. The parameters are specified as a * mechanism-specific <code>XMLStructure</code> (ex: {@link DOMStructure}). * This method is useful when the parameters are in XML form or there is * no standard class for specifying the parameters. * * @param algorithm the URI identifying the canonicalization algorithm * @param params a mechanism-specific XML structure from which to * unmarshal the parameters from (may be <code>null</code> if * not required or optional) * @return the <code>CanonicalizationMethod</code> * @throws ClassCastException if the type of <code>params</code> is * inappropriate for this <code>XMLSignatureFactory</code> * @throws InvalidAlgorithmParameterException if the specified parameters * are inappropriate for the requested algorithm * @throws NoSuchAlgorithmException if an implementation of the * specified algorithm cannot be found * @throws NullPointerException if <code>algorithm</code> is * <code>null</code> */ public abstract CanonicalizationMethod newCanonicalizationMethod( String algorithm, XMLStructure params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException;
Example #25
Source File: KeyInfo.java From JDKSourceCode1.8 with MIT License | 2 votes |
/** * Marshals the key info to XML. * * @param parent a mechanism-specific structure containing the parent node * that the marshalled key info will be appended to * @param context the <code>XMLCryptoContext</code> containing additional * context (may be null if not applicable) * @throws ClassCastException if the type of <code>parent</code> or * <code>context</code> is not compatible with this key info * @throws MarshalException if the key info cannot be marshalled * @throws NullPointerException if <code>parent</code> is <code>null</code> */ void marshal(XMLStructure parent, XMLCryptoContext context) throws MarshalException;
Example #26
Source File: KeyInfoFactory.java From JDKSourceCode1.8 with MIT License | 2 votes |
/** * Unmarshals a new <code>KeyInfo</code> instance from a * mechanism-specific <code>XMLStructure</code> (ex: {@link DOMStructure}) * instance. * * @param xmlStructure a mechanism-specific XML structure from which to * unmarshal the keyinfo from * @return the <code>KeyInfo</code> * @throws NullPointerException if <code>xmlStructure</code> is * <code>null</code> * @throws ClassCastException if the type of <code>xmlStructure</code> is * inappropriate for this factory * @throws MarshalException if an unrecoverable exception occurs during * unmarshalling */ public abstract KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure) throws MarshalException;
Example #27
Source File: XMLSignatureFactory.java From JDKSourceCode1.8 with MIT License | 2 votes |
/** * Unmarshals a new <code>XMLSignature</code> instance from a * mechanism-specific <code>XMLStructure</code> instance. * This method is useful if you only want to unmarshal (and not * validate) an <code>XMLSignature</code>. * * @param xmlStructure a mechanism-specific XML structure from which to * unmarshal the signature from * @return the <code>XMLSignature</code> * @throws NullPointerException if <code>xmlStructure</code> is * <code>null</code> * @throws ClassCastException if the type of <code>xmlStructure</code> is * inappropriate for this factory * @throws MarshalException if an unrecoverable exception occurs * during unmarshalling */ public abstract XMLSignature unmarshalXMLSignature (XMLStructure xmlStructure) throws MarshalException;
Example #28
Source File: TransformService.java From jdk8u60 with GNU General Public License v2.0 | 2 votes |
/** * Marshals the algorithm-specific parameters. If there are no parameters * to be marshalled, this method returns without throwing an exception. * * @param parent a mechanism-specific structure containing the parent * node that the marshalled parameters should be appended to * @param context the <code>XMLCryptoContext</code> containing * additional context (may be <code>null</code> if not applicable) * @throws ClassCastException if the type of <code>parent</code> or * <code>context</code> is not compatible with this * <code>TransformService</code> * @throws NullPointerException if <code>parent</code> is <code>null</code> * @throws MarshalException if the parameters cannot be marshalled */ public abstract void marshalParams (XMLStructure parent, XMLCryptoContext context) throws MarshalException;
Example #29
Source File: XMLSignatureFactory.java From openjdk-jdk9 with GNU General Public License v2.0 | 2 votes |
/** * Creates a <code>SignatureProperty</code> containing the specified * list of {@link XMLStructure}s, target URI and optional id. * * @param content a list of one or more <code>XMLStructure</code>s. The list * is defensively copied to protect against subsequent modification. * @param target the target URI of the Signature that this property applies * to * @param id the id (may be <code>null</code>) * @return a <code>SignatureProperty</code> * @throws NullPointerException if <code>content</code> or * <code>target</code> is <code>null</code> * @throws IllegalArgumentException if <code>content</code> is empty * @throws ClassCastException if <code>content</code> contains any * entries that are not of type {@link XMLStructure} */ public abstract SignatureProperty newSignatureProperty (List<? extends XMLStructure> content, String target, String id);
Example #30
Source File: XMLSignatureFactory.java From openjdk-jdk8u-backup with GNU General Public License v2.0 | 2 votes |
/** * Creates a <code>CanonicalizationMethod</code> for the specified * algorithm URI and parameters. The parameters are specified as a * mechanism-specific <code>XMLStructure</code> (ex: {@link DOMStructure}). * This method is useful when the parameters are in XML form or there is * no standard class for specifying the parameters. * * @param algorithm the URI identifying the canonicalization algorithm * @param params a mechanism-specific XML structure from which to * unmarshal the parameters from (may be <code>null</code> if * not required or optional) * @return the <code>CanonicalizationMethod</code> * @throws ClassCastException if the type of <code>params</code> is * inappropriate for this <code>XMLSignatureFactory</code> * @throws InvalidAlgorithmParameterException if the specified parameters * are inappropriate for the requested algorithm * @throws NoSuchAlgorithmException if an implementation of the * specified algorithm cannot be found * @throws NullPointerException if <code>algorithm</code> is * <code>null</code> */ public abstract CanonicalizationMethod newCanonicalizationMethod( String algorithm, XMLStructure params) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException;