public static void mapSignature(List<org.apache.juddi.model.Signature> signatureList,
List<org.w3._2000._09.xmldsig_.SignatureType> apiSignatureList)
throws DispositionReportFaultMessage {
apiSignatureList.clear();
for (org.apache.juddi.model.Signature modelSig : signatureList) {
SignatureType apiSignature = new SignatureType();
apiSignature.setId(modelSig.getXmlID());
SignedInfo modelSignedInfo = modelSig.getSignedInfo();
SignedInfoType apiSignedInfoType = new SignedInfoType();
apiSignature.setSignedInfo(apiSignedInfoType);
// Canonicalization method
CanonicalizationMethod modelCanonMethod = modelSignedInfo.getCanonicalizationMethod();
CanonicalizationMethodType apiCanonMethod = new CanonicalizationMethodType();
apiCanonMethod.setAlgorithm(modelCanonMethod.getAlgorithm());
apiSignedInfoType.setCanonicalizationMethod(apiCanonMethod);
// Signature Method
String sigAlg = modelSignedInfo.getSignatureMethod().getAlgorithm();
SignatureMethodType apiSigMethod = new SignatureMethodType();
apiSigMethod.setAlgorithm(sigAlg);
apiSignedInfoType.setSignatureMethod(apiSigMethod);
// References
List<Reference> modelReferenceList = modelSignedInfo.getReference();
List<ReferenceType> apiReferenceList = apiSignedInfoType.getReference();
for (Reference modelRef : modelReferenceList) {
ReferenceType apiRef = new ReferenceType();
String refUri = modelRef.getUri();
if (refUri == null) {
refUri = "";
}
apiRef.setURI(refUri);
List<SignatureTransform> modelSigTransformList = modelRef.getTransforms();
TransformsType apiTransformsType = apiRef.getTransforms();
if (apiTransformsType == null) {
apiTransformsType = new TransformsType();
apiRef.setTransforms(apiTransformsType);
}
List<TransformType> apiTransformList = apiTransformsType.getTransform();
for (SignatureTransform modelSigTransform : modelSigTransformList) {
String modelTransformAlgStr = modelSigTransform.getTransform();
TransformType apiTransform = new TransformType();
apiTransform.setAlgorithm(modelTransformAlgStr);
List<SignatureTransformDataValue> sigTransformSDVList = modelSigTransform.getSignatureTransformDataValue();
for (SignatureTransformDataValue sigTransformSDV : sigTransformSDVList) {
String type = sigTransformSDV.getContentType();
byte[] xformBytes = sigTransformSDV.getContentBytes();
Object transformObject = convertDataToTransformContent(type, xformBytes);
apiTransform.getContent().add(transformObject);
}
apiTransformList.add(apiTransform);
}
String digestMethodStr = modelRef.getDigestMethod();
byte[] digestValBytes = modelRef.getDigestValue();
DigestMethodType apiDigestMethod = new DigestMethodType();
apiDigestMethod.setAlgorithm(digestMethodStr);
apiRef.setDigestMethod(apiDigestMethod);
apiRef.setDigestValue(digestValBytes);
apiReferenceList.add(apiRef);
}
// Signature Value
SignatureValueType apiSignatureValue = new SignatureValueType();
SignatureValue modelSigValue = modelSig.getSignatureValue();
apiSignatureValue.setId(modelSigValue.getXmlID());
apiSignatureValue.setValue(modelSigValue.getValue());
apiSignature.setSignatureValue(apiSignatureValue);
KeyInfoType apiKeyInfo = new KeyInfoType();
KeyInfo modelKeyInfo = modelSig.getKeyInfo();
apiKeyInfo.setId(modelKeyInfo.getXmlID());
List<KeyDataValue> modelKeyDataValueList = modelKeyInfo.getKeyDataValue();
List<Object> apiX509KeyInfoList = apiKeyInfo.getContent();
mapModelKeyDataValue(modelKeyDataValueList, apiX509KeyInfoList);
apiSignature.setKeyInfo(apiKeyInfo);
apiSignatureList.add(apiSignature);
}
}