|
@@ -76,7 +76,11 @@ uses
|
|
|
ClpHex,
|
|
ClpHex,
|
|
|
ClpDigestUtilities,
|
|
ClpDigestUtilities,
|
|
|
ClpMacUtilities,
|
|
ClpMacUtilities,
|
|
|
- ClpArrayUtils;
|
|
|
|
|
|
|
+ ClpArrayUtils,
|
|
|
|
|
+ ClpBigInteger,
|
|
|
|
|
+ ClpAsymmetricCipherKeyPair,
|
|
|
|
|
+ ClpECPrivateKeyParameters,
|
|
|
|
|
+ ClpECKeyPairGenerator;
|
|
|
|
|
|
|
|
type
|
|
type
|
|
|
|
|
|
|
@@ -177,6 +181,9 @@ begin
|
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
function TTestIESCipher.GetECKeyPair: IAsymmetricCipherKeyPair;
|
|
function TTestIESCipher.GetECKeyPair: IAsymmetricCipherKeyPair;
|
|
|
|
|
+const
|
|
|
|
|
+ PrivateKeyInHex =
|
|
|
|
|
+ '0c4f86613be9fdb1ac56d471b63a2b55871f356870a63f1a44732baa9847f395';
|
|
|
var
|
|
var
|
|
|
CurveName: string;
|
|
CurveName: string;
|
|
|
KeyPairGeneratorInstance: IAsymmetricCipherKeyPairGenerator;
|
|
KeyPairGeneratorInstance: IAsymmetricCipherKeyPairGenerator;
|
|
@@ -184,18 +191,33 @@ var
|
|
|
Lcurve: IX9ECParameters;
|
|
Lcurve: IX9ECParameters;
|
|
|
ecSpec: IECDomainParameters;
|
|
ecSpec: IECDomainParameters;
|
|
|
KeyPair: IAsymmetricCipherKeyPair;
|
|
KeyPair: IAsymmetricCipherKeyPair;
|
|
|
|
|
+ PrivateKeyBytes: TBytes;
|
|
|
|
|
+ PrivD: TBigInteger;
|
|
|
|
|
+ RegeneratedPublicKey: IECPublicKeyParameters;
|
|
|
|
|
+ RegeneratedPrivateKey: IECPrivateKeyParameters;
|
|
|
begin
|
|
begin
|
|
|
// Set Up EC Key Pair
|
|
// Set Up EC Key Pair
|
|
|
|
|
|
|
|
CurveName := 'secp256k1';
|
|
CurveName := 'secp256k1';
|
|
|
Lcurve := TSecNamedCurves.GetByName(CurveName);
|
|
Lcurve := TSecNamedCurves.GetByName(CurveName);
|
|
|
- KeyPairGeneratorInstance := TGeneratorUtilities.GetKeyPairGenerator('ECDSA');
|
|
|
|
|
|
|
+ // KeyPairGeneratorInstance := TGeneratorUtilities.GetKeyPairGenerator('ECDSA');
|
|
|
ecSpec := TECDomainParameters.Create(Lcurve.Curve, Lcurve.G, Lcurve.N,
|
|
ecSpec := TECDomainParameters.Create(Lcurve.Curve, Lcurve.G, Lcurve.N,
|
|
|
Lcurve.H, Lcurve.GetSeed);
|
|
Lcurve.H, Lcurve.GetSeed);
|
|
|
- RandomInstance := TSecureRandom.Create();
|
|
|
|
|
- KeyPairGeneratorInstance.Init(TECKeyGenerationParameters.Create(ecSpec,
|
|
|
|
|
- RandomInstance));
|
|
|
|
|
- result := KeyPairGeneratorInstance.GenerateKeyPair();
|
|
|
|
|
|
|
+ // RandomInstance := TSecureRandom.Create();
|
|
|
|
|
+ // KeyPairGeneratorInstance.Init(TECKeyGenerationParameters.Create(ecSpec,
|
|
|
|
|
+ // RandomInstance));
|
|
|
|
|
+ // result := KeyPairGeneratorInstance.GenerateKeyPair();
|
|
|
|
|
+ PrivateKeyBytes := THex.Decode(PrivateKeyInHex);
|
|
|
|
|
+
|
|
|
|
|
+ PrivD := TBigInteger.Create(1, PrivateKeyBytes);
|
|
|
|
|
+ RegeneratedPrivateKey := TECPrivateKeyParameters.Create('ECDSA',
|
|
|
|
|
+ PrivD, ecSpec);
|
|
|
|
|
+
|
|
|
|
|
+ RegeneratedPublicKey := TECKeyPairGenerator.GetCorrespondingPublicKey
|
|
|
|
|
+ (RegeneratedPrivateKey);
|
|
|
|
|
+
|
|
|
|
|
+ result := TAsymmetricCipherKeyPair.Create(RegeneratedPublicKey,
|
|
|
|
|
+ RegeneratedPrivateKey);
|
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
function TTestIESCipher.GetIESCipherParameters: IIESWithCipherParameters;
|
|
function TTestIESCipher.GetIESCipherParameters: IIESWithCipherParameters;
|