値:
RSA、ECDSA
秘密鍵を使ってテキストに署名し、公開鍵を使って署名を検証します。
パディングのために
RFC-4051 に従います。
考慮事項
- 公開鍵の場合、ハッシュアルゴリズムは証明書から識別されます。
- 署名アルゴリズム用には、HashAlgorithm の NONE の値は有効ではありません。
- 鍵のタイプとして ECDSA を使用する場合、HashAlgorithm の既定値は SHA1 が使用されます。
有効な鍵形式
- Base64 でエンコードされた PKCS8 形式の鍵 (.pem 拡張子)。公開鍵、秘密鍵、証明書またはその両方を含めることができます。
- 暗号化された .pem ファイルは使用できません。
- 暗号化された PKCS8 秘密鍵は GeneXus 17 Upgrade 2 以降で使用できます。
- .key 拡張子のファイルは GeneXus 16 Upgrade 11 以降でサポートされています。
- DER 証明書 (.crt または .cer 拡張子)。公開鍵のみ含みます。
- PKCS12 の証明書またはキーストア (.p12、.pfx、.jks のいずれかの拡張子)。秘密鍵のみ、または両方を含みます。
- JKS 形式 (JavaKeyStore) は、Java の実装にのみ利用できます。
- Java および .NET の両方の実装に対して、PKCS12 証明書のファイルのパスワードが必要です。
- .NET の実装環境では PKCS12 エイリアスは使用されません。証明書チェーンの最初の証明書の公開鍵と、ファイル上の最初の既定の秘密鍵が使用されます。
- .pkcs12 拡張子のファイルは、GeneXus 16 Upgrade 11 以降でサポートされています。
- すべての証明書が X509 標準を実装する必要があります。
- 証明書外の公開鍵は、PKCS8 形式が認められます。GeneXus 18 Upgrade 4 以降でサポートされています。
AsymmetricSigner.DoSign(privateKey, hashAlgorithm, plainText)
- privateKey の入力: PrivateKey タイプ、事前ロードされた秘密鍵
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- plainText の入力: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
- 戻り値: VarChar(9999)、Base64 でエンコード
指定された証明書の鍵およびハッシュアルゴリズムでテキストに署名します。
例:
&key.Load("C:\\certificates\\key.pem")
&hash = HashAlgorithm.SHA256
&plainText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet ultrices dolor a consectetur."
&signature = &AsymmetricSigner.DoSign(&key, &hash, &plainText)
AsymmetricSigner.DoVerify(certificate, plainText, signature)
- certificate の入力: 証明書のタイプ、事前にロードされた証明書
- plainText の入力: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
- signature の入力: VarChar(9999)、Base64 でエンコード
- 戻り値: ブール値。証明書のデータを使用して、署名が plainText に対して有効な場合は true です。
例:
&certificate.Load("C:\\certificates\\certificate.cer")
&plainText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet ultrices dolor a consectetur."
&signature = "Il3rfo20i3kqdTcrg/O0nhYAtb6y+l7fKKEzP1gvKNhnCNKwZajCEiBarg21E7nVXjvXeB4E7QSXCLD8kEUNlsfkuAkvnbf52+zcRb5HxaN+jWargDlVw2v1zzxYxQ8VdjVNdBioI6oHWzurcfRfn9D8Kfuy9mUWwGlZkHgpAj6RGdr95B67Fn5XnAjN1iEW9LPuRHi4rN2VqJ8GQT3mQ9y76kuv4mKfabzq/8ar+zxqXKa2B+0znVjTK7gbWtUZCL6hRnXfttdVYhnblvGKIix2WsfZEDXtjVcyOc5MCe83cGLEVFgd4R0vZEqq7E4M4jgZyTaQlqBXCgscxUGwVQ=="
&verify = &AsymmetricSigner.DoVerify(&certificate, &plainText, &signature)
このメソッドは
GeneXus 18 Upgrade 4 以降で利用可能です。
AsymmetricSigner.DoVerifyWithPublicKey(publicKey, plainText, signature, hashAlgorithm)
- publicKey の入力: PublicKeytype、事前にロードされた公開鍵
- plainText の入力: VarChar(9999)。CryptographyEncodingUtil が使用されない限り、既定で UTF-8 が使用されます。
- signature の入力: VarChar(9999)、Base64 でエンコード
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- 戻り値: ブール値。公開鍵のデータとハッシュアルゴリズムで signature が plainText に対して有効な場合は true。
例:
&publicKey.Load("C:\\certificates\\pubkey.pem")
&plainText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquet ultrices dolor a consectetur."
&hash = HashAlgorithm.SHA256
&signature = "Il3rfo20i3kqdTcrg/O0nhYAtb6y+l7fKKEzP1gvKNhnCNKwZajCEiBarg21E7nVXjvXeB4E7QSXCLD8kEUNlsfkuAkvnbf52+zcRb5HxaN+jWargDlVw2v1zzxYxQ8VdjVNdBioI6oHWzurcfRfn9D8Kfuy9mUWwGlZkHgpAj6RGdr95B67Fn5XnAjN1iEW9LPuRHi4rN2VqJ8GQT3mQ9y76kuv4mKfabzq/8ar+zxqXKa2B+0znVjTK7gbWtUZCL6hRnXfttdVYhnblvGKIix2WsfZEDXtjVcyOc5MCe83cGLEVFgd4R0vZEqq7E4M4jgZyTaQlqBXCgscxUGwVQ=="
&verify = &AsymmetricSigner.DoVerifyWithPublicKey(&publicKey, &plainText, &signature, &hash)
このメソッドは
GeneXus 17 Upgrade 6 以降で利用可能です。
AsymmetricSigner.DoSignFile(privateKey, hashAlgorithm, path)
- privateKey の入力: PrivateKey タイプ、事前ロードされた秘密鍵
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- path の入力: VarChar(9999)。署名するファイルのパス
- 戻り値: VarChar(9999)、Base64 でエンコード
指定された証明書の鍵およびハッシュアルゴリズムでファイルに署名します。
例:
&key.Load("C:\\certificates\\key.pem")
&hash = HashAlgorithm.SHA256
&path= "C:\\Temp\\file.txt"
&signature = &AsymmetricSigner.DoSign(&key, &hash, &path)
このメソッドは
GeneXus 17 Upgrade 6 以降で利用可能です。
AsymmetricSigner.DoVerifyFile(certificate, path, signature)
- certificate の入力: Certificate タイプ、事前ロードされた公開鍵
- path の入力: VarChar(9999)。検証するファイルのパス
- signature の入力: VarChar(9999)、Base64 でエンコード
- 戻り値: ブール値。証明書のデータを使用して、署名がファイルに対して有効な場合は true です。
例:
&certificate.Load("C:\\certificates\\certificate.cer")
&path= "C:\\Temp\\file.txt"
&signature = "Il3rfo20i3kqdTcrg/O0nhYAtb6y+l7fKKEzP1gvKNhnCNKwZajCEiBarg21E7nVXjvXeB4E7QSXCLD8kEUNlsfkuAkvnbf52+zcRb5HxaN+jWargDlVw2v1zzxYxQ8VdjVNdBioI6oHWzurcfRfn9D8Kfuy9mUWwGlZkHgpAj6RGdr95B67Fn5XnAjN1iEW9LPuRHi4rN2VqJ8GQT3mQ9y76kuv4mKfabzq/8ar+zxqXKa2B+0znVjTK7gbWtUZCL6hRnXfttdVYhnblvGKIix2WsfZEDXtjVcyOc5MCe83cGLEVFgd4R0vZEqq7E4M4jgZyTaQlqBXCgscxUGwVQ=="
&verify = &AsymmetricSigner.DoVerifyFile(&certificate, &path, &signature)
このメソッドは
GeneXus 18 Upgrade 4 以降で利用可能です。
AsymmetricSigner.DoVerifyFileWithPublicKey(publicKey, path, signature, hashAlgorithm)
- certificate の入力: Certificate タイプ、事前ロードされた公開鍵
- path の入力: VarChar(9999)。検証するファイルのパス
- signature の入力: VarChar(9999)、Base64 でエンコード
- hashAlgorithm の入力: HashAlgorithm ドメインの値
- 戻り値: ブール値。公開鍵のデータとハッシュアルゴリズムを使用して、署名がファイルに対して有効な場合は true です。
例:
&publicKey.Load("C:\\certificates\\pubkey.pem")
&path= "C:\\Temp\\file.txt"
&hash = HashAlgorithm.SHA256
&signature = "Il3rfo20i3kqdTcrg/O0nhYAtb6y+l7fKKEzP1gvKNhnCNKwZajCEiBarg21E7nVXjvXeB4E7QSXCLD8kEUNlsfkuAkvnbf52+zcRb5HxaN+jWargDlVw2v1zzxYxQ8VdjVNdBioI6oHWzurcfRfn9D8Kfuy9mUWwGlZkHgpAj6RGdr95B67Fn5XnAjN1iEW9LPuRHi4rN2VqJ8GQT3mQ9y76kuv4mKfabzq/8ar+zxqXKa2B+0znVjTK7gbWtUZCL6hRnXfttdVYhnblvGKIix2WsfZEDXtjVcyOc5MCe83cGLEVFgd4R0vZEqq7E4M4jgZyTaQlqBXCgscxUGwVQ=="
&verify = &AsymmetricSigner.DoVerifyFileWithPublicKey(&publicKey, &path, &signature, &hash)
ファイルのパスを割り当てる場合は、パスのトラバースや改ざんによる脆弱性リスクを避けるため、ユーザーの入力 (エントリー) を連結したりサニタイズしたりしないでください。