Formålet med dette dokument er at beskrive hvordan et udviklingsmiljø, til videreudvikling af Seal.Java services, kan sættes op, samt hvordan koden bygges, deployes og testes.
Først beskrives de softwaremæssige krav, der er til miljøet, samt hvordan kode hentes og bygges. Dernæst beskrives deploymentmiljøet.
Seal.java 3.x kræver Java 21 for at bygge.
Kildekoden til Seal.java findes i SDS Bitbucket:
https://git.nspop.dk/projects/LIB/repos/seal.java/browse
De binære pakker er tilgængelige igennem NSPOPs Nexus (pakke manager):
https://nexus.nspop.dk/nexus/service/rest/repository/browse/public/dk/sosi/seal/seal/
Her findes også SNAPSHOT udgaver, som kan bruges under udvikling af funktionalitet, der skal testes inden release.
Koden bygges vha. Maven vha. følgende kommando i roden af projektet:
mvn clean install |
Unittests afvikles under byg, men kan også kaldes selvstændigt vha.:
mvn test |
Herunder vejledning til udviklingen i forskellige områder af Seal.java. I Seal.Java stiller helt overordnet følgende funktionalitet til rådighed:
Kommer senere...
Kommer senere...
Definition af en digital signatur er følgende:
A value computed with a cryptographic algorithm and appended to a data object in such a way that any recipient of the data can use the signature to verify the data's origin and integrity.
Simpelt eksempel på en digital signatur. Vi vil gerne signerer dette simple XML dokument:
<?xml version="1.0" encoding="UTF-8" ?> <person xmlns="http://www.sosi.dk/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <fornavn id="elmtosign"><value>Hans</value></fornavn> <efternavn><value>Hansen</value></efternavn> </person> |
Når det skal signeres skal man medsende en konfiguration der angiver hvilken del af dokumentet der skal signeres og i dette tilfælde er det elemetet med attributten "id=elemtosign".
Efter signering ser dokumentet således ud (bemærk: signatur-værdien og certifikatet er beskåret af hensyn til læsbarheden):
<?xml version="1.0" encoding="UTF-8"?>
<person xmlns="http://www.sosi.dk/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<fornavn id="elmtosign">
<value>Hans</value>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="OCESSignature">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#elmtosign">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>QW77ZSa8bItvTzJ6Mx3U0UuhCBo=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
LvPqO4dbw9UglyNnkaIKN4oKaYCzv/pqcfNRzPd8UdUYiyRKY3zkCMdDB9EsjOp7ZsVym/O2mODQs8V34JjCVBQVHfwsQv8Ku0v...
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIGyzCCBP+gAwIBAgIUIp4rXilrr1cv616bbYPuFN68rIowQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoG...
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
</fornavn>
<efternavn>
<value>Hansen</value>
</efternavn>
</person> |
Signaturen kan man bryde op i følgende dele:
Følgende to metoder kan anvendes til kryptering og dekryptering af XML dokumenter:
Disse er lavet så de er kompatible med tidligere versioner af Seal.Java. Tidligere versioner af Seal.Java brugte Apache Santuario til kryptering/dekryptering, så det generede dokument skal være kompatibel med Seal.Java 3.x.
Der er lavet følgende tests i Seal.Java der tjekker dette:
![]()
Den grundlæggende forskel på Seal.Java 2.x og Seal.Java 3.x er at førstnævnte benytter Apache Santuario, hvor det krypterede dokument har et bestemt format.
I Seal.Java 3.x benytter Java eget bibliotek til kryptering/dekryptering og her arbejdes kun med de rene krypteringsstrenge og resultatet bliver ikke pakket ind i et bestemt format.
Der skal Seal.Java 3.x selv kunne opbygge disse formater så de accepteres af Seal.Java 2.x.
Simpelt eksempel, hvor dette XML dokument ønskes krypteret:
<root>
<ToEncrypt>
<foo>bar</foo>
</ToEncrypt>
</root> |
Den krypterede udgave ser således ud:
![]()