2016-04-07 30 views
1

このPHP関数へのColdFusion alternaitiveあり:openssl_verifyphp関数openssl_verify()の代わりにColdfusionがありますか?

openssl_verify()署名がpub_key_idに関連付けられた公開鍵を用いて 指定されたデータのために正しいことを検証します。この は、 署名に使用される秘密鍵に対応する公開鍵である必要があります。

私は見てきましたが、何もないようです。事前情報ありがとうございます。

+0

ネイティブCF機能はありませんが、誰かがhttp://cflib.org/にudfを提出している可能性があります。 –

+0

フィードバックに感謝します、私はそれをチェックアウトします。 –

答えて

2

AFAIKの組み込み関数はありません。しかし、javaはsignature verificationをサポートしています。これは、Javaコードの一部で対応できます。

  1. 検証するデータをバイナリに変換します。正確な手順あなたが確認しているかに依存しますが、それは物理的なファイルであると言う:バイナリに署名値をデコードし

    dataBytes = fileReadBinary("c:\path\someFile.zip"); 
    
  2. 。ここでも、「方法」は署名形式に依存します。それはbase64でエンコードされた文字列である場合:

    signatureBytes = binaryDecode(base64SignatureString, "base64"); 
    
  3. キーストア(またはファイルから)から証明書をロードし、公開鍵を抽出します。

    // Example: "C:\ColdFusion\jre\lib\security\cacerts" 
    fis = createObject("java", "java.io.FileInputStream").init(pathToKeyStore); 
    keyStore = createObject("java", "java.security.KeyStore").getInstance("JKS"); 
    // Default keystore password is "changeit" (do not keep the default. change it) 
    keyStore.load(fis, keyStorePassword.toCharArray()); 
    publicKey = keyStore.getCertificate("yourCertAlias").getPublicKey(); 
    
  4. 検証を実行するためにSignatureオブジェクトを作成します。 。

    sign = createObject("java", "java.security.Signature").getInstance("SHA1withRSA"); 
    sign.initVerify(publicKey); 
    sign.update(dataBytes); 
    
  5. 最後に、署名に供給し、そのステータスを確認:

    isVerified = sign.verify(signatureBytes); 
    writeDump(isVerified); 
    

適切なアルゴリズム(すなわちSHA1withRSA、等々)、公開鍵及び検証するためのデータでそれを初期化します詳細については、Lesson: Generating and Verifying SignaturesおよびWeaknesses and Alternativesを参照してください。

関連する問題