Skip to content

Instantly share code, notes, and snippets.

Avatar

Daniel Ochoa shafty023

View GitHub Profile
@shafty023
shafty023 / Storable.kt
Created Jun 9, 2020
Container for everything needed to decrypt db
View Storable.kt
/**
* Container for everything needed for decrypting the database.
*
* @param iv initialization vector
* @param key encrypted database key
* @param salt cryptographic salt
*/
data class Storable(val iv: String, val key: String, val salt: String)
@shafty023
shafty023 / CreateNewKey.kt
Created Jun 9, 2020
Wrapper function to create a new key
View CreateNewKey.kt
private lateinit var rawByteKey: ByteArray
private lateinit var dbCharKey: CharArray
/**
* Generates a new database key.
*/
fun createNewKey() {
// This is the raw key that we'll be encrypting + storing
rawByteKey = generateRandomKey()
// This is the key that will be used by Room
@shafty023
shafty023 / ByteArrayToHex.kt
Created Jun 9, 2020
Convert a ByteArray to Hex encoded String
View ByteArrayToHex.kt
private val HEX_CHARS = "0123456789ABCDEF".toCharArray()
/**
* Extension function that converts a ByteArray to a hex encoded String
*/
fun ByteArray.toHex(): String {
val result = StringBuilder()
forEach {
val octet = it.toInt()
val firstIndex = (octet and 0xF0).ushr(4)
@shafty023
shafty023 / RawKeyGenerator.kt
Created Jun 9, 2020
Generates a random 32 byte key
View RawKeyGenerator.kt
/**
* Generates a random 32 byte key.
*
* @return a byte array containing random values
*/
fun generateRandomKey(): ByteArray =
ByteArray(32).apply {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
SecureRandom.getInstanceStrong().nextBytes(this)
} else {
View SDKContextManager.java
/*
* Copyright (c) 2016 AirWatch, LLC. All rights reserved.
* This product is protected by copyright and intellectual property laws in
* the United States and other countries as well as by international treaties.
* AirWatch products may be covered by one or more patents listed at
* http://www.vmware.com/go/patents.
*/
package com.boxer.sdk;
import android.content.Context;
You can’t perform that action at this time.