mobile/android/base/sync/middleware/Crypto5MiddlewareRepository.java

Wed, 31 Dec 2014 07:22:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 07:22:50 +0100
branch
TOR_BUG_3246
changeset 4
fc2d59ddac77
permissions
-rw-r--r--

Correct previous dual key logic pending first delivery installment.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 package org.mozilla.gecko.sync.middleware;
     7 import org.mozilla.gecko.sync.crypto.KeyBundle;
     8 import org.mozilla.gecko.sync.repositories.IdentityRecordFactory;
     9 import org.mozilla.gecko.sync.repositories.RecordFactory;
    10 import org.mozilla.gecko.sync.repositories.Repository;
    11 import org.mozilla.gecko.sync.repositories.RepositorySession;
    12 import org.mozilla.gecko.sync.repositories.delegates.RepositorySessionCleanDelegate;
    13 import org.mozilla.gecko.sync.repositories.delegates.RepositorySessionCreationDelegate;
    15 import android.content.Context;
    17 /**
    18  * Wrap an existing repository in middleware that encrypts and decrypts records
    19  * passing through.
    20  *
    21  * @author rnewman
    22  *
    23  */
    24 public class Crypto5MiddlewareRepository extends MiddlewareRepository {
    26   public RecordFactory recordFactory = new IdentityRecordFactory();
    28   public class Crypto5MiddlewareRepositorySessionCreationDelegate extends MiddlewareRepository.SessionCreationDelegate {
    29     private Crypto5MiddlewareRepository repository;
    30     private RepositorySessionCreationDelegate outerDelegate;
    32     public Crypto5MiddlewareRepositorySessionCreationDelegate(Crypto5MiddlewareRepository repository, RepositorySessionCreationDelegate outerDelegate) {
    33       this.repository = repository;
    34       this.outerDelegate = outerDelegate;
    35     }
    36     public void onSessionCreateFailed(Exception ex) {
    37       this.outerDelegate.onSessionCreateFailed(ex);
    38     }
    40     @Override
    41     public void onSessionCreated(RepositorySession session) {
    42       // Do some work, then report success with the wrapping session.
    43       Crypto5MiddlewareRepositorySession cryptoSession;
    44       try {
    45         // Synchronous, baby.
    46         cryptoSession = new Crypto5MiddlewareRepositorySession(session, this.repository, recordFactory);
    47       } catch (Exception ex) {
    48         this.outerDelegate.onSessionCreateFailed(ex);
    49         return;
    50       }
    51       this.outerDelegate.onSessionCreated(cryptoSession);
    52     }
    53   }
    55   public KeyBundle keyBundle;
    56   private Repository inner;
    58   public Crypto5MiddlewareRepository(Repository inner, KeyBundle keys) {
    59     super();
    60     this.inner = inner;
    61     this.keyBundle = keys;
    62   }
    63   @Override
    64   public void createSession(RepositorySessionCreationDelegate delegate, Context context) {
    65     Crypto5MiddlewareRepositorySessionCreationDelegate delegateWrapper = new Crypto5MiddlewareRepositorySessionCreationDelegate(this, delegate);
    66     inner.createSession(delegateWrapper, context);
    67   }
    69   @Override
    70   public void clean(boolean success, RepositorySessionCleanDelegate delegate,
    71                     Context context) {
    72     this.inner.clean(success, delegate, context);
    73   }
    74 }

mercurial