From 9f8f00bb26ad3050051a230fa7a90f64efbc5df9 Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Thu, 19 Jun 2014 16:13:00 +0200 Subject: [PATCH 1/8] KeeChallenge: revert to previous version update strings from Crowdin new release for regular version --- .../java/res/values-hu/strings_kp2a.xml | 2 +- .../java/res/values-sk/strings_kp2a.xml | 10 +- .../java/res/values-zh-rCN/strings_kp2a.xml | 6 +- .../bin/keepass2androidpluginsdk.jar | Bin 20178 -> 20178 bytes src/keepass2android/KeeChallenge.cs | 38 ++----- .../Properties/AndroidManifest_net.xml | 2 +- .../Resources/values-ja/strings.xml | 107 ++++++++++++++++-- .../Resources/values-sk/strings.xml | 8 +- .../Resources/values/strings.xml | 2 +- src/keepass2android/keepass2android.csproj | 4 +- 10 files changed, 130 insertions(+), 49 deletions(-) diff --git a/src/java/KP2ASoftKeyboard2/java/res/values-hu/strings_kp2a.xml b/src/java/KP2ASoftKeyboard2/java/res/values-hu/strings_kp2a.xml index 5bb5e3e6..5fbdb0b1 100644 --- a/src/java/KP2ASoftKeyboard2/java/res/values-hu/strings_kp2a.xml +++ b/src/java/KP2ASoftKeyboard2/java/res/values-hu/strings_kp2a.xml @@ -6,7 +6,7 @@ Bejegyzés keresése: \"%1$s\" Felhasználó Jelszó - Hitelesítőadatok bevitele + Hitelesítő adatok bevitele Automatikus kitöltés engedélyezve Egy üres mezőbe lépve annak automatikus kitöltése, ha a billentyűzet számára van elérhető Keepass2Android bejegyzés és az tartalmaz a mezőhöz megadott útmutatásnak megfelelő értéket. A mezők útmutatásának tárolása diff --git a/src/java/KP2ASoftKeyboard2/java/res/values-sk/strings_kp2a.xml b/src/java/KP2ASoftKeyboard2/java/res/values-sk/strings_kp2a.xml index e1d5e92e..aff57934 100644 --- a/src/java/KP2ASoftKeyboard2/java/res/values-sk/strings_kp2a.xml +++ b/src/java/KP2ASoftKeyboard2/java/res/values-sk/strings_kp2a.xml @@ -7,14 +7,14 @@ Používateľ Heslo Nastavenia zadávania údajov - Automatické dopĺňanie zapnuté + Autom. dopĺňanie zap. Pri vstupe do prázdneho políčka automaticky doplniť text, ak je dostupný záznam Keepass2Android pre klávesnicu a aj pole ktoré je v zhode s pomocným textom pre pole. - Zapamätať si pomocné texty pre pole + Pamätať si nápovedu poľa Ak je textové pole vyplnené manuálnym vybraním hodnoty Keepass2Android, pamätať si hodnotu zadanú do poľa. Textové pole bude neskôr detegované podľa pomocného textu. Jednoduchá klávesnica - Ak je dostupný záznam pre klávesnicu, zobraziť klávesnicu s 1 riadkom. Ak je vypnutá, pri stlačení klávesy Keepass2Android sa zobrazí dialóg. - Po dokončení uzamknúť databázu + Ak je dostupný záznam pre klávesnicu, zobraziť klávesnicu s 1 riadkom. Ak je vypnutá, pri stlačení tlač. Keepass2Android sa zobrazí dialóg. + Po skončení uzamknúť datab. Automaticky uzamknúť databázu po stlačení tlač. Hotovo/Odoslať/Prejsť na 1-riadkovej klávesnici. - Po dokončení prepnúť klávesnicu + Po skončení prepnúť kláv. Prepnúť klávesnicu naspäť po stlačení tlačidla Hotovo/Odoslať/Prejsť na 1-riadkovej klávesnici. diff --git a/src/java/KP2ASoftKeyboard2/java/res/values-zh-rCN/strings_kp2a.xml b/src/java/KP2ASoftKeyboard2/java/res/values-zh-rCN/strings_kp2a.xml index 554d9ff8..13239f83 100644 --- a/src/java/KP2ASoftKeyboard2/java/res/values-zh-rCN/strings_kp2a.xml +++ b/src/java/KP2ASoftKeyboard2/java/res/values-zh-rCN/strings_kp2a.xml @@ -12,9 +12,9 @@ 记忆字段提示文本 如果通过手动选择 Keepass2Android 填充字段,请记住哪个字段在对应字段中输入。该字段是后来由其提示文本重新检测到。 简单键盘 - 当一个条目是可用时显示简单的 1 行键盘。如果禁用,当按 Keepass2Android 键时则是显示一个对话框。 + 当一个条目是可用时显示单行键盘。如果禁用,当按 Keepass2Android 键时则是显示一个对话框。 完成时锁定数据库 - 当点击 1 行键盘上的完成或发送键时,自动锁定数据库。 + 当点击单行键盘上的完成或发送键时,自动锁定数据库。 完成后切换键盘 - 当点击 1 行键盘上的完成或发送键时,自动切换键盘。 + 当点击单行键盘上的完成或发送键时,自动切换键盘。 diff --git a/src/java/Keepass2AndroidPluginSDK/bin/keepass2androidpluginsdk.jar b/src/java/Keepass2AndroidPluginSDK/bin/keepass2androidpluginsdk.jar index 4d388a041d0832417b4b6aa2925a321383ac1cd3..5dfdfd7701e22791f147f3fa4358d4fc85baa77f 100644 GIT binary patch delta 296 zcmcaKm+{hEM&1B#W)=|!4h{~6-KG~O^13q%>z&*fuFDUiC-VyFO!o5>*nF7Zoe3nc znOA5BJD71o@&zlHu~}XeEHybs)pPP|FR9IXO4`g|nHbeph^8m%=OK)3S`#4*FWuh| z-5$oPAR=E)-+~REd_vNAa=)tRWC1C*&Bk_i5M?FKe^{7-?weff;S4f+@=lKkFfHO4 z2BveN^fAv2FyGKC0ZdQvs)eZYhR{>I%fWm;pC&Lp*{1@+_pJoeUA}c-n%fUzPMKc} E0Gy6ug#Z8m delta 296 zcmcaKm+{hEM&1B#W)=|!4h{~6wZ_LL^13spnH}C3uFDUiC-VyFO!o5>*nF7Zorzgo z>&Rwap&jfXnaw98U$BB1o8?8Bz-nVuJtx2RlG?1Nq|FSLiBW9@%WQt4ejdWurZo}5 z@Y4Ma(d}Wp3L^5=^ex!n$tNU@C-=50%?$gk9lT*X+y6BFg?Yq7NX7@LQnB72lM%Sn!xmAp9%=yw-QWu`PPAH LZa;`QWqvULxiD(y diff --git a/src/keepass2android/KeeChallenge.cs b/src/keepass2android/KeeChallenge.cs index ca02fff0..8d90626c 100644 --- a/src/keepass2android/KeeChallenge.cs +++ b/src/keepass2android/KeeChallenge.cs @@ -27,6 +27,7 @@ using System.Xml; using KeePassLib.Keys; using KeePassLib.Utility; using KeePassLib.Cryptography; +using KeePassLib.Cryptography.Cipher; using KeePassLib.Serialization; using keepass2android; @@ -83,33 +84,26 @@ namespace KeeChallenge byte[] key = sha.ComputeHash(resp); // get a 256 bit key from the 160 bit hmac response byte[] secretHash = sha.ComputeHash(secret); - AesManaged aes = new AesManaged(); - aes.KeySize = key.Length * sizeof(byte) * 8; //pedantic, but foolproof - aes.Key = key; - aes.GenerateIV(); - aes.Padding = PaddingMode.PKCS7; - byte[] iv = aes.IV; - + StandardAesEngine aes = new StandardAesEngine(); + const uint aesIVLenBytes = 16 ; + byte[] IV = CryptoRandom.Instance.GetRandomBytes(aesIVLenBytes); byte[] encrypted; - ICryptoTransform enc = aes.CreateEncryptor(); + using (MemoryStream msEncrypt = new MemoryStream()) { - using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, enc, CryptoStreamMode.Write)) + using (CryptoStream csEncrypt = (CryptoStream)aes.EncryptStream(msEncrypt, key, IV)) { csEncrypt.Write(secret, 0, secret.Length); - csEncrypt.FlushFinalBlock(); - - encrypted = msEncrypt.ToArray(); csEncrypt.Close(); - csEncrypt.Clear(); } + + encrypted = msEncrypt.ToArray(); msEncrypt.Close(); } - ChallengeInfo inf = new ChallengeInfo (encrypted, aes.IV, challenge, secretHash); + ChallengeInfo inf = new ChallengeInfo (encrypted, IV, challenge, secretHash); sha.Clear(); - aes.Clear(); return inf; } @@ -125,21 +119,14 @@ namespace KeeChallenge SHA256 sha = SHA256Managed.Create(); byte[] key = sha.ComputeHash(yubiResp); // get a 256 bit key from the 160 bit hmac response - AesManaged aes = new AesManaged(); - aes.KeySize = key.Length * sizeof(byte) * 8; //pedantic, but foolproof - aes.Key = key; - aes.IV = inf.IV; - aes.Padding = PaddingMode.PKCS7; + StandardAesEngine aes = new StandardAesEngine(); - - ICryptoTransform dec = aes.CreateDecryptor(); using (MemoryStream msDecrypt = new MemoryStream(inf.EncryptedSecret)) { - using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, dec, CryptoStreamMode.Read)) + using (CryptoStream csDecrypt = (CryptoStream)aes.DecryptStream(msDecrypt, key, inf.IV)) { csDecrypt.Read(secret, 0, secret.Length); csDecrypt.Close(); - csDecrypt.Clear(); } msDecrypt.Close(); } @@ -157,7 +144,6 @@ namespace KeeChallenge //return the secret sha.Clear(); - aes.Clear(); return true; } @@ -168,7 +154,7 @@ namespace KeeChallenge /// /// A pre-populated object containing minimally the IV, EncryptedSecret and Verification fields. /// This should be populated from the database.xml auxilliary file - /// The Yubikey's response to the issued challenge + /// The Yubikey's response to the issued challenge /// The common secret, used as a composite key to encrypt a Keepass database public static byte[] GetSecret(ChallengeInfo inf, byte[] resp) { diff --git a/src/keepass2android/Properties/AndroidManifest_net.xml b/src/keepass2android/Properties/AndroidManifest_net.xml index dd8b549d..519820ab 100644 --- a/src/keepass2android/Properties/AndroidManifest_net.xml +++ b/src/keepass2android/Properties/AndroidManifest_net.xml @@ -1,5 +1,5 @@  - + diff --git a/src/keepass2android/Resources/values-ja/strings.xml b/src/keepass2android/Resources/values-ja/strings.xml index 9d1baf34..2ce03fda 100644 --- a/src/keepass2android/Resources/values-ja/strings.xml +++ b/src/keepass2android/Resources/values-ja/strings.xml @@ -5,6 +5,7 @@ WEBサイト \"Keepass2Android\"はパスワードマネージャソフト\"KeePass\"をAndroid上で利用する為のアプリです。 決定 + 拒否 エントリーを追加 URL のエントリを作成します。 グループを追加 @@ -21,11 +22,14 @@ アプリのプロセスを終了 アプリケーション アプリケーション設定 + 検索結果にグループ名を表示する セキュリティ 表示 パスワードエントリーへのアクセス クイック解除 ファイル操作 + キーボード + データベースのエクスポート カッコ キャンセル クリップボードを消去しました。 @@ -43,7 +47,7 @@ 数字 Keepass2Android によって作られたフリーソフトウェアであり、無保証です。GPLバージョン2以上の条件下でこれを再頒布することができます。 \u2026 - データベースファイル + データベースファイル名の入力 最終アクセス日 キャンセル 備考 @@ -52,6 +56,7 @@ パスワードの確認 作成日 有効期限 + グループ名 キーファイル(オプション) 更新日 パスワード @@ -108,7 +113,7 @@ ***** パスワードを隠す パスワード欄をアスタリスクで表示します - について + Keepass2Androidについて マスターキーを変更 パスワードをコピー ユーザー名をコピー @@ -117,6 +122,7 @@ データベース設定 削除 別のグループへ移動 + 移動 ビールの寄付... 編集 パスワードを隠す @@ -139,6 +145,7 @@ \"バックアップ\"と\"ごみ箱\"を検索対象から除外します KeePassデータベースファイル データベースのパスワード設定 + マスターキータイプの選択 データベースファイルを作成中… データベースを作成 実行中… @@ -153,6 +160,8 @@ データベース名 新しいエントリのデフォルトユーザー名 データベースを保存中… + データベースをエクスポート中… + データベースのエクスポートが完了しました。 半角スペース 検索 パスワードを表示 @@ -195,10 +204,27 @@ データベースを閉じる クイック解除をデフォルトで有効にする クイック解除アイコンを隠す + クイックアンロックアイコンを隠す クイック解除キーの長さ クイック解除に失敗しました: パスワードが正しくありません! 添付ファイルのディレクトリ + 添付ファイルを保存 SDカードに保存 + フィールド名 + フィールド値 + ファイルを添付 + サーバーの資格情報を入力してください。 + スクリーンオフ時にロックする + スクリーンがオフに切り替わったときデータベースをロックします。 + 寄付オプションを表示しない + データベース キャッシュ + SSL 証明書 + キャッシュをクリアしますか? + 変更をチェック + 既存のバイナリを上書きしますか。 + 上書き + 名前の変更 + ごみ箱 現在開いているファイルは、別のプログラムによって変更されました。それを再読み込みしますか。 今までの変更を破棄しますか。([保存] ボタンは、フォームの上部にあります。) 変更を破棄しますか。 @@ -210,19 +236,86 @@ エントリの削除 グループの削除 パスワードの設定 + 変更を元に戻しています。 + マスターキーを変換しています。 + データベースを解析しています. + ターゲット ファイルの変更を確認しています。 + 変更をマージしますか? + 変更をマージしています・・・ + はい、マージします。 + いいえ、上書きします。 + リモート ファイルをダウンロードしています. + ファイルをアップロードしています. + リモートファイルを復元しています。 + データベースの変更を確認しています。 + 変更は検出されませんでした。 + データベースファイル + エラーが発生しました + データベースの同期 + ホスト(例: 192.168.0.1) + ポート + 初期ディレクトリ (省略可能): + ストレージタイプの選択 + 端末内ファイル + FTP + HTTP (WebDav) + HTTPS (WebDav) + Dropbox + Dropbox (KP2A フォルダー) + Google ドライブ + OneDrive + ファイルのアクセスの初期化 + データベースの場所 + マスター パスワード + データベースを保護するマスター パスワードを選択します。 + キー ファイル + キーファイルを使用する + 読み込み中… + プラグイン + パッケージ名: + 有効 + 無効 + オンラインでプラグインを見つける + 有効 + 現在のエントリーデータ + ファイル形式の選択 30秒 1分 5分 - 10 minutes - 15 minutes - 30 minutes - 1 hour - Never + 10分 + 15分 + 30分 + 1時間 + 無し + + + Keepass 2 データベース (.kdbx) + Keepass 2 XML (暗号化なし) (.xml) + Keepass CSV (暗号化なし) (.csv) + デザイン + + Do not remember username and password + ユーザー名のみ保存 + ユーザー名とパスワードを保存 + + + パスワードのみ + パスワード + キー ファイル + パスワード + OTP + Password + OTP secret (recovery mode) + パスワード + チャレンジ レスポンス + Password + Challenge-Response secret (recovery mode) + + + 証明書検証エラーを無視する + Warn when validation fails + 無効な証明書を受け入れない + diff --git a/src/keepass2android/Resources/values-sk/strings.xml b/src/keepass2android/Resources/values-sk/strings.xml index 275c33f1..1c540b65 100644 --- a/src/keepass2android/Resources/values-sk/strings.xml +++ b/src/keepass2android/Resources/values-sk/strings.xml @@ -255,9 +255,9 @@ Uzamknúť pri opustení aplikácie Uzamknúť databázu pri opustení aplikácie stlačením tlačidla Späť. Skryť možnosti prispenia - Toto nastavenie je určené pre sponzorov. Je dostupné po použiť Keepass2Android, len na chvíľu. + Toto nastavenie je určené pre sponzorov. Je dostupné po použití Keepass2Android, len na chvíľu. Bez príspevkov by táto aplikácia neexistovala a nebolo by možné ju neustále vylepšovať! Ak ste ešte neprispeli na jej vývoj, prosím zvážte možnosť prispenia teraz. - Uloženie databázy do vyr. pamäte + Ukladať do vyr. pamäte Zachovať kópiu súborov vzdialenej databázy v priečinku vyr. pamäte programu. Takto môžete používať vzdialené databázy aj v režime offline. Certifikáty SSL Definujte postup pri zlyhaní overenia certifikátu. Poznámka: pri zlyhaní overenia môžete na zariadenie nainštalovať certifikáty! @@ -272,7 +272,7 @@ Prepnúť klávesnicu Otvoriť dialóg výberu klávesnice, ak je po vyhľadaní z prehliadača alebo klávesnice dostupný záznam zadávaný cez klávesnicu KP2A. Prepínať, ak je dostupný root - Na zariadeniach s najvyššími opráveniami je možné automaticky prepínať na klávesnicu Keepass2Android a naspäť na predchádzajúcu klávesnicu, bez zobrazenia metódy vstupu. Prepnutie je možné po vyhľadaní záznamu alebo kliknutí na notifikáciu klávesnice KP2A. Táto funkcia vyžaduje inštaláciu Secure Settings app. Viac informácií získate v dokumentácii KP2A! + Na zariadeniach s najvyššími oprávneniami je možné automaticky prepínať na klávesnicu Keepass2Android a naspäť na predchádzajúcu klávesnicu, bez zobrazenia metódy vstupu. Prepnutie je možné po vyhľadaní záznamu alebo kliknutí na notifikáciu klávesnice KP2A. Táto funkcia vyžaduje inštaláciu Secure Settings app. Viac informácií získate v dokumentácii KP2A! Notifikačná ikona počas odomknutia Zobraziť prichádzajúcu notifikáciu aj pri odomknutej databáze. Vopred načítať databázu @@ -384,7 +384,7 @@ Nemožno načítať doplnkový súbor pre výzvu! Prosím použite prídavný modul KeeChallenge v programe KeePass 2.x (PC) pre nakonfigurovanie databázy na použitie s odpoveďou na výzvu! Chyba pri aktualizovaní doplnkového súboru OTP! - Názov prvotného (seed) poľa TOTP + Názov seed poľa TOTP Ak používate prídavný modul pre Keepass 2 s názvom \"TrayTotp\", nie s predvolenými nastaveniami, zadajte názov pre prvotné (seed) pole, podľa nastavení v PC. Názov poľa pre nastavenia TOTP Sem zadajte názov poľa s nastaveniami pre TrayTotp. diff --git a/src/keepass2android/Resources/values/strings.xml b/src/keepass2android/Resources/values/strings.xml index b0d3995c..2d3d31d0 100644 --- a/src/keepass2android/Resources/values/strings.xml +++ b/src/keepass2android/Resources/values/strings.xml @@ -80,7 +80,7 @@ Error creating group. Could not create parent directory. This file already exists. - Failed to determine database settings. + Failed to determine database settings. Failed to launch link. A filename is required. Could not create file diff --git a/src/keepass2android/keepass2android.csproj b/src/keepass2android/keepass2android.csproj index 9cc28e10..b9db7c16 100644 --- a/src/keepass2android/keepass2android.csproj +++ b/src/keepass2android/keepass2android.csproj @@ -385,7 +385,9 @@ - + + Designer + Designer From c882981a291b695af1fd2a88b87fb061810c101b Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Thu, 19 Jun 2014 16:13:16 +0200 Subject: [PATCH 2/8] minor changes --- .gitignore | 2 + src/ArtTestApp/Activity1.cs | 93 +++++++++++++++++++++++++++----- src/ArtTestApp/ArtTestApp.csproj | 13 +++++ 3 files changed, 95 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 5403ef31..7d8941dd 100644 --- a/.gitignore +++ b/.gitignore @@ -258,3 +258,5 @@ Thumbs.db /src/java/PluginInputStick/bin /src/java/PluginInputStick/icons + +/src/PluginSdkBinding/bin/Release diff --git a/src/ArtTestApp/Activity1.cs b/src/ArtTestApp/Activity1.cs index 4202a2c5..10968c43 100644 --- a/src/ArtTestApp/Activity1.cs +++ b/src/ArtTestApp/Activity1.cs @@ -1,18 +1,28 @@ using System; - +using System.Collections.Generic; using Android.App; using Android.Content; +using Android.Content.PM; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; +using KeeChallenge; +using KeePassLib.Serialization; +using keepass2android; +using keepass2android.Io; namespace ArtTestApp { [Activity(Label = "ArtTestApp", MainLauncher = true, Icon = "@drawable/icon")] public class Activity1 : Activity { - + private ChallengeInfo _chalInfo; + private byte[] _challengeSecret; + private IOConnectionInfo _ioConnectionInfo; + private IOConnectionInfo _ioConnectionInfoOut; + private const int RequestCodeChallengeYubikey = 98; + protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); @@ -20,30 +30,87 @@ namespace ArtTestApp // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); + _ioConnectionInfo = new IOConnectionInfo() { Path = "/mnt/sdcard/keepass/keechallenge.xml" }; + _ioConnectionInfoOut = new IOConnectionInfo() { Path = "/mnt/sdcard/keepass/keechallengeOut.xml" }; + + // Get our button from the layout resource, // and attach an event to it FindViewById