anchor.diff:    LSourcePointer := Addr(ASource);
     SetString(LTarget, LSourcePointer, Length(ASource));
     Result := LTarget;
  -end;
  -
  -// Get OpenSSL error and message text
  -function ERR_GetErrorMessage_OpenSSL : String;
  +end;
  +
  +// Get OpenSSL error and message text
  +function ERR_GetErrorMessage_OpenSSL : String;
   var locErrMsg: array [0..160] of Char;
   begin
     ERR_error_string( ERR_get_error, @locErrMsg );
     result := ArrayToString(locErrMsg);
   end;
  -
  -{ TRSAAlgorithmHelper }
  -
  -procedure TRSAAlgorithmHelper.FromString(const AValue: string);
  -begin
  -  if AValue = 'RS256' then
  -    Self := RS256
  -  else if AValue = 'RS384' then
  -    Self := RS384
  -  else if AValue = 'RS512' then
  -    Self := RS512
  -  else
  -    raise Exception.Create('Invalid RSA algorithm type');
  -end;
  -
  -function TRSAAlgorithmHelper.ToString: string;
  -begin
  -  case Self of
  -    RS256: Result := 'RS256';
  -    RS384: Result := 'RS384';
  -    RS512: Result := 'RS512';
  -  end;
  -end;
  -
  -{ TRSA }
  -
  -class function TRSA.Sign(const AInput, AKey: TBytes;
  +
  +{ TRSAAlgorithmHelper }
  +
  +procedure TRSAAlgorithmHelper.FromString(const AValue: string);
  +begin
  +  if AValue = 'RS256' then
  +    Self := RS256
  +  else if AValue = 'RS384' then
  +    Self := RS384
  +  else if AValue = 'RS512' then
  +    Self := RS512
  +  else
  +    raise Exception.Create('Invalid RSA algorithm type');
  +end;
  +
  +function TRSAAlgorithmHelper.ToString: string;
  +begin
  +  case Self of
  +    RS256: Result := 'RS256';
  +    RS384: Result := 'RS384';
  +    RS512: Result := 'RS512';
  +  end;
  +end;
  +
  +{ TRSA }
  +
  +class function TRSA.Sign(const AInput, AKey: TBytes;
     AAlg: TRSAAlgorithm): TBytes;
   var
     LPrivKeyBIO: pBIO;
  
positive.code:     if Result then
        RSA_Free(LRsa);
    finally
      BIO_free(LPubKeyBIO);
    end;
  end;
  
  class function TRSA.VerifyPublicKey(const AKey: TBytes): Boolean;
  var
    LPubKeyBIO: pBIO;
    LRsa: pRSA;
  begin
    LoadOpenSSL;
  
negative.code:     if Result then
        RSA_Free(LRsa);
    finally
      BIO_free(LPubKeyBIO);
    end;
  end;
  
  