public long Insert(TextSecureEnvelope envelope) { // TODO check if exists var push = new Push() { Type = envelope.getType(), Source = envelope.getSource(), DeviceId = envelope.getSourceDevice(), LegacyMessage = envelope.hasLegacyMessage() ? Base64.encodeBytes(envelope.getLegacyMessage()) : "", Content = envelope.hasContent() ? Base64.encodeBytes(envelope.getContent()) : "", Timestamp = TimeUtil.GetDateTime(envelope.getTimestamp()) }; try { conn.Insert(push); } catch(Exception e) { Debug.WriteLine(e.Message); } return push.PushId; }
/** * Decrypt a received {@link org.whispersystems.textsecure.api.messages.TextSecureEnvelope} * * @param envelope The received TextSecureEnvelope * @return a decrypted TextSecureMessage * @throws InvalidVersionException * @throws InvalidMessageException * @throws InvalidKeyException * @throws DuplicateMessageException * @throws InvalidKeyIdException * @throws UntrustedIdentityException * @throws LegacyMessageException * @throws NoSessionException */ public TextSecureContent decrypt(TextSecureEnvelope envelope) { try { TextSecureContent content = new TextSecureContent(); if (envelope.hasLegacyMessage()) { DataMessage message = DataMessage.ParseFrom(decrypt(envelope, envelope.getLegacyMessage())); content = new TextSecureContent(createTextSecureMessage(envelope, message)); } else if (envelope.hasContent()) { Content message = Content.ParseFrom(decrypt(envelope, envelope.getContent())); if (message.HasDataMessage) { content = new TextSecureContent(createTextSecureMessage(envelope, message.DataMessage)); } else if (message.HasSyncMessage && localAddress.getNumber().Equals(envelope.getSource())) { content = new TextSecureContent(createSynchronizeMessage(envelope, message.SyncMessage)); } } return content; } catch (InvalidProtocolBufferException e) { throw new InvalidMessageException(e); } }