├── Archives ├── Arguments.md ├── Info.md └── Removed_Items.md ├── Icons ├── GPG.png ├── Home.png ├── Info.md ├── Kill_QR-Code.png └── QR-Code.png ├── LICENSE ├── LaserCutterFiles ├── 20181206_PKV_V04_01.cdr ├── 20181206_PKV_V04_01_BackSide.cdr └── README.md ├── Motivation └── README.md ├── README.md ├── WiringInstruction └── README.md └── images ├── LaserCutMakeImages ├── 01_In_The_Printer.jpg ├── 02_All_The_Parts.jpg ├── 03_Latch_Parts01.jpg ├── 04_Sand_Latch03.jpg ├── 05_Fit_Latch.jpg ├── 06_Stack_Order_x1.jpg ├── 06_Stack_Order_x2.jpg ├── 06_Stack_Order_x4.jpg ├── 07_Finished_Box_x1.jpg ├── CaseClosed.jpg ├── CaseOpened.jpg └── Info.md ├── ReadmeImages ├── AdjustingFocus.jpg ├── CheckingFocus.jpg ├── CloneSetup.jpg ├── CloneTools.jpg ├── ExtremeCloseUp.jpg ├── FiredUp.jpg ├── Info.md ├── PassingDataToPhone.jpg ├── Phone2Vault.jpg ├── Sparkly.jpg ├── UniqueDollar.jpg ├── Vault2Phone.jpg ├── WireTie.jpg ├── WireTies.jpg └── Wiring.jpg ├── Security ├── Info.md └── Sha1sum_nonencrypted_SD_with_Full_Setup.jpg └── WiringInstructionImages ├── 01_Standoffs.jpg ├── 02_RibbonFold.jpg ├── 03_RibbonInserted.jpg ├── 04_ScreenMounted.jpg ├── 05_FrontCharger.jpg ├── 06_BackCharger.jpg ├── Info.md ├── KeyboardUSBDiagram.jpg ├── USB_BGWR.jpg ├── USB_Grnd.jpg ├── USB_Wire.jpg ├── WiringDiagram.jpg ├── WiringFromInside.jpg └── WiringFromOutside.jpg /Archives/Arguments.md: -------------------------------------------------------------------------------- 1 | # Arguments and General information used to promote the PivateKeyVault 2 | 3 | ### Types of Wallets and Access to Private Keys 4 | * Type: BlockChain Clients 5 | * Description: Perform Mining and also function as a digital wallet 6 | * Examples: 7 | * Geth, 8 | * Parity, 9 | * Vulnerability: 10 | * Remote control, Key loggers, 11 | * Network monitoring for when an account gets unlocked, 12 | * Bugs in Parity software cause loss of Ether 13 | * Articles on the subject: 14 | 15 | * Type: Command Line Tools 16 | * Description: Anything that runs at the command prompt or at the NodeJS Console 17 | * Examples: 18 | * Web3js 19 | * Any library that is used to make or work with keypairs at the command line. 20 | * Vulnerability: 21 | * Remote control, Key loggers, 22 | * Network monitoring for when an account gets unlocked, 23 | * Private keys retained in log files 24 | * Articles on the subject: 25 | 26 | * Type: Digital Wallet 27 | * Description: Runs on your computer or a phone 28 | * Examples: 29 | * MyEtherWallet 30 | * Mist 31 | * Vulnerability: 32 | * Fishing Attacks, 33 | * Remote control, 34 | * Key loggers, 35 | * Network monitoring for when an account gets unlocked, 36 | * Articles on the subject: 37 | 38 | * Type: Hardware Wallet 39 | * Description: 40 | * Runs on a piece of hardware that you plug into your computer 41 | * We are also seeing these built into some newer phones 42 | * Examples: 43 | * Nano Ledger 44 | * Trezor 45 | * Vulnerability: 46 | * I think these are quite safe for moderate amounts of money. 47 | * The main problem is that the private key is generated by the device which is a central point of attack. The end user has no absolute assurance that the algorithm used to generate the key can not be hacked and that the private key can not be predicted. So if some individual or government were to put a back door into the algorithm then everyone loses individual control of their accounts all at the same time. This is contray to the goal of decentralization. Individuals must have the right to generate their own private keys using a method known to be completely random such as flipping a coin. This is the method I use. Flipping a coin is one of many fully decentralized methods of generating a private key which are sure to be truly random. It works like this: Let heads represent a one and tails represent a zero. Four flips will produce one hexadecimal character of the key by converting binary to hexadecimal. 48 | * Four tails in a row would be a zero 49 | * Heads, heads, tails, tails would be a three. 50 | * Heads, heads, heads, head, would be an "F" 51 | * You get the idea. 52 | * This takes a while to accomplish, no government or individual can put a back door into this method. If you use this method, no one can ever guess your private key. An attacker might still be able force you to hand it over, but he or she would never be able to guess it using a dictionary attack nor by guessing personal information about you. 53 | * Only a decentralized method of generating a private key should be used for large amounts of money and the Nano Ledger does not permit you to generate your own private key using a method known to be truly random. The Nano Ledger and other devices which use a pseudo random algorithm to generate private keys are a central point of attack. 54 | * The Nano Ledger can not be used by governments, corperations, institutional investors or fund managers where a large number of accounts must be managed in complicated ways or where very large amounts of money are at stake. While the nano does allow for multiple public addresses, they are all tied to a master private key. So if the pass phrase is compromised then all the accounts are accessible. Furthermore multiple accounts are hard to manage with only two buttons on the nano. 55 | * [Click here to find out more about these limitations](https://www.reddit.com/r/ethereumnoobies/comments/7hebj8/ledger_nano_s_multiple_eth_wallets/) 56 | * How can we expect organizations, governments and corperations to use blockchain technology when there are is no widely available method to securely manage multiple accounts. The PrivateKeyVault is meant to clear this bottleneck and make blockchain technology accessable to organizations, governments, and corperations. Getting these entities on the a public blockchain is how we will make them transparent and accountable. 57 | 58 | * Type: Paper Wallet 59 | * Description: Private key pairs stored on paper 60 | * Examples: 61 | * Receipts printed out on the Vault or from any instance of MyEtherWallet 62 | * Vulnerability: 63 | * Unencrypted 64 | * Thermal paper will turn black if kept in a hot environment. 65 | * Articles on the subject: 66 | 67 | * Type: Cold storage 68 | * Description: Private key pairs stored under a mountain usually as paper wallets 69 | * Examples: 70 | * Vulnerability: 71 | * Centrally located - Fat Target 72 | * Articles on the subject: 73 | 74 | * Type: AirGapped Wallet 75 | * Description: Runs on a computer that never connects to the Internet 76 | * Example: PrivateKeyVault 77 | * Vulnerability: 78 | * Tempest 79 | * Cameras on the Operator 80 | * Installing a bug on the device 81 | * Advantages: 82 | * All data moving in or out of the device stands for your inspection and approval before proceeding. 83 | * No radios of any kind are installed in the device 84 | * there are no exposed cable jacks for data transfer. 85 | 86 | 87 | ### Various Things the Vault Can Do That the Ledger Can't 88 | 89 | 90 | ### Arguments Against the ledger 91 | [Life Savings Stolen from Second-hand Ledger Hardware Wallet](https://cointelegraph.com/news/life-savings-stolen-from-second-hand-ledger-hardware-wallet) 92 | 93 | 94 | Against any computer using Intel, ARM, AMD 95 | http://www.breitbart.com/tech/2018/01/04/report-intel-ceo-sold-24-million-in-stock-while-company-was-aware-of-cpu-bug/ 96 | 97 | https://www.yahoo.com/news/design-flaw-found-intel-chips-fix-causes-them-152935477--finance.html 98 | 99 | 100 | Against SmartPhones 101 | https://newatlas.com/pin-smartphone-sensors/52752/ 102 | 103 | 104 | Against Keeping Keys With Brokers 105 | Other people trust their private keys to the brokers they use to buy the currency. Broker's computers often get hacked as well, and sometimes the brokers just disappear taking the private keys with them. In some countries the government forces the brokers to turn over their customers private keys. For these reasons, many people are moving to take control of their own private keys. 106 | 107 | Ethereum is a Bubble 108 | Many people are worried that the rising value of Ethereum is a bubble. I don't think so. I think what we are seeing is people emptying out their bank accounts and buying cryptocurrency with the funds simply because it is a more productive way to work with money. When there is no more money in the banks, then the price will stop rising. Until then I think we will see the value of Ethereum go up. 109 | 110 | I think it's like this: 111 | Email is better than the post office for most correspondence so most correspondence is sent by email. We are not having an email bubble. 112 | Cryptocurrency is better for most transactions then banking services. As people come to understand this and as problems are resolved, the banks will find much less use (like the post office) and cryptocurrency transactions will be used most often (like email). 113 | 114 | Cool Possiblility - Shuffle Data 115 | https://newatlas.com/darpa-morpheus-unhackable-computer/52690/ 116 | 117 | 118 | -------------------------------------------------------------------------------- /Archives/Info.md: -------------------------------------------------------------------------------- 1 | The items in this folder were removed from the make instructions but are saved here in case we need to refer back to this information. 2 | -------------------------------------------------------------------------------- /Archives/Removed_Items.md: -------------------------------------------------------------------------------- 1 | Most of the sections in this document are for setting up the original prototype of the PrivateKeyVault. 2 | I abandoned that version because a keyboard is required in order to have full disk encryption of the SD card. 3 | The original version only had a virtual onscreen keyboard. The idea with the original device was to cover all the ports with a hardended sealed case. [Cobo Vault](https://cobo.com/hardware-wallet) is persuing that path now. I have discovered that it doesn't matter if someone breaks into the device or if they steal it as long as the SD card has full disk encryption. Tampering is the big problem if the owner doesn't know the device has been tampered with. So I decided to go with tamper evident seals and full disk encryption. And with the removable SD card you can also use the newer PrivateKeyVault as a regular Internet connected computer. Finally if you need to escape an ethnic cleansing or civil war then you can swallow an SD card but swallowing a large armored hardware wallet would not be possible. 4 | 5 | #### Graceful Shutdown on Low Battery While not Plugged In or If User Presses Power Button without Initiating Shutdown at Main Menu 6 | First I need to measure the current: 7 | * When the power button is in and the device is running, 8 | * When the power button is in but the device has been shutdown at the main menu, 9 | * When the power button is out. 10 | 11 | This requires a small circuit which: 12 | 1. Holds the enable pins on the boost converters high (disconnects then from ground) when the power button is pressed in and the low battery pin is high which indicates the battery is charged. 13 | 2. Initiates shutdown first and then pulls the enable pin low (connects to ground) when the power button is pressed out or if the low battery pin goes low indicating that the battery will soon fail for lack of charge and the battery charger is not plugged in. 14 | 15 | The materials required are 16 | * An OR type logic gate to handle the three input signals (1.power switch, 2.low bat pin, and 3.the 5 Volts from the AC power supply) and output a shut down command by forcing some pin on the pi low (probably pin BCM 17) if the power switch is low or if the low battery pin is low and the power supply is not pluged in. 17 | * Hopefully some pin on the pi shows five volts when the pi is running and 0 volts when the pi has been shut down. If not I will need to make a circuit to pull the enable pins low on the boost converters which will remove power from everything except the charging circuit. 18 | * Finally, a resistor will be needed to hold the enable pins high once power has been reapplied. 19 | 20 | Setting this up: 21 | [Source for the following advice](http://www.stderr.nl/Blog/Hardware/RaspberryPi/PowerButton.html) 22 | Get and build the DT overlay. 23 | If a file /boot/overlays/gpio-shutdown.dtbo is already available on your system, you can skip this step. 24 | 25 | Download the devicetree overlay file. 26 | The easiest is to run wget on the raspberry pi itself: 27 | Run the following command in the pi's terminal window. 28 | `wget http://www.stderr.nl/static/files/Hardware/RaspberryPi/gpio-shutdown-overlay.dts` 29 | 30 | Compile the devicetreefile: 31 | Run the following command in the pi's terminal window. 32 | `dtc -@ -I dts -O dtb -o gpio-shutdown.dtbo gpio-shutdown-overlay.dts` 33 | Ignore any "Warning (unit_address_vs_reg): Node /fragment@0 has a unit name, but no reg property" messages you might get. 34 | 35 | Copy the compiled file to /boot/overlays where the loader can find it: 36 | Run the following command in the pi's terminal window. 37 | `sudo cp gpio-shutdown.dtbo /boot/overlays/` 38 | 39 | Enable the overlay by adding a line to /boot/config.txt: 40 | `dtoverlay=gpio-shutdown` 41 | If you need to use a different gpio, or different settings, see the dts file for available options and the Rpi devicetree docs for setting them. 42 | 43 | Also in config.txt put the following line. 44 | This will make pin 26 go high on bootup and low on halt. 45 | Now pin 26 can be used shutdown power after the system has been halted. 46 | `dtoverlay=gpio-poweroff,active_low ` 47 | 48 | If running systemd older than v225 (check with systemd --version), create a file called /etc/udev/rules.d/99-gpio-power.rules containing the following lines: 49 | ``` 50 | ACTION!="REMOVE", SUBSYSTEM=="input", KERNEL=="event*", SUBSYSTEMS=="platform", \ 51 | DRIVERS=="gpio-keys", ATTRS{keys}=="116", TAG+="power-switch" 52 | ``` 53 | 54 | On systemd v225 and above (Raspbian stretch version 2017.08.16 and upwards) this should not be needed, but I have not tested this. 55 | 56 | Reboot your pi for changes to take effect. 57 | 58 | Then, if you connect a pushbutton to GPIO3 and GND (pin 5 and 6 on the 40-pin header), you can let your raspberry shutdown and startup using this button. Connecting pins 5 and 6 momentarily will cause the pi to shut down gracefully but it will still be drawing a small amount of current. At this point you can remove the power source without damaging the pi. Reapplying power or connecting pins 5 and 6 again momentarily will cause the pi to start again. 59 | 60 | All this was tested on a Rpi Zero W, a Rpi B, a Rpi B+ and a Rpi 2. 61 | 62 | This overlay was merged into the official kernel repository, so in the future step 1 above should no longer be needed. It is included in the 1.20170811-1 kernel release, which will hopefull be included in Raspbian images soon (but the 2017.08.16 image does not include it yet). 63 | 64 | When the new kernel is included in Raspbian, it would only leave a simple modification to /boot/config.txt to set this up :-D 65 | 66 | [Download Putty.exe found here](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html) to **PiSetup**. 67 | Look under **Alternative Binary Files** 68 | Download Putty.exe - the SSH/Telnet client. 69 | I am using the 64 bit version. You should too if you are using a 64 bit machine. 70 | This exe is ready to run. No need to install. 71 | The SHA1 hash can be checked using NodeJS the same way that the Raspian OS was checked or you can use the Win32 Disk Imager. 72 | There is a link at the very bottom of the download page that will take you to a listing of all the SHA1 hashes for the various downloads offered. 73 | I have read that getting the SHA1 hash from the same website that the downloaded file comes from is a pretty useless exercise if the website has been compromised but I am doing it anyway because at least it ensures that the file has not been tampered with during the download process. 74 | 75 | #### Enable SSH. 76 | Now that we are using a keyboard it is unnecessary to us SSH and it is a security risk. 77 | But I am leaving this section in just in case there is reason to use SSH in the future. 78 | Open NotePad and type some random characters into the document. It doesn't matter what the characters are as long as there is something to save. 79 | 80 | Click **Save**, navigate to the SD card, and then select **All Files** from the **File type** pulldown menu. 81 | 82 | Save the file as `"ssh"` (the quotation marks are included in the name). The reason for the quotation marks is to ensure that the file is created without any extensions appended to the file name. 83 | 84 | In order for ssh to work on a raspberry pi this file must exist in the root directory of the SD card. 85 | 86 | Putty.exe would be the application to use on your windows machine if you wish to SSH into your pi. 87 | Connect the two devices with an ethernet cable and boot up the pi 88 | Get the IP address of your pi by taping on the Networking icon near the upper right of the Task Bar and enter this into putty. 89 | Putty will then prompt you for user name and password. 90 | That's it! Your in. 91 | 92 | 93 | #### Install the Florence virtual keyboard 94 | Since we are using a keyboard now there is no reason to install Florence. So skip this section. 95 | From the VNC session you just created, open the command line interpreter (AKA Terminal Window) on your pi. 96 | To do this, click the icon on your pi's task bar that looks like a terminal window. 97 | You can also find it on in your pi's menu under **Accessories**. 98 | 99 | Now install Florence. 100 | Execute the following in the pi's terminal window. 101 | `sudo apt-get update && sudo apt-get install florence` 102 | 103 | Florence will not run correctly unless you install the **at-spi2-core** package. 104 | Execute the following line of code in your pi's terminal window. 105 | `sudo apt-get install at-spi2-core` 106 | 107 | Finally, reboot your pi. 108 | 109 | When the pi wakes up again, the Florence virtual keyboard will be available in the pi's menu under **Universal Access** 110 | 111 | One of the virtual keys bears the icon of a wrench. This opens your settings dialog. Under **Layout** I selected the **Standard** keyboard with the **Navigation** **Numeric** and **Florence** keyboard extensions. Under **Behavior** I selected **Mouse** as the input method and nothing was selected in the **Auto hide** checkbox group. Under **Window** in the **Features** checkbox group **Transparent**, **Task bar**, and **Floating icon** were deselected. 112 | 113 | #### Install an icon to start the Florence virtual keyboard in the Application Launch Bar 114 | No need to do this now since we are not using the Florence keyboard. 115 | The process is documented here only in order to show how to add an icon to the **Application Launch Bar** 116 | Start this process by right clicking on the **Task Bar**, then click on **Panel Settings**, Then click on the **Panel Applets** tab, then select **Application Launch Bar** Then click the **Preferences** button. Then under **Universal Access** pick the **Florence** virtual keyboard and then press the **Add** button. Once added, the icon can be positioned with the **Up** and **Down** buttons. 117 | 118 | #### Install the GDM3 Display Manager 119 | No need to do any of this. GDM3 is only useful for the onscreen keyboard we needed when there was no actual keyboard. 120 | The display manager is responsible for managing the user authentication screen. The Raspian OS comes with the LightDM display manager which does not have a virtual keyboard for password entry. The Florence virtual keyboard we just installed will not work either because there is no apparent way to load it before the login screen shows up. So we will switch out LightDM with GDM3 which does have an integrated virtual keyboard. 121 | [More info about that here.](https://askubuntu.com/questions/829108/what-is-gdm3-kdm-lightdm-how-to-install-and-remove-them) 122 | 123 | From the VNC session you just created, open the command line interpreter (AKA Terminal Window) on your pi. 124 | To do this, click the icon on your pi's task bar that looks like a terminal window. 125 | You can also find it on in your pi's menu under **Accessories**. 126 | 127 | Make your pi aware of the latest packages available for install. 128 | Execute the following line of code in your pi's terminal window. 129 | `sudo apt-get update` 130 | 131 | Now install the GDM3 display manager. 132 | `sudo apt-get install gdm3` 133 | 134 | This is a long install during which you will be asked to verify switching from LightDM to GDM3. 135 | 136 | Install an Application for changing GDM3 settings and other settings in GNOME 137 | `sudo apt-get install dconf-tools.` 138 | 139 | #### Adding an icon on the Task Bar for the GPG Menu application 140 | This didn't work - That's why it wound up here. 141 | There were three problems 142 | 1. The menu wouldn't run any scripts. 143 | 2. It was not possible to quit the menu. 144 | 3. It seemed to crash the TaskBar. 145 | 146 | Now lets make an icon for this menu and put it on the task bar. 147 | The file type must be png. 148 | Get a nice icon from the internet to represent the menu. 149 | I picked one that looks like a padlock that also looks like a menu button. 150 | [You can find it by clicking here](https://github.com/johnshearing/MyEtherWalletOffline/blob/master/GPG.png) 151 | 152 | Download the icon and save it to the following directory: `/usr/share/icons/` 153 | Execute the following command at the pi's terminal window. 154 | `sudo mv /home/pi/Downloads/GPG.png /usr/share/icons` 155 | 156 | 157 | Be sure to convert it to the png format using a paint like program before saving it to the pi. 158 | I called my icon **GPG.png** 159 | We will refer to the icon later by this name. 160 | 161 | Next, Grant read, write, and execute permissions to every one. 162 | Execute the following command in the pi's terminal window: 163 | `sudo chmod 777 /usr/share/icons/GPG.png` 164 | 165 | Third File: The Desktop file - This is file determines the properties of the short cut. 166 | Execute the following command in the pi's terminal window 167 | `sudo leafpad /home/pi/.local/share/applications/menu.desktop` 168 | It could have been named anything but the location maters. 169 | 170 | Paste the following code into the file: 171 | ``` 172 | [Desktop Entry] 173 | Name=Encrypted Messaging 174 | Comment=Start the menu for encrypted messaging services. 175 | Icon=/usr/share/icons/GPG.png 176 | Exec=lxterminal --geometry=98x45 -e menu 177 | Type=Application 178 | Encoding=UTF-8 179 | Terminal=false 180 | Categories=Utility; 181 | ``` 182 | 183 | Next, Grant read, write, and execute permissions to every one. 184 | Execute the following command in the pi's terminal window: 185 | `sudo chmod 777 /home/pi/.local/share/applications/menu.desktop` 186 | 187 | Reboot the pi and then right click on the Application Launch Bar so that you can edit its properties in the same way that was shown for the Florence virtual keyboard above. 188 | Select your new desktop item It can be found in accessories) and place it onto the Application Launch Bar. 189 | 190 | 191 | #### INSTALL PRINTER 192 | I abandoned the printer because I found the thermal paper fades overtime. What a horrible thing that would be if that was your only method of storing private keys. I have discovered that keystore files (encrypted files which hold private keys) are a great way to go because you can give to other people for backup but they won't be able to see or use your private key without your password. This is the method the latest version of the PrivateKeyVault uses to backup keys. Full disk encryption is also used as backup where the whole SD card is cloned with encryption intact. 193 | 194 | Source: 195 | [Pi camera project](https://learn.adafruit.com/instant-camera-using-raspberry-pi-and-thermal-printer?view=all) 196 | 197 | First we’ll install printer support (CUPS — the Common UNIX Printing System) and some related development tools… 198 | Execute the following lines one at a time in the pi's terminal window 199 | `sudo apt-get update` 200 | `sudo apt-get install git cups wiringpi build-essential libcups2-dev libcupsimage2-dev` 201 | 202 | 203 | 204 | Then install the raster filter for CUPS. This processes bitmap images into the thermal printer’s native format… 205 | Execute the following lines one at a time in the pi's terminal window. 206 | `cd` 207 | `git clone https://github.com/adafruit/zj-58` 208 | `cd zj-58` 209 | `make` 210 | `sudo ./install` 211 | 212 | Your thermal printer may have arrived with a test page in the box or the paper bay. If not, or if you threw that away, you can generate a new one by installing a roll of paper and holding the feed button (on printers that have one) while connecting power, or tapping the button on the back of the “Nano” printer or the “Printer Guts.” 213 | 214 | Look for the baud rate that’s printed near the bottom of the page. 215 | This is typically either 9600 or 19200 baud. Mine is 9600 216 | This is important…you’ll need to know the correct value for your printer. 217 | 218 | The printer doesn’t need to be connected yet. 219 | We can prepare the system the same regardless. 220 | To add the printer to the CUPS system and set it as the default, we’ll be typing two lines similar to the following (but not necessarily identical…read on)… 221 | 222 | `sudo lpadmin -p ZJ-58 -E -v serial:/dev/ttyAMA0?baud=9600 -m zjiang/ZJ-58.ppd` 223 | `sudo lpoptions -d ZJ-58` 224 | 225 | On the first line, change the “baud” value to 9600 or 19200 as required for your printer. 226 | For a USB receipt printer, change the device name to /dev/ttyUSB0 227 | **For all other (TTL) printers, use /dev/ttyAMA0 for the device name.** 228 | This is my printer is the Nano and the baud rate is 9600 so the line of code above does not change. 229 | The rest of the line should be typed exactly as it appears above. 230 | Likewise for the second line, which needs no changes. 231 | 232 | 233 | 234 | Source: 235 | [Networked Thermal Printer using Raspberry Pi and CUPS](https://learn.adafruit.com/networked-thermal-printer-using-cups-and-raspberry-pi?view=all) 236 | 237 | Plug the printer into the pi 238 | 239 | Run the following commands at the terminal window: 240 | `sudo chmod 777 /dev/serial0` 241 | `sudo stty -F /dev/serial0 9600` 242 | `sudo echo -e "This is a test.\\n\\n\\n" > /dev/serial0` 243 | The printer should print "This is a test." 244 | 245 | Execute the following commands 246 | `sudo apt-get update` 247 | `sudo apt-get install libcups2-dev libcupsimage2-dev git build-essential cups system-config-printer` 248 | 249 | Then install the raster filter for CUPS. This processes bitmap images into the thermal printer’s native format… 250 | Execute the following lines one at a time in the pi's terminal window. 251 | `cd` 252 | `git clone https://github.com/adafruit/zj-58` 253 | `cd zj-58` 254 | `make` 255 | `sudo ./install` 256 | 257 | On the pi's main menu, go to **Print Settings** 258 | Select the desired printer and then unlock the screen by clicking on the **Lock** icon and entering your password 259 | Now select properties from the local menu. 260 | Enter the following in the **Device URI** field: 261 | `serial:/dev/serial0?baud=19200` 262 | Change the other properties as desired 263 | 264 | Now execute the following command at the pi's terminal window 265 | `echo "This is a test." | lpr` 266 | The printer will print "This is a test." 267 | 268 | The following command will print a picture: 269 | `lpr -o fit-to-page /usr/share/raspberrypi-artwork/raspberry-pi-logo.png` 270 | 271 | The following command will print a text file: 272 | This command can be used to print out a keystore file which is a password protected paper wallet. 273 | `lp -o cpi=8 filename` 274 | 275 | [Here are some command line options for the printer.](https://www.cups.org/doc/options.html) 276 | 277 | #### How to Make an image of the SD card in it's current state 278 | 279 | If your SD card becomes corrupted you will need to bring your pi back to the state it is in now. 280 | [The source of information for this step is found here](http://lifehacker.com/how-to-clone-your-raspberry-pi-sd-card-for-super-easy-r-1261113524) 281 | 282 | Get everything set up just the way you want it on your Raspberry Pi. 283 | Then shut down the Pi and remove the SD card. 284 | Insert the SD card into your computer. 285 | Start up Win32DiskImager (See source article if you're on OS X or Linux). 286 | In the "Image File" box, enter the path of your soon-to-be image file. For example, I put mine in `C:\Users\John\Pi_Backups\20170730_Pi.img` 287 | 288 | Under the "Device" box, select your SD card. 289 | Click the "Read" button to create the image file from your card. 290 | When it's done creating the image file, you can eject your SD card and put it back in your Raspberry Pi. 291 | Keep that IMG file in a safe place. 292 | 293 | #### How To Restore Your SD Card From an Image 294 | Now, if anything ever goes wrong with your Pi, you can restore your fully-set-up image using the following instructions: 295 | Insert the SD card back into your computer. 296 | Use **diskpart** to partition and format your SD card. 297 | [Here is a YouTube vid that shows how to use diskpart](https://www.youtube.com/watch?v=8TQ1RpToSsk) 298 | Here are the steps you need to follow: 299 | * Insert the empty SD card into your PC. 300 | * Open your favorite command line interpreter - I use PowerShell or Command Prompt. 301 | * Execute the following: 302 | * `diskpart` 303 | * Execute the following: 304 | * `list disk` 305 | * Be very careful to select the correct disk in the next step. Look carefully at the size of the disk for a clue. 306 | * Execute the following: 307 | * `select disk (Put the appropriate number of the disk here)` 308 | * If the disk shows up in the list as **Offline** then execute the following: 309 | * `online disk` 310 | * Execute the following: 311 | * `attributes disk clear readonly` 312 | * If you are sure you have selected the correct disk and you want to erase it's contents then execute the following : 313 | * `clean` 314 | * Execute the following command: 315 | * `create partition primary` 316 | * Execute the following command: 317 | * `select partition 1` 318 | * Execute the following command: 319 | * `active` 320 | * Execute the following command: 321 | * `format fs=ntfs label=Whatever_I_Want quick` 322 | * If you don't use the key word **quick** it will take forever to complete the formatting process. 323 | 324 | Now open Win32DiskImager again and browse for your image file. 325 | Select your device from the Device dropdown. **SELECT CAREFULLY** 326 | This time, click "Write" to write the image to the SD card. 327 | When it finishes, eject the SD card and re-insert it into your Raspberry Pi. 328 | When you boot it up, it should be in the exact same state it was in when you first cloned the SD card. 329 | -------------------------------------------------------------------------------- /Icons/GPG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/Icons/GPG.png -------------------------------------------------------------------------------- /Icons/Home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/Icons/Home.png -------------------------------------------------------------------------------- /Icons/Info.md: -------------------------------------------------------------------------------- 1 | The icons in this folder are used in the menu bar of the PrivateKeyVault. 2 | -------------------------------------------------------------------------------- /Icons/Kill_QR-Code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/Icons/Kill_QR-Code.png -------------------------------------------------------------------------------- /Icons/QR-Code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/Icons/QR-Code.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 John Shearing 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LaserCutterFiles/20181206_PKV_V04_01.cdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/LaserCutterFiles/20181206_PKV_V04_01.cdr -------------------------------------------------------------------------------- /LaserCutterFiles/20181206_PKV_V04_01_BackSide.cdr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/LaserCutterFiles/20181206_PKV_V04_01_BackSide.cdr -------------------------------------------------------------------------------- /LaserCutterFiles/README.md: -------------------------------------------------------------------------------- 1 | ## Laser Cutting and Assembling the Transparent Case for the PrivateKeyVault 2 | 3 | This is what the case looks like opened. 4 |
5 | 6 | 7 | This is what the case looks like closed. 8 | 9 | Everything including the spring latches are laser cut. 10 | 11 |
12 | 13 | [Click here to return to the PrivateKeyVault main page for wiring and software installation instructions](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---make-instructions) 14 | **Or continue reading below for instrutions on how to cut and assemble the transparent case.** 15 | 16 | The CorelDraw files assume acrylic sheet 18 inches X 12 inches X .115 inch thick. 17 | Two sheets of acrylic are required to make one box. 18 | The files also assume that the kerf cut by the laser will be .007 inch wide. 19 | 20 | Each drawing makes half the parts necessary for the box. 21 | The only difference between the two drawings is that various layers have visibility and printing toggled on or off as required to print the respective sides of the box. 22 | So to make a complete box you will need to cut each of the two drawings. 23 | 24 | 25 | 26 | This photo shows the parts cut from the first CorelDraw file. 27 | Don't forget to cut the second drawing too. 28 | Then you will have all the parts you need to assemble the box. 29 | 30 |
31 | 32 | 33 | 34 | This photo shows all the parts cut from both drawings. 35 | Some of the supports have already been chemically welded to the sides of the box. 36 | Also, you can see that the switch mount has been chemically welded together. 37 | 38 | [Click here to learn how to chemically weld acrylic](https://www.youtube.com/watch?v=hT6Ow_cBTps&feature=youtu.be) 39 | 40 | [Click here to order chemical welding products](https://www.tapplastics.com/product/repair_products/plastic_adhesives/tap_acrylic_cement/130) 41 | PrivateKeyVault has no finacial interest in the sale of these products. 42 | 43 |
44 | 45 | 46 | 47 | Here are all the parts required to make a latch. 48 | There are four latches on each box. 49 | There are two latches on the top and two latches on the bottom. 50 | That's because both the bottom and the top of the box can be opened. 51 | 52 | [This video shows how these types of latches are assembled](https://youtu.be/koxFgN304TI) 53 | 54 |
55 | 56 | 57 | 58 | Before fitting the latch together I first sand one side of the spring piece just a tiny bit until I get a nice sliding fit with a little bit of friction. I sand the four corners of this part just a tiny bit as well. 59 | 60 |
61 | 62 | 63 | 64 | In this photo the latch spring is placed inside the lid slot to check for a nice sliding fit with a little bit of friction. 65 | In the following photos I will show you how to assemble the latches. 66 | **Be sure to try and fit one of the latches together without welding it at first.** 67 | **Then try latching the box at one corner while holding the parts together with your fingers.** 68 | **This will ensure that you got the orientation of all the pieces right before permanently bonding them together** 69 | 70 |
71 | 72 | 73 | 74 | In this photo, the lid is upside down on the table and the longer of the two cover pieces is placed under the lid. 75 | 76 |
77 | 78 | 79 | 80 | Now the rectangular pin is inserted in the rectangular hole and chemically welded in place. 81 | 82 |
83 | 84 | 85 | 86 | In this photo, the latch spring is seen placed over the rectangular pin and chemical welding solvent is applied to the pin only. 87 | Also shown over the top of the spring latch is the bottom cover piece which is also chemically welded by applying solvent at the pin only. 88 | **Careful, watch the orientation of this last piece.** 89 | This last piece is not symentrical so the orientation matters. 90 | The distance from the rectangular hole to the ends is not the same. 91 | The end with the shorter distance to the rectangular hole must be placed over edge of the lid. 92 | Better get this right before applying the cement. 93 | 94 | 95 | 96 |
97 | 98 | 99 | 100 | 101 | Finally, 102 | The top lid in the photo above is the one with all the extra holes for mounting the electronics. 103 | The bottom lid only has the slots for the spring latches. 104 | Notice that the latch spring and corresponding dimples in the top lid are facing right where as the latch spring and the dimples are facing left in the bottom lid. This ensures that when the box is closed the top and bottom latches will have the same orientation. This matters because holes can be drilled into the box when the latches are closed so that wire ties can be passed through to secure the box. The wire ties are then sealed with sparkley nail polish and photographed. The box can not be opened without breaking the wire ties and new wire ties will not look the same because it never goes on exactly the same way twice. This is how you will know if your device has been tampered with. Next time I post the drawings, I will have the laser cut the holes so you don't have to drill them out yourself. 105 | [Click here to learn more about tamper protection](https://github.com/johnshearing/PrivateKeyVault#preventing-the-evil-maid-or-maid-in-the-middle-attack) 106 | 107 |
108 | 109 | As I improve the box I am likely to replace these files with updated drawings. 110 | So if you like a particular version of the box be sure to save it on your own hard drive. 111 | 112 | If you do not have a laser cutter and if you do not wish to use a local service provider then I will be happy to sell you a finished case for your PrivateKeyVault project. 113 | Contact johnshearing@gmail.com or gshearing@radioactiverf.com 114 | 115 | **You are also free to set up your own business making these cases without giving us any money nor any credit. 116 | Hooray Open Source!** 117 | 118 | Please feel free to suggest improvements and to contribute your own changes and original drawings if you have a different way to make this box. 119 | 120 | [Click here to return to the PrivateKeyVault main page for wiring and software installation instructions](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---make-instructions) 121 | 122 | 123 | -------------------------------------------------------------------------------- /Motivation/README.md: -------------------------------------------------------------------------------- 1 | ### Contents 2 | [What's In It For You?](https://github.com/johnshearing/PrivateKeyVault/tree/master/Motivation#whats-in-it-for-you) 3 | [What's In It For Me?](https://github.com/johnshearing/PrivateKeyVault/tree/master/Motivation#whats-in-it-for-me) 4 | [What's In It For Us?](https://github.com/johnshearing/PrivateKeyVault/tree/master/Motivation#whats-in-it-for-us) 5 | [Crypto-Journalism:](https://github.com/johnshearing/PrivateKeyVault/blob/master/Motivation/README.md#crypto-journalism) 6 | [Added Value For People In Developing Countries](https://github.com/johnshearing/PrivateKeyVault/blob/master/Motivation/README.md#added-value-for-people-in-developing-countries) 7 | 8 | ### What's In It For You? 9 | If you have cryptocurrency then you will need a secure way to manage it. 10 | Surely you want the value of your cryptocurrency to go up. 11 | If everyone perceives cryptocurrency is safe then they will buy it. 12 | That will make the value of your cryptocurrency go up. **Way Up** 13 | Let's show everyone how to keep their cryptocurrency safe. 14 | 15 | ### What's In It For Me? 16 | Buy giving away my work on the PrivateKeyVault I can bring about universal adoption of cryptocurrency by making it secure. 17 | That will make the cryptocurrency I own to rise in value. 18 | That makes us partners. 19 | 20 | ### What's In It For Us? 21 | Authoritarian rule, Civil war, Terrorism, and Mass migration of refugees are the problems that mass adoption of blockchain technology will solve. Unlike normal money, cryptocurrency does not reside in any particular country and is not controlled by any government. So if someone with cryptocurrency leaves one country for another, their money is already there waiting for them as long as they have their private key. These people are not refugees, rather they are welcome visitors. But if someone with regular money needs to leave their country, the money stays. These people are not welcome visitors, rather they are refugees and burden to other countries. So turning people into refugees is profitable for dictators and terrorists while it weakens the free countries where refugees go. Imagine if refugees could take their money with them. The loss of funds created by people leaving would cause oppressive regimes and terrorist states to collapse. For the rest, market forces would cause governments to change even before they become very bad. 22 | 23 | This stabilizing effect of cryptocurrency on governments can only work if everybody is using it but until people are satisfied that there is a safe way to store private keys, cryptocurrency will not become main stream. 24 | 25 | **Now we have a safe way to store cryptocurrency that is accessible to everyone with electricity and an Internet connection.** 26 | Let's get rid of dictators and terrorist. 27 | Let's eradicate civil war. 28 | Let's give every human being planet wide access to their money. 29 | Let's turn every human being into a welcome visitor so that they will never need to flee their own countries. 30 | Let's show everyone how to make and use [The PrivateKeyVault](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---click-for-open-source-make-instructions) 31 | 32 | ### How else can blockchains help stabilize our world? 33 | Blockchains are lists that can be used to record land ownership as easily as they are used to track money. 34 | But these lists ca not be destroyed. 35 | 36 | Currently, after dictators and terrorist chase people off their lands they immediately destroy all the countries records of land ownership. This makes it extremely difficult for refugees to regain ownership or even make a claim in international courts. Knowing that refugees have little chance proving ownership of their land makes ethnic cleansing an attractive proposition for authoritarian regimes. Getting official records of land ownership onto a blockchain will have a dramatic stabilizing effect on countries where civil war is likely to break out or where ethnic cleansing is likely to occur. 37 | 38 | The key to getting government records onto blockchains is making blockchains the easiest, most widely available, and most secure instrument for the task. 39 | 40 | Sounds like a job for the raspberry pi: 41 | * Easy to use: It was made for teaching children. 42 | * Widely available all over the planet for practically nothing. 43 | * Super secure if set up with LUKS full disk encryption according to [the instructions here](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---click-for-open-source-make-instructions). 44 | 45 | Let's teach everyone how they can use the raspberry pi to take control of their own assets. 46 | This is what the [PrivateKeyVault GitHub repository](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---click-for-open-source-make-instructions) is for. 47 | 48 | ### Crypto-Journalism 49 | Now anything can be faked on the Internet. Anyone can now access computer programs which can fabricate videos featuring world leaders saying things they never actually said. False news stories appear on facebook and twitter all the time which are circulated by foreign governments to cause confusion, to shatter the common will of a nation, and to insert puppet leaders into office. When a nation's people no longer know what's real they can be manipulated to do anything. Free nations are at serious risk of losing their democracies as more and more people are fooled with social media into handing over their free will to authoritarian leaders. There is a defense against fake news (Digitally Signed Documents). These are videos and written news articles which have been encrypted using the private key of a trusted source such as a news caster or political leader. The reader decrypts these files using the news source's public key. If the documents are legible after decryption then the reader can be certain that the document is indeed from the trusted source and that it has not been changed. The public must become familiar with use of digitally signed documents if we are to avoid the collective insanity which will precede the destruction of our democracies through state manipulation of social media. 50 | 51 | With a PrivateKeyVault (really just a raspberry pi) you can read, write, and distribute digitally signed documents. 52 | Now anyone can safely create a journalistic body of work and prove that they authored the entire work and that it has not been tampered with all while allowing the author to remain anonymous if he or she so chooses. 53 | 54 | That's what the [PrivateKeyVault GitHub repository](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---click-for-open-source-make-instructions) is for. 55 | 56 | ### Added Value For People In Developing Countries 57 | While many people in developing countries have the phones required to access the Internet, not so many have the computers necessary to make the most of it. The PrivateKeyVault is the cheapest computer you can have and it does double duty as a regular Internet connected computer simply by swapping out the encrypted SD card containing private information with another one set up for business, education, browsing, and casual use. 58 | Now, not only can everyone with Internet reach the blockchain - Finally they can learn to use it. 59 | The raspberry pi is a community for getting people on computers. 60 | The PrivateKeyVault is a community for getting people on blockchains. 61 | 62 | [The PrivateKeyVault GitHub repository](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---click-for-open-source-make-instructions) 63 | 64 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /WiringInstruction/README.md: -------------------------------------------------------------------------------- 1 | Wiring instructions here 2 | [Click here to return to the PrivateKeyVault main page for software installation instructions](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---make-instructions) 3 | **Or continue reading below for wiring instructions** 4 | 5 | 6 | 7 | Above is what the finished wiring job will look like. 8 | A wiring diagram will be given further below. 9 | 10 |
11 | 12 | 13 | 14 | This photo shows just the wires you will be soldering. 15 | The wires are routed slightly differently compared with the photo above. 16 | It doesn't matter how your route them as long as you do your best to keep the wires short. 17 | 18 |
19 | 20 | 21 | 22 | This photo shows the wires you will be soldering from the other side. 23 | 24 |
25 | 26 | 27 | 28 | In this photo we see 16 standoffs which are threaded 2.5 mm and are 6 mm long. 29 | These standoffs are fastened to the lid with 2.5 mm screws which are also 6 mm long. 30 | Circuit boards will be fastend to the standoffs with 2.5 mm screws 4 mm long. 31 | [The standoffs, screws, and other parts can be found in this kit](https://www.adafruit.com/product/3299) 32 | PrivateKeyVault has no finacial relationship with the vendor. 33 | 34 | Also shown is the switch mount fastened to the lid with 2.5 mm screws 10 mm long and 2.5 mm nuts 35 | These are also found in the kit linked above. 36 | 37 | Notice that four holes are left empty. The touch screen will be fastened with these later. 38 | 39 | Also notice that the chemically welded tabs are facing up so that the lid is laying flat on the table. 40 | That will ensure that the standoffs and switch mount are inside the box when the lid is closed and latched. 41 | 42 |
43 | 44 | 45 | 46 | In this photo we see all the parts except the touch screen are mounted. 47 | We can't mount the touch screen until all the soldering is done. 48 | 49 | The battery plugs into the side of the charger board when you are ready to energize the Vault. 50 | You can see this connection in the very first photo. 51 | 52 | Also seen in the very first photo: 53 | I shortened the red and black battery cables by cutting a section of wire out of each and then soldered them back together. 54 | You will need 1/16 inch diameter heat shrink tubing to cover the solder joints. 55 | **Danger** 56 | **Don't cut the wires at the same time or you will short out the battery and cause a dangerous arc.** 57 | **Instead, cut one wire to shorten it, solder it back together, and heat shrink the wire to safely cover the solder joint.** 58 | **Then it will be safe to do the same with the other wire.** 59 | 60 | The reason I did this is because the raspberry pi is very sensitive to voltage drops and longer power cables cause a larger voltage drop. For the same reason I used relatively thick 20 gage wire for all the power and ground connections. 61 | Don't fail to take these precautions or your Vault will not work reliably. 62 | 63 | Also, when you are ready to charge the battery or power the Vault, the AC power supply plugs into the top of the charger board right next to the connector where the battery plugs in. 64 | 65 | Notice the camera mounted in the center of the lid. 66 | For some reason two of the holes are smaller than 2.5 mm so I drilled these out with a .093" or 3/32" drill bit. 67 | 68 | Finally, take notice of how the ribbon cable is folded to fit into the receptical on the raspberry pi. 69 | It is necessary to do this so that the touch screen will fit on top without any interference. 70 | 71 |
72 | 73 | 74 | 75 | In this photo we see how the ribbon cable is inserted into the pi. 76 | 77 |
78 | 79 | 80 | 81 | In this photo the lid has been flipped over so that you can see how the touch screen is mounted. 82 | You will need (Qty 4) 2.5 mm standoffs which are 23 mm long. 83 | The touch screen comes with (Qty 4) 12 mm long standoffs. 84 | You can purchase (Qty 4) [11 mm long standoffs here.](https://www.adafruit.com/product/2336) 85 | Screw these together to come up with the 23 mm of length needed. 86 | This length allows you to close the lid over the keyboard with just the right amount of pressure on the keys to keep it from moving around in the box. 87 | 88 | Notice the camera in the very center of the lid still has it's protective tab over the lens. 89 | Later after we apply power, we will need to focus the camera to a length of 3 1/8 inches from lens to subject. 90 | This is the perfect focal length for passing qr-codes from a smartphone into the PrivateKeyVault. 91 | 92 |
93 | 94 | 95 | 96 | Solder the wires according to the diagram given further below. 97 | 98 | To start out, solder a 6 in long piece of 20 gage [red](https://www.newark.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=10001&langId=-1&urlRequestType=Base&partNumber=68X4831&storeId=10194) and [black](https://www.newark.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=10001&langId=-1&urlRequestType=Base&partNumber=68X4829&storeId=10194) wire to the (+ and -) connections as shown in the photo above. 99 | These go to the lighted switch as you can see in this document's very first photo. 100 | 101 | Then cut a 3 in piece of special [red and black jumper wires](https://www.sparkfun.com/products/11710) and solder them to the 5v and Gnd connections as shown in the photo above. 102 | These are not your typical jumper wires. 103 | Not shown in this photo, these wires have a connector crimped at the ends. 104 | You can see the crimp connectors in the next photo and also in the second photo of this document. 105 | Also these jumpers are made from 20 gage wire which is thicker than wire ordinarily used to make jumper wires of this type. 106 | So there is less voltage drop across these wire compared with normal jumper wires. 107 | This really matters. 108 | Do not fail to purchase these special jumper wires for your project. 109 | These will connect to the touch screen by sliding the connectors onto the 5v pin for the red wire and GND pin for the black wire. 110 | The red connection to the touch screen is visible in the very first photo of this document if you look carefully. The black jumper wire is not visible in that photo but you will know it because it is marked GND. 111 | 112 | Finally, solder a grey wire about 6 inches long to the connection marked EN for enable. 113 | This wire will go to the lighted switch as seen in this document's very first photo. 114 | 115 |
116 | 117 | 118 | 119 | Sorry about the dirty fingers - should have hired a hand model. 120 | In any case, flip the charger board over. 121 | Notice the black wire at GND and yellow wire at LiPo. 122 | These wire are 20 gage. Thick wires are required to avoid an unacceptable voltage drop. 123 | I used 3 inch long pieces of wire cut from the package of special jumpers we used in the previous step. 124 | Notice that these two wires are inserted into the board from bottom where as the wires in the previous step were inserted from the top. 125 | The black wire will go into the connection marked GND and the yellow wire will go into the connnection marked LiPo. 126 | Solder the wires in place. 127 | Later you can mount the board back onto the lid and cut the lengths of the wires so that they are just long enough to reach the GND and Bat connections on the smaller boost board. Then you can unmount the boards and solder the wires to the board. Make sure the wires are just long enough so that mounting the boost boards back on to the acrylic lid will not be difficult. 128 | 129 | Now referring the the very first photo in this document and to the wiring diagram below, solder a 6 inch length of red, black, and grey wire as shown into the smaller boost board. The red wire will go to the 5 Volt GPIO pin on the raspberry pi. The black wire will go to a ground pin on the raspberry pi. And the grey wire will go to the lighted switch. All of this is shown in the wiring diagram which is the next photo below. Please note that the wiring diagram seems to indicate that the wires are soldered to the side of the board shown in the diagram. Actually they are soldered to the other side where GPIO pins extend for this purpose. This is made clear in the first photo. 130 | 131 |
132 | 133 | 134 | 135 | This diagram shows all the wires and their terminal points for soldering but looking at the very first photo in this document will give you a better idea of how to run the wires. 136 | 137 |
138 | 139 | The cable for the keyboard as it came from the vendor was too long to fit in the box. 140 | Furthermore, all that extra length is inconvenient to manage when using the device. 141 | 142 | The next three photos below show how to solder the wires to a new USB connector [which can be ordered here](https://www.adafruit.com/product/1827). 143 | This connector has a very thin profile which will matter when you are plugging several devices into the USB ports during the SD card cloning process. 144 | 145 | 146 | 147 | Cut the wire to a length of 24 1/4 inches from keyboard to the end of the wire and strip it as shown. 148 |
149 | 150 | 151 | 152 | Then solder the wires to the USB connector as shown above. 153 | Don't forget to slide the two plastic parts over the wire as shown before soldering the wires. 154 | 155 |
156 | 157 | 158 | 159 | Next turn the connector over and solder the ground wire as shown in the photo above. 160 | You will need to file the solder flat so that you can slide the plastic cover over the soldered wires. 161 | 162 | Finally, a bit of epoxy glue on the wire and connector will ensure that it does not come apart during use. 163 | Do not skip this step. 164 | 165 |
166 | 167 | The wire measures about .103 inches in diameter so in the next build I put slots into all the uprights to make it easier to tuck away the wire. A slot .100 inches wide provided enough friction to keep the wire in place. This is not shown in the photos but the feature is included in the CorelDraw files so you will have this feature when you cut the parts. 168 | 169 |
170 | 171 | 172 | 173 | If you happen to have an SD card already loaded with the Raspbian operating system then you may want to fire up your PrivateKeyVault now. Otherwise this step is covered later. If you have a card with operating system installed then go ahead and put in the SD card and press the power button. It should look something like the picture above. 174 | 175 | **Warning** 176 | When shutting down: 177 | Always shutdown with the menu option and wait 15 second before pressing off the power button. 178 | **If you fail to do this then you may ruin your SD card.** 179 | I hope you have a backup. 180 | I will incorperate inteligent power management in future builds. 181 | 182 |
183 | 184 | If you happen to have an SD card already loaded with the Raspbian operating system then you may want to focus the camera now. Otherwise this step is covered later. 185 | You will need to focus the camera. This is because you will be using the camera to take pictures and videos of qr-codes on your phone which will be held about 3 1/8 inches from your camera. This really matters if you are using the camera to read qr-codes. You simply will not be able to read qr-codes with your camera if it is not focused for a distance of 3 1/8 inches. 186 | 187 | 188 | 189 | You will need to remove the touch screen in order to remove the camera and then temporarily put it back together as show in the photo above in order to focus the camera. 190 | 191 | When you have the Vault powered up again in this new configuration execute the following command at the terminal window to set up the camera focus 192 | `raspistill -t 0` 193 | Now the touchscreen will show what the camera sees. 194 | Adjust the focus to about 3 1/8 inches as measured from lens to object. 195 | The next photo shows how to make the adjustment. 196 | 197 |
198 | 199 | 200 | 201 | The focus comes set at infinity. 202 | Small sharp sissors are good for turning the retaining ring. 203 | Counter clock wise moves the focus closer. Counter clockwise is the direction you need to turn the ring. 204 | Some of the cameras come from the vendor with a dot of glue on the retaining ring to keep the focus set at infinity. 205 | If the dot of glue is present then some force will be required to break the dots of glue that hold the retaining ring in place. 206 | Keep turning the retaining ring and checking focus until focus is sharp at 2 3/8 inches. 207 | When focus is good shut down at the menu, wait 15 seconds, power off at the push button switch, and then remount the camera at it's normal position. 208 | To see what is possible with raspistill execute `raspistill --help` 209 | 210 |
211 | 212 | [Click here to return to the PrivateKeyVault main page for wiring and software installation instructions](https://github.com/johnshearing/PrivateKeyVault#privatekeyvault---make-instructions) 213 | -------------------------------------------------------------------------------- /images/LaserCutMakeImages/01_In_The_Printer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/01_In_The_Printer.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/02_All_The_Parts.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/02_All_The_Parts.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/03_Latch_Parts01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/03_Latch_Parts01.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/04_Sand_Latch03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/04_Sand_Latch03.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/05_Fit_Latch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/05_Fit_Latch.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/06_Stack_Order_x1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/06_Stack_Order_x1.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/06_Stack_Order_x2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/06_Stack_Order_x2.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/06_Stack_Order_x4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/06_Stack_Order_x4.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/07_Finished_Box_x1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/07_Finished_Box_x1.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/CaseClosed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/CaseClosed.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/CaseOpened.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/LaserCutMakeImages/CaseOpened.jpg -------------------------------------------------------------------------------- /images/LaserCutMakeImages/Info.md: -------------------------------------------------------------------------------- 1 | These images are used in the README.md in the LaserCut Folder 2 | -------------------------------------------------------------------------------- /images/ReadmeImages/AdjustingFocus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/AdjustingFocus.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/CheckingFocus.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/CheckingFocus.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/CloneSetup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/CloneSetup.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/CloneTools.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/CloneTools.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/ExtremeCloseUp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/ExtremeCloseUp.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/FiredUp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/FiredUp.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/Info.md: -------------------------------------------------------------------------------- 1 | These images are used in the main readme file for the PrivateKeyVault repository. 2 | -------------------------------------------------------------------------------- /images/ReadmeImages/PassingDataToPhone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/PassingDataToPhone.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/Phone2Vault.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/Phone2Vault.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/Sparkly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/Sparkly.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/UniqueDollar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/UniqueDollar.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/Vault2Phone.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/Vault2Phone.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/WireTie.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/WireTie.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/WireTies.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/WireTies.jpg -------------------------------------------------------------------------------- /images/ReadmeImages/Wiring.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/ReadmeImages/Wiring.jpg -------------------------------------------------------------------------------- /images/Security/Info.md: -------------------------------------------------------------------------------- 1 | The photos in this folder show the sha1sum for trusted SD cards 2 | 3 | Sha1sum_nonencrypted_SD_with_Full_Setup.jpg 4 | The sum above is for a card with all the necessary software needed to use the PrivateKeyVault. 5 | I never use the card except to clone it. 6 | So the sum should never change. 7 | Any card I distribute cloned from this original will also have the same sha1sum. 8 | LUKS full disk encryption is not applied to the card. 9 | This allows the recipient to encrypt the card for himself or herself which is the only way to set the password for the LUKS encrypted partition. 10 | [Follow these instructions to apply LUKS full disk encryption.](https://github.com/johnshearing/PrivateKeyVault#setup-luks-full-disk-encryption) 11 | -------------------------------------------------------------------------------- /images/Security/Sha1sum_nonencrypted_SD_with_Full_Setup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/Security/Sha1sum_nonencrypted_SD_with_Full_Setup.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/01_Standoffs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/01_Standoffs.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/02_RibbonFold.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/02_RibbonFold.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/03_RibbonInserted.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/03_RibbonInserted.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/04_ScreenMounted.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/04_ScreenMounted.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/05_FrontCharger.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/05_FrontCharger.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/06_BackCharger.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/06_BackCharger.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/Info.md: -------------------------------------------------------------------------------- 1 | These images are used in the wiring instruction document. 2 | -------------------------------------------------------------------------------- /images/WiringInstructionImages/KeyboardUSBDiagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/KeyboardUSBDiagram.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/USB_BGWR.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/USB_BGWR.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/USB_Grnd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/USB_Grnd.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/USB_Wire.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/USB_Wire.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/WiringDiagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/WiringDiagram.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/WiringFromInside.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/WiringFromInside.jpg -------------------------------------------------------------------------------- /images/WiringInstructionImages/WiringFromOutside.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johnshearing/PrivateKeyVault/1d8a475246d45c1eee1d23df122d6618ce70cf25/images/WiringInstructionImages/WiringFromOutside.jpg --------------------------------------------------------------------------------