@Override public boolean removeMetadataBlob( UserPublicKey owner, byte[] encodedWritingPublicKey, byte[] writingKeySignedMapKeyPlusBlob) { UserPublicKey writingKey = new UserPublicKey(encodedWritingPublicKey); try { byte[] payload = writingKey.unsignMessage(writingKeySignedMapKeyPlusBlob); byte[] mapKey = Arrays.copyOfRange(payload, 0, 32); byte[] metadataBlob = Arrays.copyOfRange( payload, 32, payload .length); // will be zero length for now // TODO change to the current blob hash MetadataBlob blob = new MetadataBlob(writingKey.getPublicKeys(), mapKey, metadataBlob); return blob.delete(); } catch (TweetNaCl.InvalidSignatureException e) { System.err.println( "Invalid signature during removeMetadataBlob for owner: " + owner + " and sharer: " + writingKey); return false; } }
public EncryptedChunk(byte[] encrypted) { if (encrypted.length > Chunk.MAX_SIZE + TweetNaCl.SECRETBOX_OVERHEAD_BYTES) throw new IllegalArgumentException( "Encrypted chunk size (" + encrypted.length + ") must be at most " + (Chunk.MAX_SIZE + TweetNaCl.SECRETBOX_OVERHEAD_BYTES)); this.auth = Arrays.copyOfRange(encrypted, 0, TweetNaCl.SECRETBOX_OVERHEAD_BYTES); this.encrypted = Arrays.copyOfRange(encrypted, TweetNaCl.SECRETBOX_OVERHEAD_BYTES, encrypted.length); }
@Override public boolean setMetadataBlob( UserPublicKey owner, byte[] encodedWritingPublicKey, byte[] writingKeySignedMapKey) { UserPublicKey writingKey = new UserPublicKey(encodedWritingPublicKey); try { byte[] payload = writingKey.unsignMessage(writingKeySignedMapKey); byte[] mapKey = Arrays.copyOfRange(payload, 0, 32); byte[] metadataBlob = Arrays.copyOfRange(payload, 32, payload.length); MetadataBlob blob = new MetadataBlob(writingKey.getPublicKeys(), mapKey, metadataBlob); return blob.insert(); } catch (TweetNaCl.InvalidSignatureException e) { System.err.println( "Invalid signature during setMetadataBlob for owner: " + owner + " and sharer: " + writingKey); return false; } }