質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

0回答

838閲覧

Android(kotlin)でECC

shushutochako

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2018/11/22 14:10

前提・実現したいこと

AndroidでElliptic Curve Cryptographyを使って電子署名をしたいと思っています。

秘密鍵は静的な情報を使用する想定ですが、ECPrivateKeySpecのパラメータに与えるべき情報がよくわかりません。
現状は生成時と同じ曲線などを指定してダミーのキーペアを作成して、その情報からパラメータを取得しています。

質問内容

  • 静的な鍵を使用する場合、ECPrivateKeySpecに与えるパラメータはどのように指定すればよいのでしょうか?
  • 作成したsignatureを検証する側では64byteを想定していますが、下記の実装で生成する場合に72byteで生成されます。 生成されるsignatureのサイズは何を元に決まるのでしょうか?

補足

  • 秘密鍵は32byteのデータを使用しています

検証コード

fun getSignature(message: String) : ByteArray { val ecdsaSign = Signature.getInstance("SHA256withECDSA") ecdsaSign.initSign(getPrivateKey()) ecdsaSign.update(message.toByteArray(charset("UTF-8"))) val signed = ecdsaSign.sign() return signed } fun getPrivateKey(): PrivateKey? { val privateKeyBytes = toBytes( 0x11, 0x11, ‥ ) try { val kf = KeyFactory.getInstance("EC") val params = getParams() val ecpks = ECPrivateKeySpec(BigInteger(privateKeyBytes), params!!) return kf.generatePrivate(ecpks) } catch (e: Exception) { e.printStackTrace() } return null } fun getParams(): ECParameterSpec? { try { val kpg = KeyPairGenerator.getInstance("EC") val gps = ECGenParameterSpec("secp256r1") kpg.initialize(gps) val apair = kpg.generateKeyPair() val apub = apair.public as ECPublicKey return apub.params } catch (e: Exception) { e.printStackTrace() } return null }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問