Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lminuti/Delphi-OpenSSL
Delphi wrapper for OpenSSL
https://github.com/lminuti/Delphi-OpenSSL
cryptography delphi openssl rsa
Last synced: about 1 month ago
JSON representation
Delphi wrapper for OpenSSL
- Host: GitHub
- URL: https://github.com/lminuti/Delphi-OpenSSL
- Owner: lminuti
- Created: 2016-06-16T13:10:35.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-12-04T12:07:53.000Z (6 months ago)
- Last Synced: 2024-01-06T22:22:19.495Z (5 months ago)
- Topics: cryptography, delphi, openssl, rsa
- Language: Pascal
- Homepage:
- Size: 121 KB
- Stars: 130
- Watchers: 37
- Forks: 60
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Lists
- awesome-pascal - OpenSSL
README
# Delphi OpenSSL Library
[Delphi](http://www.embarcadero.com/products/delphi) wrapper for [OpenSSL](https://openssl.org/).
## Features
- Encrypt/Decrypt using RSA algorithm
- Symmetric cipher routines
- Base64 encoding e decoding
- Basic PAM support
- Generation of pseudo-random bit strings
- Basic SMIME support
- Generate RSA KeyPairs in PKCS PEM format## Usage
### Encrypt with the public key inside X509 certificate
*Command line:*
OpenSSL rsautl -encrypt -certin -inkey publiccert.cer -in test.txt -out test.txt.cry
*Source code:*
```delphi
var
RSAUtil :TRSAUtil;
Cerificate :TX509Cerificate;
begin
RSAUtil := TRSAUtil.Create;
try
Cerificate := TX509Cerificate.Create;
try
Cerificate.LoadFromFile('publiccert.cer');
RSAUtil.PublicKey.LoadFromCertificate(Cerificate);
RSAUtil.PublicEncrypt('test.txt', 'test.txt.cry');
finally
Cerificate.Free;
end;
finally
RSAUtil.Free;
end;
end;
```### Encrypt with the public key in PEM format
*Command line:*
OpenSSL rsautl -encrypt -pubin -inkey publickey.pem -in test.txt -out test.txt.cry
*Source code:*
```delphi
var
RSAUtil :TRSAUtil;
begin
RSAUtil := TRSAUtil.Create;
try
RSAUtil.PublicKey.LoadFromFile('publickey.pem');
RSAUtil.PublicEncrypt('test.txt', 'test.txt.cry');
finally
RSAUtil.Free;
end;
end;
```### Decrypt with the private key in PEM format
*Command line:*
OpenSSL rsautl -decrypt -inkey privatekey.pem -in test.txt.cry -out test.txt
*Source code:*
```delphi
var
RSAUtil :TRSAUtil;
begin
RSAUtil := TRSAUtil.Create;
try
RSAUtil.PrivateKey.OnNeedPassphrase := PassphraseReader;
RSAUtil.PrivateKey.LoadFromFile('privatekey.pem');
RSAUtil.PrivateDecrypt('test.txt.cry', 'test.txt');
finally
RSAUtil.Free;
end;
end;
```### Encrypt with AES256
*Command line:*
OpenSSL enc -base64 -aes256 -in text.plain -out text.aes256 -k secure
*Source code:*
```delphi
var
EncUtil :TEncUtil;
begin
EncUtil := TEncUtil.Create;
try
EncUtil.UseBase64 := True;
EncUtil.Passphrase := 'secure';
EncUtil.Cipher := 'AES-256';
EncUtil.Encrypt('text.plain', 'text.aes256');
finally
EncUtil.Free;
end;
end;
```## Todo
- Symmetric cryptography (partially done)
- compute hash functions
- Sign e verify
- RSA data management
- Data managing for X509
- Manage information according to the PKCS #12 standard## Prerequisite
OpenSSL library must be in your system path
## Installation
- Add the source path "Source" to your Delphi project path
- Run the demo and follow the tutorial