Created
May 31, 2020 10:57
-
-
Save taretmch/a568675e49ab6b3eb315d164eea09b80 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.keyczar._ | |
import org.keyczar.enums._ | |
import org.apache.commons.codec.binary.{Hex, StringUtils} | |
import org.apache.commons.codec.digest.DigestUtils | |
import ixias.security.KeyReader | |
object SignerSample { | |
def main(args: Array[String]): Unit = { | |
// 秘密鍵の設定 | |
val secret = "secret-key" | |
// 鍵の生成 | |
val secretDigest = DigestUtils.sha256(secret) | |
// HMAC 用鍵オブジェクトの生成 | |
val key = new HmacKey(secretDigest) | |
// 鍵のメタデータの生成 | |
val keyMetadata = new KeyMetadata( | |
"HMAC test", | |
KeyPurpose.SIGN_AND_VERIFY, | |
DefaultKeyType.HMAC_SHA1 | |
) | |
// 鍵のバージョンの生成 | |
val keyVersion = new KeyVersion(0, KeyStatus.PRIMARY, false) | |
// 鍵のバージョンのメタデータへの追加 | |
keyMetadata.addVersion(keyVersion) | |
// 鍵の読み出しオブジェクトの生成 | |
// KeyReader は KeyczarReader を継承している | |
// KeyczarReader はインタフェースであるため、自前で実装する必要がある | |
val reader = new KeyReader(keyMetadata, IndexedSeq(key)) | |
// 秘密鍵の設定から Signer を生成する | |
val signer = new Signer(reader) | |
// 署名するメッセージ | |
val message = "This is a pen." | |
// 秘密鍵を用いて生成した署名 | |
val signature = signer.sign(StringUtils.getBytesUsAscii(message)) | |
println("message: " + message) | |
println("signature: " + signature) | |
// メッセージの検証 | |
// => true が返される | |
val result = signer.verify(StringUtils.getBytesUsAscii(message), signature) | |
println("verification: " + result) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment