Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(SQL Server) Decrypt MIME using RSAES-OAEP with SHA256 and AES-128 content encryptionDemonstrates how to decrypt MIME what was encrypted with RSAES-OAEP with SHA256 and AES-128 content encryption. In actuality, we don't really need to know in advance the various algorithms used to encrypt the MIME. When decrypting, the information about the algorithms required are embedded in the PCKS7 message itself, and this tells a decryptor what it should use. Note: This example requires Chilkat v9.5.0.67 or greater.
// Important: See this note about string length limitations for strings returned by sp_OAMethod calls. // CREATE PROCEDURE ChilkatSample AS BEGIN DECLARE @hr int DECLARE @sTmp0 nvarchar(4000) -- This requires the Chilkat API to have been previously unlocked. -- See Global Unlock Sample for sample code. -- We begin with this encrypted MIME: -- Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data" -- someHeader1: Some value 1 -- someHeader2: Some value 2 -- Content-Disposition: attachment; filename="smime.p7m" -- Content-Transfer-Encoding: base64 -- -- MIIDvAYJKoZIhvcNAQcDoIIDrTCCA6kCAQAxggGgMIIBnAIBADB1MGgxCzAJBgNVBAYTAlVTMQsw -- CQYDVQQIDAJJTDEQMA4GA1UEBwwHV2hlYXRvbjEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ -- dHkgTHRkMRcwFQYDVQQDDA5DaGlsa2F0V2lkZ2V0cwIJAMRwugDmvniwMBwGCSqGSIb3DQEBBzAP -- oA0wCwYJYIZIAWUDBAIBBIIBAFaUL1ga1bOrdqYKcMm+FHUacBvzfBxk0fnPA0AMBdN8BvTWT3CN -- YuqBhjOGyq0FpYD9pVZybUuFMCVsVyIW2O62HnsOK58YaPEUUcdH2sI+yjqX9UAn0P0nVDSsVdeK -- W8x9kMfZg+3UP+y1q+lu7VRJO3f2C9oLQpTkc4VW4n7UOcUI0waykLCjCTL8lFDb7/J3GeuMKyhH -- 5riNz50kpbzqn7m2Ks9yA+QmcTdXclclGFr2vwEUFzSdT2pxh/vaUrogCxkYWbQ2eV7vZg6O4kV0 -- aqHBqySkPTAzHKiHH8K8GVdlTuJ8350CpICa4T8w7/Ht5I7dyOPPKy4C+rVtrvcwggH+BgkqhkiG -- 9w0BBwEwHQYJYIZIAWUDBAECBBDTC2WNBN+z2I47/4Feu9YqgIIB0MZvl3nC/q/Wzil6HtfQTr12 -- Q5moHY+ORzAa1P9XvX2ZUFhW530mV395mQw/A4o4ekmX9eRPEZquYzZPLT8hNeZIuNdhpcSQUmad -- rKnKkR0wKJ3jJ3LhOIohVBQSYs8kVDZKq6lJBIznlsurFelZoNEhyRschhteDZx5rb7fCe8c2+/O -- DHxaqaHCAzm/Bd7kcg6FFfuTZy3tu0PgP5IsXN4OFA3kkvwjAs4XsVS8jdIcmDNBkYieE8WmJOIm -- Mz7mh/CHWLgWfGKa0Dkb9RcbFgLwYNT3GzuXFw9XPbKkEZjEAtJajWbN6P0WQl96YYd9qZxUpGxZ -- zjTHEYzViUdUXolfpLufttrRXyxN1RFWhNFMFbv66xYqklMSgpdM/Mbk+EuvX6eXayDPvDBpfYMw -- NoRAzv1Ony2c0ez9rBemJICicxAzpuvHbRxdjYs63Dnv+TYgpBK12AxWWpPIjXvw0WQKgTC3Tg8s -- EnuGhpENqso/clJBEBSn4+2WhYtYbdI5sVme67lvqQl1Xxy3r18SWaQbyDOwgYi1E+54lMDOxMy0 -- y0FPHk5pP45DnXWj+XORPp5LhuZr5mf62YOXSSUwR5P0cXy4Rc+pN5lhRQPCf5z2 DECLARE @success int DECLARE @sb int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.StringBuilder', @sb OUT IF @hr <> 0 BEGIN PRINT 'Failed to create ActiveX component' RETURN END DECLARE @bCrlf int SELECT @bCrlf = 1 EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data"', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'someHeader1: Some value 1', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'someHeader2: Some value 2', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'Content-Disposition: attachment; filename="smime.p7m"', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'Content-Transfer-Encoding: base64', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, '', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'MIIDvAYJKoZIhvcNAQcDoIIDrTCCA6kCAQAxggGgMIIBnAIBADB1MGgxCzAJBgNVBAYTAlVTMQsw', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'CQYDVQQIDAJJTDEQMA4GA1UEBwwHV2hlYXRvbjEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'dHkgTHRkMRcwFQYDVQQDDA5DaGlsa2F0V2lkZ2V0cwIJAMRwugDmvniwMBwGCSqGSIb3DQEBBzAP', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'oA0wCwYJYIZIAWUDBAIBBIIBAFaUL1ga1bOrdqYKcMm+FHUacBvzfBxk0fnPA0AMBdN8BvTWT3CN', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'YuqBhjOGyq0FpYD9pVZybUuFMCVsVyIW2O62HnsOK58YaPEUUcdH2sI+yjqX9UAn0P0nVDSsVdeK', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'W8x9kMfZg+3UP+y1q+lu7VRJO3f2C9oLQpTkc4VW4n7UOcUI0waykLCjCTL8lFDb7/J3GeuMKyhH', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, '5riNz50kpbzqn7m2Ks9yA+QmcTdXclclGFr2vwEUFzSdT2pxh/vaUrogCxkYWbQ2eV7vZg6O4kV0', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'aqHBqySkPTAzHKiHH8K8GVdlTuJ8350CpICa4T8w7/Ht5I7dyOPPKy4C+rVtrvcwggH+BgkqhkiG', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, '9w0BBwEwHQYJYIZIAWUDBAECBBDTC2WNBN+z2I47/4Feu9YqgIIB0MZvl3nC/q/Wzil6HtfQTr12', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'Q5moHY+ORzAa1P9XvX2ZUFhW530mV395mQw/A4o4ekmX9eRPEZquYzZPLT8hNeZIuNdhpcSQUmad', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'rKnKkR0wKJ3jJ3LhOIohVBQSYs8kVDZKq6lJBIznlsurFelZoNEhyRschhteDZx5rb7fCe8c2+/O', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'DHxaqaHCAzm/Bd7kcg6FFfuTZy3tu0PgP5IsXN4OFA3kkvwjAs4XsVS8jdIcmDNBkYieE8WmJOIm', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'Mz7mh/CHWLgWfGKa0Dkb9RcbFgLwYNT3GzuXFw9XPbKkEZjEAtJajWbN6P0WQl96YYd9qZxUpGxZ', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'zjTHEYzViUdUXolfpLufttrRXyxN1RFWhNFMFbv66xYqklMSgpdM/Mbk+EuvX6eXayDPvDBpfYMw', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'NoRAzv1Ony2c0ez9rBemJICicxAzpuvHbRxdjYs63Dnv+TYgpBK12AxWWpPIjXvw0WQKgTC3Tg8s', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'EnuGhpENqso/clJBEBSn4+2WhYtYbdI5sVme67lvqQl1Xxy3r18SWaQbyDOwgYi1E+54lMDOxMy0', @bCrlf EXEC sp_OAMethod @sb, 'AppendLine', @success OUT, 'y0FPHk5pP45DnXWj+XORPp5LhuZr5mf62YOXSSUwR5P0cXy4Rc+pN5lhRQPCf5z2', @bCrlf -- Load the encrypted MIME into the MIME object. DECLARE @mime int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Mime', @mime OUT EXEC sp_OAMethod @mime, 'LoadMimeSb', @success OUT, @sb -- Provide the required cert + private key from a PFX (.pfx/.p12) file. EXEC sp_OAMethod @mime, 'AddPfxSourceFile', @success OUT, 'qa_data/rsaes-oaep/cert_plus_privatekey.pfx', 'PFX_PASSWORD' IF @success <> 1 BEGIN EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @sb EXEC @hr = sp_OADestroy @mime RETURN END -- Decrypt. EXEC sp_OAMethod @mime, 'Decrypt', @success OUT IF @success <> 1 BEGIN EXEC sp_OAGetProperty @mime, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @sb EXEC @hr = sp_OADestroy @mime RETURN END -- Examine the decrypted MIME. EXEC sp_OAMethod @mime, 'GetMime', @sTmp0 OUT PRINT @sTmp0 PRINT 'Decrypt test 1 succeeded.' -- ----------------------------------------------------------- -- Now let's decrypt another way.. -- We have the same cert and private key in PEM files.. DECLARE @cert int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Cert', @cert OUT EXEC sp_OAMethod @cert, 'LoadFromFile', @success OUT, 'qa_data/rsaes-oaep/cert.pem' DECLARE @privKey int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.PrivateKey', @privKey OUT EXEC sp_OAMethod @privKey, 'LoadPemFile', @success OUT, 'qa_data/rsaes-oaep/privatekey.pem' -- Decrypt using the cert + private key DECLARE @mime2 int EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Mime', @mime2 OUT EXEC sp_OAMethod @mime2, 'LoadMimeSb', @success OUT, @sb EXEC sp_OAMethod @mime2, 'Decrypt2', @success OUT, @cert, @privKey IF @success <> 1 BEGIN EXEC sp_OAGetProperty @mime2, 'LastErrorText', @sTmp0 OUT PRINT @sTmp0 EXEC @hr = sp_OADestroy @sb EXEC @hr = sp_OADestroy @mime EXEC @hr = sp_OADestroy @cert EXEC @hr = sp_OADestroy @privKey EXEC @hr = sp_OADestroy @mime2 RETURN END -- Examine the decrypted MIME. EXEC sp_OAMethod @mime2, 'GetMime', @sTmp0 OUT PRINT @sTmp0 PRINT 'Decrypt test 2 succeeded.' EXEC @hr = sp_OADestroy @sb EXEC @hr = sp_OADestroy @mime EXEC @hr = sp_OADestroy @cert EXEC @hr = sp_OADestroy @privKey EXEC @hr = sp_OADestroy @mime2 END GO |
© 2000-2023 Chilkat Software, Inc. All Rights Reserved.