public static WonMessage decodeFromDataset(Dataset message) { return new WonMessage(message); }
public static WonMessage deepCopy(WonMessage original) { return new WonMessage(RdfUtils.cloneDataset(original.completeDataset)); }
private WonMessage loadWonMessageforURI(final URI messageURI) { DatasetHolder datasetHolder = datasetHolderRepository.findOneByUriForUpdate(messageURI); if (datasetHolder == null || datasetHolder.getDataset() == null) { throw new IllegalStateException(String.format("could not load dataset for message %s", messageURI)); } return new WonMessage(datasetHolder.getDataset()); }
public static WonMessage copyByDatasetSerialization(final WonMessage toWrap) { WonMessage copied = new WonMessage(RdfUtils.readDatasetFromString( RdfUtils.writeDatasetToString(toWrap.getCompleteDataset(), Lang.TRIG) ,Lang.TRIG)); return copied; }
private boolean isDuplicateMessage(final WonMessage message, MessageEventPlaceholder event) { // retrieve already processed message Dataset processedDataset = event.getDatasetHolder().getDataset(); // compare with received message // TODO ideally, here, only signatures of the corresponding envelopes have to be compared. // But as of now, before saving, the receiving side can add any number of envelopes. // Therefore, temporarily, before we know better how to retrieve the right envelope, // we compare here the main envelope data and the contents, without envelope signatures. WonMessage processedMessage = new WonMessage(processedDataset); boolean sameEnvelope = hasSameEnvelopeData(processedMessage, message); boolean sameContent = hasSameContent(processedMessage, message); if (sameEnvelope && sameContent) { return true; } return false; }
private WonMessage processSelected(List<MessageAndPlaceholder> selected, WonMessage message) { Dataset messageDataset = message.getCompleteDataset(); URI outerEnvelopeGraphURI = message.getOuterEnvelopeGraphURI(); URI messageUri = message.getMessageURI(); selected.forEach((MessageAndPlaceholder m) -> { addSignatureReferenceToMessage(messageDataset, messageUri, outerEnvelopeGraphURI, m.getWonMessage()); }); WonMessage newMessage = new WonMessage(messageDataset); selected.forEach((MessageAndPlaceholder m) -> { newMessage.addMessageProperty(WONMSG.HAS_PREVIOUS_MESSAGE_PROPERTY, m.getMessageEventPlaceholder().getMessageURI()); }); return newMessage; }
WonMessage responseMessage = new WonMessage(responseDataset);
public static WonMessage sign(PrivateKey privateKey, PublicKey publicKey, String privateKeyUri, WonMessage message) throws Exception { Dataset msgDataset = message.getCompleteDataset(); SigningStage sigStage = new SigningStage(message); addUnreferencedSigReferences(msgDataset, sigStage); WonSigner signer = new WonSigner(msgDataset); signContents(msgDataset, sigStage, signer, privateKey, privateKeyUri, publicKey); signEnvelopes(msgDataset, sigStage, signer, privateKey, privateKeyUri, publicKey); return new WonMessage(msgDataset); }
@Override public WonMessage process(final WonMessage message) throws WonMessageProcessingException { try { if (message.getMessageType() == WonMessageType.CREATE_NEED) { String needUri = message.getSenderNeedURI().toString(); Dataset msgDataset = WonMessageEncoder.encodeAsDataset(message); // generate and add need's public key to the need content String alias = keyPairAliasDerivationStrategy.getAliasForNeedUri(needUri); if (cryptographyService.getPrivateKey(alias) == null) { cryptographyService.createNewKeyPair(alias, alias); } PublicKey pubKey = cryptographyService.getPublicKey(alias); WonKeysReaderWriter keyWriter = new WonKeysReaderWriter(); String contentName = message.getContentGraphURIs().get(0); Model contentModel = msgDataset.getNamedModel(contentName); keyWriter.writeToModel(contentModel, contentModel.createResource(needUri), pubKey); return new WonMessage(msgDataset); } } catch (Exception e) { logger.error("Failed to add key", e); throw new WonMessageProcessingException("Failed to add key for need in message " + message.getMessageURI().toString()); } return message; }
return new WonMessage(dataset);