blob: 2ac92cfcf20d61857807ad7ac412ecf02d4a7bb8 [file] [log] [blame]
andrewsbrownaada3932015-04-01 14:09:51 -07001/*
2 * jndn-mock
3 * Copyright (c) 2015, Intel Corporation.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU Lesser General Public License,
7 * version 3, as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope it will be useful, but WITHOUT ANY
10 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
12 * more details.
13 */
14package com.intel.jndn.mock;
15
16import net.named_data.jndn.Name;
17import net.named_data.jndn.security.KeyChain;
18import net.named_data.jndn.security.identity.IdentityManager;
19import net.named_data.jndn.security.identity.IdentityStorage;
20import net.named_data.jndn.security.identity.MemoryIdentityStorage;
21import net.named_data.jndn.security.identity.MemoryPrivateKeyStorage;
22import net.named_data.jndn.security.identity.PrivateKeyStorage;
23import net.named_data.jndn.security.policy.SelfVerifyPolicyManager;
24
25/**
26 *
27 * @author Andrew Brown <andrew.brown@intel.com>
28 */
29public class MockKeyChain {
30
31 /**
32 * Build and configure an in-memory {@link KeyChain}.
33 *
34 * @param name the name of the default identity to create
35 * @return an in-memory {@link KeyChain} configured with the name as the
36 * default identity
37 * @throws net.named_data.jndn.security.SecurityException
38 */
39 public static KeyChain configure(Name name) throws net.named_data.jndn.security.SecurityException {
40 // access key chain in ~/.ndn; create if necessary
41 PrivateKeyStorage keyStorage = new MemoryPrivateKeyStorage();
42 IdentityStorage identityStorage = new MemoryIdentityStorage();
43 KeyChain keyChain = new KeyChain(new IdentityManager(identityStorage, keyStorage),
44 new SelfVerifyPolicyManager(identityStorage));
45
46 // create keys, certs if necessary
47 if (!identityStorage.doesIdentityExist(name)) {
48 Name keyName = keyChain.createIdentity(name);
49 keyChain.setDefaultKeyForIdentity(keyName, name);
50 }
51
52 // set default identity
53 keyChain.getIdentityManager().setDefaultIdentity(name);
54
55 return keyChain;
56 }
57}