|
@@ -472,8 +472,9 @@ OUTPUT(decryptedStr);</programlisting>
|
|
|
</informaltable>
|
|
|
|
|
|
<para>A função Decrypt descriptografa o <emphasis>encryptedData</emphasis>
|
|
|
- fornecido usando as opções definidas no módulo Symmetric
|
|
|
- Encryption.</para>
|
|
|
+ fornecido usando as opções definidas no módulo Symmetric Encryption. Você
|
|
|
+ só pode descriptografar dados que foram criptografados pelo método de
|
|
|
+ Criptografia da Biblioteca Padrão.</para>
|
|
|
|
|
|
<para>Exemplo:</para>
|
|
|
|
|
@@ -666,7 +667,9 @@ OUTPUT( (STRING)myPKEModule.Decrypt(encrypted) );
|
|
|
|
|
|
<para>A função Decrypt descriptografa o <emphasis>encryptedData</emphasis>
|
|
|
fornecidos, usando as opções especificadas na definição do módulo Public
|
|
|
- Key Encryption.</para>
|
|
|
+ Key Encryption. Você só pode descriptografar dados que foram
|
|
|
+ criptografados pelo método de Criptografia da Biblioteca
|
|
|
+ Padrão.</para>
|
|
|
|
|
|
<para>Exemplo:</para>
|
|
|
|
|
@@ -1044,7 +1047,9 @@ OUTPUT( (STRING)MyPKEModule.Decrypt(encrypted));</programlisting>
|
|
|
|
|
|
<para>A função Decrypt descriptografa o <emphasis>encryptedData</emphasis>
|
|
|
fornecidos, usando as opções especificadas na definição do módulo Public
|
|
|
- Key Encryption From Buffer.</para>
|
|
|
+ Key Encryption From Buffer. Você só pode descriptografar dados que foram
|
|
|
+ criptografados pelo método de Criptografia da Biblioteca
|
|
|
+ Padrão.</para>
|
|
|
|
|
|
<para>Exemplo:</para>
|
|
|
|
|
@@ -1282,4 +1287,589 @@ myPKEModule := STD.Crypto.PublicKeyEncryptionFromBuffer('RSA', publicKey, privat
|
|
|
DATA signature := myPKEModule.Sign((DATA)'The quick brown fox jumps');
|
|
|
OUTPUT(TRUE = myPKEModule.VerifySignature(signature, (DATA)'The quick brown fox jumps'));</programlisting>
|
|
|
</sect1>
|
|
|
+
|
|
|
+ <sect1 id="PublicKeyEncryptionFromLFNModule">
|
|
|
+ <title>PublicKeyEncryptionFromLFN Module</title>
|
|
|
+
|
|
|
+ <para><emphasis>myPKEModule</emphasis> :=<emphasis role="bold">
|
|
|
+ STD.Crypto.PublicKeyEncryptionFromLFN(</emphasis><emphasis>pkAlgorithm,
|
|
|
+ publicKeyFile, privateKeyFile, passphrase)<indexterm>
|
|
|
+ <primary>PublicKeyEncryption</primary>
|
|
|
+ </indexterm>;</emphasis></para>
|
|
|
+
|
|
|
+ <informaltable colsep="1" frame="all" rowsep="1">
|
|
|
+ <tgroup cols="2">
|
|
|
+ <colspec colwidth="120.50pt"/>
|
|
|
+
|
|
|
+ <colspec/>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>myPKEModule</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>O nome da estrutura do módulo Public Key Encryption From
|
|
|
+ LFN (Logical FileName)</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>pkAlgorithm</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>O algoritmo a ser usado, retornado por <link
|
|
|
+ linkend="SupportedPublicKeyAlgorithms">SupportedPublicKeyAlgorithms()</link></entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>publicKeyLFN</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>Arquivo lógico de chave pública formatado PEM</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>privateKeyLFN</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>Arquivo lógico de chave pública formatado PEM</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>passphrase</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>A senha usada para criptografia, descriptografia,
|
|
|
+ assinatura, verificação.</entry>
|
|
|
+ </row>
|
|
|
+ </tbody>
|
|
|
+ </tgroup>
|
|
|
+ </informaltable>
|
|
|
+
|
|
|
+ <para>Uma Public Key Encryption From LFN é definida na ECL. As definições
|
|
|
+ de funções subsequentes usam as opções definidas no módulo Public Key
|
|
|
+ Encryption from LFN para executar a verificação assimétrica de
|
|
|
+ criptografia/descriptografia/assinatura digital/assinatura.</para>
|
|
|
+
|
|
|
+ <para>Exemplo:</para>
|
|
|
+
|
|
|
+ <programlisting format="linespecific">IMPORT Std;
|
|
|
+
|
|
|
+PublicKeyFile := '~Examples::certificates::public::pubkey.pem';
|
|
|
+PrivateKeyFile:= '~Examples::certificates::private::privkey.pem';
|
|
|
+ //You can restrict access using file scope security
|
|
|
+ //on the ~Examples::certificates::private scope
|
|
|
+
|
|
|
+pubKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+
|
|
|
+dPubKey := DATASET([{
|
|
|
+'-----BEGIN PUBLIC KEY-----' + '\n' +
|
|
|
+'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr64RncTp5pV0KMnWRAof' + '\n' +
|
|
|
+'od+3AUS/IDngT39j3Iovv9aI2N8g4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeE' + '\n' +
|
|
|
+'BHqlMDydw9aHOQG17CB30GYsw3Lf8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoy' + '\n' +
|
|
|
+'hIR9MexCldF+3WM/X0IX0ApSs7kuVPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv' + '\n' +
|
|
|
+'/oKj6q7kInEIvhLiGfcm3bpTzWQ66zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3' + '\n' +
|
|
|
+'J6Tk4NY3NySWzE/2/ZOWxZdR79XC+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0' + '\n' +
|
|
|
+'bwIDAQAB' + '\n' +
|
|
|
+'-----END PUBLIC KEY-----' + '\n'
|
|
|
+}],pubKey);
|
|
|
+
|
|
|
+OUTPUT(dPubKey,,PublicKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+PrivKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+dPrivKey := DATASET([{
|
|
|
+'-----BEGIN RSA PRIVATE KEY-----' + '\n' +
|
|
|
+'MIIEowIBAAKCAQEAr64RncTp5pV0KMnWRAofod+3AUS/IDngT39j3Iovv9aI2N8g' + '\n' +
|
|
|
+'4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeEBHqlMDydw9aHOQG17CB30GYsw3Lf' + '\n' +
|
|
|
+'8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoyhIR9MexCldF+3WM/X0IX0ApSs7ku' + '\n' +
|
|
|
+'VPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv/oKj6q7kInEIvhLiGfcm3bpTzWQ6' + '\n' +
|
|
|
+'6zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3J6Tk4NY3NySWzE/2/ZOWxZdR79XC' + '\n' +
|
|
|
+'+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0bwIDAQABAoIBAQCnGAtNYkOOu8wW' + '\n' +
|
|
|
+'F5Oid3aKwnwPytF211WQh3v2AcFU17qle+SMRi+ykBL6+u5RU5qH+HSc9Jm31AjW' + '\n' +
|
|
|
+'V1yPrdYVZInFjYIJCPzorcXY5zDOmMAuzg5PBVV7VhUA0a5GZck6FC8AilDUcEom' + '\n' +
|
|
|
+'GCK6Ul8mR9XELBFQ6keeTo2yDu0TQ4oBXrPBMN61uMHCxh2tDb2yvl8Zz+EllADG' + '\n' +
|
|
|
+'70pztRWNOrCzrC+ARlmmDfYOUgVFtZin53jq6O6ullPLzhkm3/+QFRGYWsFgQB6J' + '\n' +
|
|
|
+'Z9HJtW5YB47RT5RbLHKXeMc6IJW+d+5HrzgTdK79P7wAZk8JCIDyHe2AaNAUzc/G' + '\n' +
|
|
|
+'sB0cNeURAoGBAOKtaVFa6z2F4Q+koMBXCt4m7dCJnaC+qthF249uEOIBeF3ds9Fq' + '\n' +
|
|
|
+'f0jhhvuV0OcN8lYbR/ZlYRJDUs6mHh/2BYSkdeaLKojXTxKR2bA4xQk5dtJCdoPf' + '\n' +
|
|
|
+'0c15AlTgOYk2oNXP/azDICJYT/cdvIdUL9P4IoZthu1FjwG266GacEnNAoGBAMZn' + '\n' +
|
|
|
+'1wRUXS1dbqemoc+g48wj5r3/qsIG8PsZ2Y8W+oYW7diNA5o6acc8YPEWE2RbJDbX' + '\n' +
|
|
|
+'YEADBnRSdzzOdo0JEj4VbNZEtx6nQhBOOrtYKnnqHVI/XOz3VVu6kedUKdBR87KC' + '\n' +
|
|
|
+'eCzO1VcEeZtsTHuLO4t7NmdHGqNxTV+jLvzBoQsrAoGAI+fOD+nz6znirYSpRe5D' + '\n' +
|
|
|
+'tW67KtYxlr28+CcQoUaQ/Au5kjzE9/4DjXrT09QmVAMciNEnc/sZBjiNzFf525wv' + '\n' +
|
|
|
+'wZP/bPZMVYKtbsaVkdlcNJranHGUrkzswbxSRzmBQ5/YmCWrDAuYcnhEqmMWcuU9' + '\n' +
|
|
|
+'8jiS13JP9hOXlHDyIBYDhV0CgYBV6TznuQgnzp9NpQ/H8ijxilItz3lHTu4mLMlR' + '\n' +
|
|
|
+'9mdAjMkszdLTg5uuE+z+N8rp17VUseoRjb3LvLG4+MXIyDbH/0sDdPm+IjqvCNDR' + '\n' +
|
|
|
+'spmh9MgBh0JbsbWaZK0s9/qrI/FcSLZ04JLsfRmTPU/Y5y8/dHjYO6fDQhp44RZF' + '\n' +
|
|
|
+'iCqNxQKBgHf7KZIOKgV4YNyphk1UYWHNz8YY5o7WtaQ51Q+kIbU8PRd9rqJLZyk2' + '\n' +
|
|
|
+'tKf8e6z+wtKjxi8GKQzE/IdkQqiFmB1yEjjRHQ81WS+K5NnjN1t0IEscJqOAwv9s' + '\n' +
|
|
|
+'iIhG5ueb6xoj/N0LuXa8loUT5aChKWxRHEYdegqU48f+qxUcJj9R' + '\n' +
|
|
|
+'-----END RSA PRIVATE KEY-----' + '\n'
|
|
|
+}],PrivKey);
|
|
|
+
|
|
|
+OUTPUT(dPrivKey,,PrivateKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+//PKE Encryption module definition
|
|
|
+MyPKEModule := STD.Crypto.PublicKeyEncryptionFromLFN('RSA', PublicKeyFile, PrivateKeyFile, '');
|
|
|
+
|
|
|
+DATA encrypted := MyPKEModule.Encrypt((DATA)'The quick brown fox jumps over the lazy dog');
|
|
|
+OUTPUT( (STRING)MyPKEModule.Decrypt(encrypted));
|
|
|
+</programlisting>
|
|
|
+
|
|
|
+ <para/>
|
|
|
+ </sect1>
|
|
|
+
|
|
|
+ <sect1 id="EncryptPublicKeyEncryptionFromLFN">
|
|
|
+ <title>Encrypt (PKE From LFN)</title>
|
|
|
+
|
|
|
+ <para><emphasis>myPKEModule</emphasis><emphasis
|
|
|
+ role="bold">.Encrypt(</emphasis><emphasis>inputData</emphasis><emphasis
|
|
|
+ role="bold">)<indexterm>
|
|
|
+ <primary>Encrypt</primary>
|
|
|
+ </indexterm>;</emphasis></para>
|
|
|
+
|
|
|
+ <para><informaltable colsep="1" frame="all" rowsep="1">
|
|
|
+ <tgroup cols="2">
|
|
|
+ <colspec colwidth="120.50pt"/>
|
|
|
+
|
|
|
+ <colspec/>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>myPKEModule</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>O nome da estrutura do módulo Public Key Encryption From
|
|
|
+ LFN (Logical FileName)</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>inputData</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>Os dados para criptografar no formato DATA</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry>Return:<emphasis/></entry>
|
|
|
+
|
|
|
+ <entry>Conteúdo criptografado no formato DATA</entry>
|
|
|
+ </row>
|
|
|
+ </tbody>
|
|
|
+ </tgroup>
|
|
|
+ </informaltable></para>
|
|
|
+
|
|
|
+ <para>A função Encrypt criptografa o <emphasis>inputData</emphasis>
|
|
|
+ fornecido, usando as opções especificadas na definição do módulo Public
|
|
|
+ Key Encryption From LFN.</para>
|
|
|
+
|
|
|
+ <para>Exemplo:</para>
|
|
|
+
|
|
|
+ <programlisting format="linespecific">IMPORT Std;
|
|
|
+
|
|
|
+PublicKeyFile := '~Examples::certificates::public::pubkey.pem';
|
|
|
+PrivateKeyFile:= '~Examples::certificates::private::privkey.pem';
|
|
|
+ //You can restrict access using file scope security
|
|
|
+ //on the ~Examples::certificates::private scope
|
|
|
+
|
|
|
+pubKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+
|
|
|
+dPubKey := DATASET([{
|
|
|
+'-----BEGIN PUBLIC KEY-----' + '\n' +
|
|
|
+'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr64RncTp5pV0KMnWRAof' + '\n' +
|
|
|
+'od+3AUS/IDngT39j3Iovv9aI2N8g4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeE' + '\n' +
|
|
|
+'BHqlMDydw9aHOQG17CB30GYsw3Lf8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoy' + '\n' +
|
|
|
+'hIR9MexCldF+3WM/X0IX0ApSs7kuVPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv' + '\n' +
|
|
|
+'/oKj6q7kInEIvhLiGfcm3bpTzWQ66zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3' + '\n' +
|
|
|
+'J6Tk4NY3NySWzE/2/ZOWxZdR79XC+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0' + '\n' +
|
|
|
+'bwIDAQAB' + '\n' +
|
|
|
+'-----END PUBLIC KEY-----' + '\n'
|
|
|
+}],pubKey);
|
|
|
+
|
|
|
+OUTPUT(dPubKey,,PublicKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+PrivKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+dPrivKey := DATASET([{
|
|
|
+'-----BEGIN RSA PRIVATE KEY-----' + '\n' +
|
|
|
+'MIIEowIBAAKCAQEAr64RncTp5pV0KMnWRAofod+3AUS/IDngT39j3Iovv9aI2N8g' + '\n' +
|
|
|
+'4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeEBHqlMDydw9aHOQG17CB30GYsw3Lf' + '\n' +
|
|
|
+'8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoyhIR9MexCldF+3WM/X0IX0ApSs7ku' + '\n' +
|
|
|
+'VPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv/oKj6q7kInEIvhLiGfcm3bpTzWQ6' + '\n' +
|
|
|
+'6zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3J6Tk4NY3NySWzE/2/ZOWxZdR79XC' + '\n' +
|
|
|
+'+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0bwIDAQABAoIBAQCnGAtNYkOOu8wW' + '\n' +
|
|
|
+'F5Oid3aKwnwPytF211WQh3v2AcFU17qle+SMRi+ykBL6+u5RU5qH+HSc9Jm31AjW' + '\n' +
|
|
|
+'V1yPrdYVZInFjYIJCPzorcXY5zDOmMAuzg5PBVV7VhUA0a5GZck6FC8AilDUcEom' + '\n' +
|
|
|
+'GCK6Ul8mR9XELBFQ6keeTo2yDu0TQ4oBXrPBMN61uMHCxh2tDb2yvl8Zz+EllADG' + '\n' +
|
|
|
+'70pztRWNOrCzrC+ARlmmDfYOUgVFtZin53jq6O6ullPLzhkm3/+QFRGYWsFgQB6J' + '\n' +
|
|
|
+'Z9HJtW5YB47RT5RbLHKXeMc6IJW+d+5HrzgTdK79P7wAZk8JCIDyHe2AaNAUzc/G' + '\n' +
|
|
|
+'sB0cNeURAoGBAOKtaVFa6z2F4Q+koMBXCt4m7dCJnaC+qthF249uEOIBeF3ds9Fq' + '\n' +
|
|
|
+'f0jhhvuV0OcN8lYbR/ZlYRJDUs6mHh/2BYSkdeaLKojXTxKR2bA4xQk5dtJCdoPf' + '\n' +
|
|
|
+'0c15AlTgOYk2oNXP/azDICJYT/cdvIdUL9P4IoZthu1FjwG266GacEnNAoGBAMZn' + '\n' +
|
|
|
+'1wRUXS1dbqemoc+g48wj5r3/qsIG8PsZ2Y8W+oYW7diNA5o6acc8YPEWE2RbJDbX' + '\n' +
|
|
|
+'YEADBnRSdzzOdo0JEj4VbNZEtx6nQhBOOrtYKnnqHVI/XOz3VVu6kedUKdBR87KC' + '\n' +
|
|
|
+'eCzO1VcEeZtsTHuLO4t7NmdHGqNxTV+jLvzBoQsrAoGAI+fOD+nz6znirYSpRe5D' + '\n' +
|
|
|
+'tW67KtYxlr28+CcQoUaQ/Au5kjzE9/4DjXrT09QmVAMciNEnc/sZBjiNzFf525wv' + '\n' +
|
|
|
+'wZP/bPZMVYKtbsaVkdlcNJranHGUrkzswbxSRzmBQ5/YmCWrDAuYcnhEqmMWcuU9' + '\n' +
|
|
|
+'8jiS13JP9hOXlHDyIBYDhV0CgYBV6TznuQgnzp9NpQ/H8ijxilItz3lHTu4mLMlR' + '\n' +
|
|
|
+'9mdAjMkszdLTg5uuE+z+N8rp17VUseoRjb3LvLG4+MXIyDbH/0sDdPm+IjqvCNDR' + '\n' +
|
|
|
+'spmh9MgBh0JbsbWaZK0s9/qrI/FcSLZ04JLsfRmTPU/Y5y8/dHjYO6fDQhp44RZF' + '\n' +
|
|
|
+'iCqNxQKBgHf7KZIOKgV4YNyphk1UYWHNz8YY5o7WtaQ51Q+kIbU8PRd9rqJLZyk2' + '\n' +
|
|
|
+'tKf8e6z+wtKjxi8GKQzE/IdkQqiFmB1yEjjRHQ81WS+K5NnjN1t0IEscJqOAwv9s' + '\n' +
|
|
|
+'iIhG5ueb6xoj/N0LuXa8loUT5aChKWxRHEYdegqU48f+qxUcJj9R' + '\n' +
|
|
|
+'-----END RSA PRIVATE KEY-----' + '\n'
|
|
|
+}],PrivKey);
|
|
|
+
|
|
|
+OUTPUT(dPrivKey,,PrivateKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+//PKE Encryption module definition
|
|
|
+MyPKEModule := STD.Crypto.PublicKeyEncryptionFromLFN('RSA', PublicKeyFile, PrivateKeyFile, '');
|
|
|
+
|
|
|
+DATA encrypted := MyPKEModule.Encrypt((DATA)'The quick brown fox jumps over the lazy dog');
|
|
|
+OUTPUT( (STRING)MyPKEModule.Decrypt(encrypted));
|
|
|
+</programlisting>
|
|
|
+
|
|
|
+ <para/>
|
|
|
+ </sect1>
|
|
|
+
|
|
|
+ <sect1 id="DecryptPublicKeyEncryptionFromLFN">
|
|
|
+ <title>Decrypt (PKE From LFN)</title>
|
|
|
+
|
|
|
+ <para><emphasis>myPKEModule</emphasis><emphasis
|
|
|
+ role="bold">.Decrypt(</emphasis><emphasis>encryptedData</emphasis><emphasis
|
|
|
+ role="bold">)<indexterm>
|
|
|
+ <primary>Decrypt</primary>
|
|
|
+ </indexterm>;</emphasis></para>
|
|
|
+
|
|
|
+ <informaltable colsep="1" frame="all" rowsep="1">
|
|
|
+ <tgroup cols="2">
|
|
|
+ <colspec colwidth="120.50pt"/>
|
|
|
+
|
|
|
+ <colspec/>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>myPKEModule</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>O nome da estrutura do módulo Public Key Encryption From
|
|
|
+ LFN (Logical FileName)</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>encryptedData</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>Os dados para descriptografar no formato DATA</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry>Return:<emphasis/></entry>
|
|
|
+
|
|
|
+ <entry>Conteúdo descriptografado no formato DATA</entry>
|
|
|
+ </row>
|
|
|
+ </tbody>
|
|
|
+ </tgroup>
|
|
|
+ </informaltable>
|
|
|
+
|
|
|
+ <para>A função Decrypt descriptografa o <emphasis>encryptedData</emphasis>
|
|
|
+ fornecidos, usando as opções especificadas na definição do módulo Public
|
|
|
+ Key Encryption From LFN. Você só pode descriptografar dados que foram
|
|
|
+ criptografados pelo método Criptografar da Biblioteca Padrão.</para>
|
|
|
+
|
|
|
+ <para>Exemplo:</para>
|
|
|
+
|
|
|
+ <programlisting format="linespecific">IMPORT Std;
|
|
|
+
|
|
|
+PublicKeyFile := '~Examples::certificates::public::pubkey.pem';
|
|
|
+PrivateKeyFile:= '~Examples::certificates::private::privkey.pem';
|
|
|
+ //You can restrict access using file scope security
|
|
|
+ //on the ~Examples::certificates::private scope
|
|
|
+
|
|
|
+pubKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+
|
|
|
+dPubKey := DATASET([{
|
|
|
+'-----BEGIN PUBLIC KEY-----' + '\n' +
|
|
|
+'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr64RncTp5pV0KMnWRAof' + '\n' +
|
|
|
+'od+3AUS/IDngT39j3Iovv9aI2N8g4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeE' + '\n' +
|
|
|
+'BHqlMDydw9aHOQG17CB30GYsw3Lf8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoy' + '\n' +
|
|
|
+'hIR9MexCldF+3WM/X0IX0ApSs7kuVPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv' + '\n' +
|
|
|
+'/oKj6q7kInEIvhLiGfcm3bpTzWQ66zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3' + '\n' +
|
|
|
+'J6Tk4NY3NySWzE/2/ZOWxZdR79XC+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0' + '\n' +
|
|
|
+'bwIDAQAB' + '\n' +
|
|
|
+'-----END PUBLIC KEY-----' + '\n'
|
|
|
+}],pubKey);
|
|
|
+
|
|
|
+OUTPUT(dPubKey,,PublicKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+PrivKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+dPrivKey := DATASET([{
|
|
|
+'-----BEGIN RSA PRIVATE KEY-----' + '\n' +
|
|
|
+'MIIEowIBAAKCAQEAr64RncTp5pV0KMnWRAofod+3AUS/IDngT39j3Iovv9aI2N8g' + '\n' +
|
|
|
+'4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeEBHqlMDydw9aHOQG17CB30GYsw3Lf' + '\n' +
|
|
|
+'8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoyhIR9MexCldF+3WM/X0IX0ApSs7ku' + '\n' +
|
|
|
+'VPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv/oKj6q7kInEIvhLiGfcm3bpTzWQ6' + '\n' +
|
|
|
+'6zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3J6Tk4NY3NySWzE/2/ZOWxZdR79XC' + '\n' +
|
|
|
+'+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0bwIDAQABAoIBAQCnGAtNYkOOu8wW' + '\n' +
|
|
|
+'F5Oid3aKwnwPytF211WQh3v2AcFU17qle+SMRi+ykBL6+u5RU5qH+HSc9Jm31AjW' + '\n' +
|
|
|
+'V1yPrdYVZInFjYIJCPzorcXY5zDOmMAuzg5PBVV7VhUA0a5GZck6FC8AilDUcEom' + '\n' +
|
|
|
+'GCK6Ul8mR9XELBFQ6keeTo2yDu0TQ4oBXrPBMN61uMHCxh2tDb2yvl8Zz+EllADG' + '\n' +
|
|
|
+'70pztRWNOrCzrC+ARlmmDfYOUgVFtZin53jq6O6ullPLzhkm3/+QFRGYWsFgQB6J' + '\n' +
|
|
|
+'Z9HJtW5YB47RT5RbLHKXeMc6IJW+d+5HrzgTdK79P7wAZk8JCIDyHe2AaNAUzc/G' + '\n' +
|
|
|
+'sB0cNeURAoGBAOKtaVFa6z2F4Q+koMBXCt4m7dCJnaC+qthF249uEOIBeF3ds9Fq' + '\n' +
|
|
|
+'f0jhhvuV0OcN8lYbR/ZlYRJDUs6mHh/2BYSkdeaLKojXTxKR2bA4xQk5dtJCdoPf' + '\n' +
|
|
|
+'0c15AlTgOYk2oNXP/azDICJYT/cdvIdUL9P4IoZthu1FjwG266GacEnNAoGBAMZn' + '\n' +
|
|
|
+'1wRUXS1dbqemoc+g48wj5r3/qsIG8PsZ2Y8W+oYW7diNA5o6acc8YPEWE2RbJDbX' + '\n' +
|
|
|
+'YEADBnRSdzzOdo0JEj4VbNZEtx6nQhBOOrtYKnnqHVI/XOz3VVu6kedUKdBR87KC' + '\n' +
|
|
|
+'eCzO1VcEeZtsTHuLO4t7NmdHGqNxTV+jLvzBoQsrAoGAI+fOD+nz6znirYSpRe5D' + '\n' +
|
|
|
+'tW67KtYxlr28+CcQoUaQ/Au5kjzE9/4DjXrT09QmVAMciNEnc/sZBjiNzFf525wv' + '\n' +
|
|
|
+'wZP/bPZMVYKtbsaVkdlcNJranHGUrkzswbxSRzmBQ5/YmCWrDAuYcnhEqmMWcuU9' + '\n' +
|
|
|
+'8jiS13JP9hOXlHDyIBYDhV0CgYBV6TznuQgnzp9NpQ/H8ijxilItz3lHTu4mLMlR' + '\n' +
|
|
|
+'9mdAjMkszdLTg5uuE+z+N8rp17VUseoRjb3LvLG4+MXIyDbH/0sDdPm+IjqvCNDR' + '\n' +
|
|
|
+'spmh9MgBh0JbsbWaZK0s9/qrI/FcSLZ04JLsfRmTPU/Y5y8/dHjYO6fDQhp44RZF' + '\n' +
|
|
|
+'iCqNxQKBgHf7KZIOKgV4YNyphk1UYWHNz8YY5o7WtaQ51Q+kIbU8PRd9rqJLZyk2' + '\n' +
|
|
|
+'tKf8e6z+wtKjxi8GKQzE/IdkQqiFmB1yEjjRHQ81WS+K5NnjN1t0IEscJqOAwv9s' + '\n' +
|
|
|
+'iIhG5ueb6xoj/N0LuXa8loUT5aChKWxRHEYdegqU48f+qxUcJj9R' + '\n' +
|
|
|
+'-----END RSA PRIVATE KEY-----' + '\n'
|
|
|
+}],PrivKey);
|
|
|
+
|
|
|
+OUTPUT(dPrivKey,,PrivateKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+//PKE Encryption module definition
|
|
|
+MyPKEModule := STD.Crypto.PublicKeyEncryptionFromLFN('RSA', PublicKeyFile, PrivateKeyFile, '');
|
|
|
+
|
|
|
+DATA encrypted := MyPKEModule.Encrypt((DATA)'The quick brown fox jumps over the lazy dog');
|
|
|
+OUTPUT( (STRING)MyPKEModule.Decrypt(encrypted));
|
|
|
+</programlisting>
|
|
|
+ </sect1>
|
|
|
+
|
|
|
+ <sect1 id="SignPublicKeyEncryptionFromLFN">
|
|
|
+ <title>Sign (PKE From LFN)</title>
|
|
|
+
|
|
|
+ <para><emphasis>mySymEncModule</emphasis><emphasis
|
|
|
+ role="bold">.Sign(</emphasis><emphasis>encryptedData</emphasis><emphasis
|
|
|
+ role="bold">)<indexterm>
|
|
|
+ <primary>Sign</primary>
|
|
|
+ </indexterm>;</emphasis></para>
|
|
|
+
|
|
|
+ <informaltable colsep="1" frame="all" rowsep="1">
|
|
|
+ <tgroup cols="2">
|
|
|
+ <colspec colwidth="120.50pt"/>
|
|
|
+
|
|
|
+ <colspec/>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>myPKEModule</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>O nome da estrutura do módulo Public Key Encryption From
|
|
|
+ LFN (Logical FileName)</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>inputData</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>Os dados para assinar no formato DATA</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry>Return:<emphasis/></entry>
|
|
|
+
|
|
|
+ <entry>Assinatura digital computada no formato DATA</entry>
|
|
|
+ </row>
|
|
|
+ </tbody>
|
|
|
+ </tgroup>
|
|
|
+ </informaltable>
|
|
|
+
|
|
|
+ <para>A função Sign cria uma assinatura digital do
|
|
|
+ <emphasis>inputData</emphasis> fornecido, usando as opções especificadas
|
|
|
+ na definição do módulo Public Key Encryption From LFN.</para>
|
|
|
+
|
|
|
+ <para>Exemplo:</para>
|
|
|
+
|
|
|
+ <programlisting format="linespecific">IMPORT Std;
|
|
|
+
|
|
|
+PublicKeyFile := '~Examples::certificates::public::pubkey.pem';
|
|
|
+PrivateKeyFile:= '~Examples::certificates::private::privkey.pem';
|
|
|
+ //You can restrict access using file scope security
|
|
|
+ //on the ~Examples::certificates::private scope
|
|
|
+
|
|
|
+pubKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+
|
|
|
+dPubKey := DATASET([{
|
|
|
+'-----BEGIN PUBLIC KEY-----' + '\n' +
|
|
|
+'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr64RncTp5pV0KMnWRAof' + '\n' +
|
|
|
+'od+3AUS/IDngT39j3Iovv9aI2N8g4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeE' + '\n' +
|
|
|
+'BHqlMDydw9aHOQG17CB30GYsw3Lf8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoy' + '\n' +
|
|
|
+'hIR9MexCldF+3WM/X0IX0ApSs7kuVPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv' + '\n' +
|
|
|
+'/oKj6q7kInEIvhLiGfcm3bpTzWQ66zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3' + '\n' +
|
|
|
+'J6Tk4NY3NySWzE/2/ZOWxZdR79XC+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0' + '\n' +
|
|
|
+'bwIDAQAB' + '\n' +
|
|
|
+'-----END PUBLIC KEY-----' + '\n'
|
|
|
+}],pubKey);
|
|
|
+
|
|
|
+OUTPUT(dPubKey,,PublicKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+PrivKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+dPrivKey := DATASET([{
|
|
|
+'-----BEGIN RSA PRIVATE KEY-----' + '\n' +
|
|
|
+'MIIEowIBAAKCAQEAr64RncTp5pV0KMnWRAofod+3AUS/IDngT39j3Iovv9aI2N8g' + '\n' +
|
|
|
+'4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeEBHqlMDydw9aHOQG17CB30GYsw3Lf' + '\n' +
|
|
|
+'8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoyhIR9MexCldF+3WM/X0IX0ApSs7ku' + '\n' +
|
|
|
+'VPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv/oKj6q7kInEIvhLiGfcm3bpTzWQ6' + '\n' +
|
|
|
+'6zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3J6Tk4NY3NySWzE/2/ZOWxZdR79XC' + '\n' +
|
|
|
+'+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0bwIDAQABAoIBAQCnGAtNYkOOu8wW' + '\n' +
|
|
|
+'F5Oid3aKwnwPytF211WQh3v2AcFU17qle+SMRi+ykBL6+u5RU5qH+HSc9Jm31AjW' + '\n' +
|
|
|
+'V1yPrdYVZInFjYIJCPzorcXY5zDOmMAuzg5PBVV7VhUA0a5GZck6FC8AilDUcEom' + '\n' +
|
|
|
+'GCK6Ul8mR9XELBFQ6keeTo2yDu0TQ4oBXrPBMN61uMHCxh2tDb2yvl8Zz+EllADG' + '\n' +
|
|
|
+'70pztRWNOrCzrC+ARlmmDfYOUgVFtZin53jq6O6ullPLzhkm3/+QFRGYWsFgQB6J' + '\n' +
|
|
|
+'Z9HJtW5YB47RT5RbLHKXeMc6IJW+d+5HrzgTdK79P7wAZk8JCIDyHe2AaNAUzc/G' + '\n' +
|
|
|
+'sB0cNeURAoGBAOKtaVFa6z2F4Q+koMBXCt4m7dCJnaC+qthF249uEOIBeF3ds9Fq' + '\n' +
|
|
|
+'f0jhhvuV0OcN8lYbR/ZlYRJDUs6mHh/2BYSkdeaLKojXTxKR2bA4xQk5dtJCdoPf' + '\n' +
|
|
|
+'0c15AlTgOYk2oNXP/azDICJYT/cdvIdUL9P4IoZthu1FjwG266GacEnNAoGBAMZn' + '\n' +
|
|
|
+'1wRUXS1dbqemoc+g48wj5r3/qsIG8PsZ2Y8W+oYW7diNA5o6acc8YPEWE2RbJDbX' + '\n' +
|
|
|
+'YEADBnRSdzzOdo0JEj4VbNZEtx6nQhBOOrtYKnnqHVI/XOz3VVu6kedUKdBR87KC' + '\n' +
|
|
|
+'eCzO1VcEeZtsTHuLO4t7NmdHGqNxTV+jLvzBoQsrAoGAI+fOD+nz6znirYSpRe5D' + '\n' +
|
|
|
+'tW67KtYxlr28+CcQoUaQ/Au5kjzE9/4DjXrT09QmVAMciNEnc/sZBjiNzFf525wv' + '\n' +
|
|
|
+'wZP/bPZMVYKtbsaVkdlcNJranHGUrkzswbxSRzmBQ5/YmCWrDAuYcnhEqmMWcuU9' + '\n' +
|
|
|
+'8jiS13JP9hOXlHDyIBYDhV0CgYBV6TznuQgnzp9NpQ/H8ijxilItz3lHTu4mLMlR' + '\n' +
|
|
|
+'9mdAjMkszdLTg5uuE+z+N8rp17VUseoRjb3LvLG4+MXIyDbH/0sDdPm+IjqvCNDR' + '\n' +
|
|
|
+'spmh9MgBh0JbsbWaZK0s9/qrI/FcSLZ04JLsfRmTPU/Y5y8/dHjYO6fDQhp44RZF' + '\n' +
|
|
|
+'iCqNxQKBgHf7KZIOKgV4YNyphk1UYWHNz8YY5o7WtaQ51Q+kIbU8PRd9rqJLZyk2' + '\n' +
|
|
|
+'tKf8e6z+wtKjxi8GKQzE/IdkQqiFmB1yEjjRHQ81WS+K5NnjN1t0IEscJqOAwv9s' + '\n' +
|
|
|
+'iIhG5ueb6xoj/N0LuXa8loUT5aChKWxRHEYdegqU48f+qxUcJj9R' + '\n' +
|
|
|
+'-----END RSA PRIVATE KEY-----' + '\n'
|
|
|
+}],PrivKey);
|
|
|
+
|
|
|
+OUTPUT(dPrivKey,,PrivateKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+//PKE Encryption module definition
|
|
|
+MyPKEModule := STD.Crypto.PublicKeyEncryptionFromLFN('RSA', PublicKeyFile, PrivateKeyFile, '');
|
|
|
+
|
|
|
+DATA signature := myPKEModule.Sign((DATA)'The quick brown fox jumps');
|
|
|
+OUTPUT(TRUE = myPKEModule.VerifySignature(signature, (DATA)'The quick brown fox jumps'));</programlisting>
|
|
|
+ </sect1>
|
|
|
+
|
|
|
+ <sect1 id="VerifySignaturePublicKeyEncryptionFromLFN">
|
|
|
+ <title>VerifySignature (PKE From LFN)</title>
|
|
|
+
|
|
|
+ <para><emphasis>myPKEModule</emphasis><emphasis
|
|
|
+ role="bold">.VerifySignature(</emphasis><emphasis>signature,
|
|
|
+ signedData</emphasis><emphasis role="bold">)<indexterm>
|
|
|
+ <primary>VerifySignature</primary>
|
|
|
+ </indexterm>;</emphasis></para>
|
|
|
+
|
|
|
+ <informaltable colsep="1" frame="all" rowsep="1">
|
|
|
+ <tgroup cols="2">
|
|
|
+ <colspec colwidth="120.50pt"/>
|
|
|
+
|
|
|
+ <colspec/>
|
|
|
+
|
|
|
+ <tbody>
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>myPKEModule</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>O nome da estrutura do módulo Public Key Encryption From
|
|
|
+ LFN (Logical FileName)</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>signature</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>A assinatura digital a ser verificada</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry><emphasis>signedData</emphasis></entry>
|
|
|
+
|
|
|
+ <entry>Dados usados para criar a assinatura no formato
|
|
|
+ DATA</entry>
|
|
|
+ </row>
|
|
|
+
|
|
|
+ <row>
|
|
|
+ <entry>Return:<emphasis/></entry>
|
|
|
+
|
|
|
+ <entry>Um valor BOOLEAN para indicar verificação</entry>
|
|
|
+ </row>
|
|
|
+ </tbody>
|
|
|
+ </tgroup>
|
|
|
+ </informaltable>
|
|
|
+
|
|
|
+ <para>A função VerifySignature verifica a <emphasis>assinatura</emphasis>
|
|
|
+ digital fornecida usando as opções especificadas na definição do módulo
|
|
|
+ Public Key Encryption From LFN.</para>
|
|
|
+
|
|
|
+ <para>Exemplo:</para>
|
|
|
+
|
|
|
+ <programlisting format="linespecific">IMPORT Std;
|
|
|
+
|
|
|
+PublicKeyFile := '~Examples::certificates::public::pubkey.pem';
|
|
|
+PrivateKeyFile:= '~Examples::certificates::private::privkey.pem';
|
|
|
+ //You can restrict access using file scope security
|
|
|
+ //on the ~Examples::certificates::private scope
|
|
|
+
|
|
|
+pubKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+
|
|
|
+dPubKey := DATASET([{
|
|
|
+'-----BEGIN PUBLIC KEY-----' + '\n' +
|
|
|
+'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr64RncTp5pV0KMnWRAof' + '\n' +
|
|
|
+'od+3AUS/IDngT39j3Iovv9aI2N8g4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeE' + '\n' +
|
|
|
+'BHqlMDydw9aHOQG17CB30GYsw3Lf8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoy' + '\n' +
|
|
|
+'hIR9MexCldF+3WM/X0IX0ApSs7kuVPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv' + '\n' +
|
|
|
+'/oKj6q7kInEIvhLiGfcm3bpTzWQ66zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3' + '\n' +
|
|
|
+'J6Tk4NY3NySWzE/2/ZOWxZdR79XC+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0' + '\n' +
|
|
|
+'bwIDAQAB' + '\n' +
|
|
|
+'-----END PUBLIC KEY-----' + '\n'
|
|
|
+}],pubKey);
|
|
|
+
|
|
|
+OUTPUT(dPubKey,,PublicKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+PrivKey := RECORD
|
|
|
+ STRING Key;
|
|
|
+END;
|
|
|
+dPrivKey := DATASET([{
|
|
|
+'-----BEGIN RSA PRIVATE KEY-----' + '\n' +
|
|
|
+'MIIEowIBAAKCAQEAr64RncTp5pV0KMnWRAofod+3AUS/IDngT39j3Iovv9aI2N8g' + '\n' +
|
|
|
+'4W5ipqhKftRESmzQ6I/TiUQcmi42soUXmCeEBHqlMDydw9aHOQG17CB30GYsw3Lf' + '\n' +
|
|
|
+'8iZo7RC7ocQE3OcRzH0eBkOryW6X3efWnMoyhIR9MexCldF+3WM/X0IX0ApSs7ku' + '\n' +
|
|
|
+'VPVG4Yj202+1FVO/XNwjMukJG5ASuxpYAQvv/oKj6q7kInEIvhLiGfcm3bpTzWQ6' + '\n' +
|
|
|
+'6zVz3z/huLbEXEy5oj2fQaC5E3s5mdpk/CW3J6Tk4NY3NySWzE/2/ZOWxZdR79XC' + '\n' +
|
|
|
+'+goNL6v/5gPI8B/a3Z8OeM2PfSZwPMnVuvU0bwIDAQABAoIBAQCnGAtNYkOOu8wW' + '\n' +
|
|
|
+'F5Oid3aKwnwPytF211WQh3v2AcFU17qle+SMRi+ykBL6+u5RU5qH+HSc9Jm31AjW' + '\n' +
|
|
|
+'V1yPrdYVZInFjYIJCPzorcXY5zDOmMAuzg5PBVV7VhUA0a5GZck6FC8AilDUcEom' + '\n' +
|
|
|
+'GCK6Ul8mR9XELBFQ6keeTo2yDu0TQ4oBXrPBMN61uMHCxh2tDb2yvl8Zz+EllADG' + '\n' +
|
|
|
+'70pztRWNOrCzrC+ARlmmDfYOUgVFtZin53jq6O6ullPLzhkm3/+QFRGYWsFgQB6J' + '\n' +
|
|
|
+'Z9HJtW5YB47RT5RbLHKXeMc6IJW+d+5HrzgTdK79P7wAZk8JCIDyHe2AaNAUzc/G' + '\n' +
|
|
|
+'sB0cNeURAoGBAOKtaVFa6z2F4Q+koMBXCt4m7dCJnaC+qthF249uEOIBeF3ds9Fq' + '\n' +
|
|
|
+'f0jhhvuV0OcN8lYbR/ZlYRJDUs6mHh/2BYSkdeaLKojXTxKR2bA4xQk5dtJCdoPf' + '\n' +
|
|
|
+'0c15AlTgOYk2oNXP/azDICJYT/cdvIdUL9P4IoZthu1FjwG266GacEnNAoGBAMZn' + '\n' +
|
|
|
+'1wRUXS1dbqemoc+g48wj5r3/qsIG8PsZ2Y8W+oYW7diNA5o6acc8YPEWE2RbJDbX' + '\n' +
|
|
|
+'YEADBnRSdzzOdo0JEj4VbNZEtx6nQhBOOrtYKnnqHVI/XOz3VVu6kedUKdBR87KC' + '\n' +
|
|
|
+'eCzO1VcEeZtsTHuLO4t7NmdHGqNxTV+jLvzBoQsrAoGAI+fOD+nz6znirYSpRe5D' + '\n' +
|
|
|
+'tW67KtYxlr28+CcQoUaQ/Au5kjzE9/4DjXrT09QmVAMciNEnc/sZBjiNzFf525wv' + '\n' +
|
|
|
+'wZP/bPZMVYKtbsaVkdlcNJranHGUrkzswbxSRzmBQ5/YmCWrDAuYcnhEqmMWcuU9' + '\n' +
|
|
|
+'8jiS13JP9hOXlHDyIBYDhV0CgYBV6TznuQgnzp9NpQ/H8ijxilItz3lHTu4mLMlR' + '\n' +
|
|
|
+'9mdAjMkszdLTg5uuE+z+N8rp17VUseoRjb3LvLG4+MXIyDbH/0sDdPm+IjqvCNDR' + '\n' +
|
|
|
+'spmh9MgBh0JbsbWaZK0s9/qrI/FcSLZ04JLsfRmTPU/Y5y8/dHjYO6fDQhp44RZF' + '\n' +
|
|
|
+'iCqNxQKBgHf7KZIOKgV4YNyphk1UYWHNz8YY5o7WtaQ51Q+kIbU8PRd9rqJLZyk2' + '\n' +
|
|
|
+'tKf8e6z+wtKjxi8GKQzE/IdkQqiFmB1yEjjRHQ81WS+K5NnjN1t0IEscJqOAwv9s' + '\n' +
|
|
|
+'iIhG5ueb6xoj/N0LuXa8loUT5aChKWxRHEYdegqU48f+qxUcJj9R' + '\n' +
|
|
|
+'-----END RSA PRIVATE KEY-----' + '\n'
|
|
|
+}],PrivKey);
|
|
|
+
|
|
|
+OUTPUT(dPrivKey,,PrivateKeyFile, CSV(SEPARATOR(''), TERMINATOR('')), OVERWRITE);
|
|
|
+
|
|
|
+//PKE Encryption module definition
|
|
|
+MyPKEModule := STD.Crypto.PublicKeyEncryptionFromLFN('RSA', PublicKeyFile, PrivateKeyFile, '');
|
|
|
+
|
|
|
+DATA signature := myPKEModule.Sign((DATA)'The quick brown fox jumps');
|
|
|
+OUTPUT(TRUE = myPKEModule.VerifySignature(signature, (DATA)'The quick brown fox jumps'));</programlisting>
|
|
|
+ </sect1>
|
|
|
</chapter>
|