Skip to content

Commit

Permalink
Split tpsclient into libpki-tps.so
Browse files Browse the repository at this point in the history
Most of the code in tpsclient has been moved into libpki-tps.so
(i.e. reverting commit 65d1a36)
such that it can be reused by other tools. The main() function
itself has been moved into tpsclient.cpp.
  • Loading branch information
edewata committed Feb 27, 2025
1 parent b1cb2ef commit 904bdac
Show file tree
Hide file tree
Showing 13 changed files with 254 additions and 178 deletions.
103 changes: 2 additions & 101 deletions base/tools/src/main/native/tpsclient/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,99 +36,8 @@ SET(CMAKE_INSTALL_RPATH "${LIB_INSTALL_DIR}/tps")
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

set(TPS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/include)

set(TPS_PUBLIC_INCLUDE_DIRS
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${TPS_INCLUDE_DIR}
CACHE INTERNAL "TPS public include directories"
)

set(TPS_PRIVATE_INCLUDE_DIRS
${TPS_PUBLIC_INCLUDE_DIRS}
${CMAKE_BINARY_DIR}
${NSPR_INCLUDE_DIRS}
${NSS_INCLUDE_DIRS}
${APR_INCLUDE_DIRS}
${LDAP_INCLUDE_DIRS}
)

set(tpsclient_SRCS
src/main/Buffer.cpp
src/main/NameValueSet.cpp
src/main/Util.cpp
src/main/RA_Msg.cpp
src/main/Memory.cpp
src/main/AuthParams.cpp
src/apdu/APDU.cpp
src/apdu/Unblock_Pin_APDU.cpp
src/apdu/Create_Object_APDU.cpp
src/apdu/Set_Pin_APDU.cpp
src/apdu/Set_IssuerInfo_APDU.cpp
src/apdu/Get_IssuerInfo_APDU.cpp
src/apdu/Create_Pin_APDU.cpp
src/apdu/List_Pins_APDU.cpp
src/apdu/Initialize_Update_APDU.cpp
src/apdu/Get_Version_APDU.cpp
src/apdu/Get_Status_APDU.cpp
src/apdu/Get_Data_APDU.cpp
src/apdu/External_Authenticate_APDU.cpp
src/apdu/Generate_Key_APDU.cpp
src/apdu/Generate_Key_ECC_APDU.cpp
src/apdu/Read_Buffer_APDU.cpp
src/apdu/Read_Object_APDU.cpp
src/apdu/Write_Object_APDU.cpp
src/apdu/Put_Key_APDU.cpp
src/apdu/Select_APDU.cpp
src/apdu/Delete_File_APDU.cpp
src/apdu/Install_Applet_APDU.cpp
src/apdu/Format_Muscle_Applet_APDU.cpp
src/apdu/Load_File_APDU.cpp
src/apdu/Install_Load_APDU.cpp
src/apdu/Lifecycle_APDU.cpp
src/apdu/List_Objects_APDU.cpp
src/apdu/Import_Key_APDU.cpp
src/apdu/Import_Key_Enc_APDU.cpp
src/apdu/APDU_Response.cpp
src/apdu/Get_Lifecycle_APDU.cpp
src/msg/RA_Begin_Op_Msg.cpp
src/msg/RA_End_Op_Msg.cpp
src/msg/RA_Login_Request_Msg.cpp
src/msg/RA_Login_Response_Msg.cpp
src/msg/RA_SecureId_Request_Msg.cpp
src/msg/RA_SecureId_Response_Msg.cpp
src/msg/RA_ASQ_Request_Msg.cpp
src/msg/RA_ASQ_Response_Msg.cpp
src/msg/RA_New_Pin_Request_Msg.cpp
src/msg/RA_New_Pin_Response_Msg.cpp
src/msg/RA_Token_PDU_Request_Msg.cpp
src/msg/RA_Token_PDU_Response_Msg.cpp
src/msg/RA_Status_Update_Request_Msg.cpp
src/msg/RA_Status_Update_Response_Msg.cpp
src/msg/RA_Extended_Login_Request_Msg.cpp
src/msg/RA_Extended_Login_Response_Msg.cpp
tools/raclient/RA_Client.cpp
tools/raclient/RA_Conn.cpp
tools/raclient/RA_Token.cpp
)

set(TPS_EXECUTABLE
tpsclient
CACHE INTERNAL "tpsclient executable"
)

set(TPS_LINK_LIBRARIES
${NSPR_LIBRARIES}
${NSS_LIBRARIES}
${APR_LIBRARIES}
${LDAP_LIBRARIES}
)

include_directories(${TPS_PRIVATE_INCLUDE_DIRS})

add_executable(${TPS_EXECUTABLE} ${tpsclient_SRCS})
target_link_libraries(${TPS_EXECUTABLE} ${TPS_LINK_LIBRARIES})
add_subdirectory(src)
add_subdirectory(tools)

add_custom_target(tpsclient-man ALL
COMMENT "Creating PKI server manuals")
Expand All @@ -139,14 +48,6 @@ add_custom_command(
COMMAND go-md2man -in ${CMAKE_SOURCE_DIR}/docs/manuals/man1/tpsclient.1.md -out man/man1/tpsclient.1
)

install(
TARGETS
${TPS_EXECUTABLE}
RUNTIME DESTINATION ${BIN_INSTALL_DIR}
LIBRARY DESTINATION ${LIB_INSTALL_DIR}/tps
ARCHIVE DESTINATION ${LIB_INSTALL_DIR}/tps
)

install(
DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}/man/
Expand Down
110 changes: 110 additions & 0 deletions base/tools/src/main/native/tpsclient/src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
project(tps_library CXX)

set(TPS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)

set(TPS_PUBLIC_INCLUDE_DIRS
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${TPS_INCLUDE_DIR}
CACHE INTERNAL "TPS public include directories"
)

set(TPS_PRIVATE_INCLUDE_DIRS
${TPS_PUBLIC_INCLUDE_DIRS}
${CMAKE_BINARY_DIR}
${JNI_INCLUDE_DIRS}
${NSS_INCLUDE_DIRS}
${NSPR_INCLUDE_DIRS}
${APR_INCLUDE_DIRS}
${LDAP_INCLUDE_DIRS}
)

set(TPS_SHARED_LIBRARY
tps_library
CACHE INTERNAL "TPS shared library"
)

set(TPS_LINK_LIBRARIES
${NSPR_LIBRARIES}
${NSS_LIBRARIES}
${APR_LIBRARIES}
${LDAP_LIBRARIES}
)

set(tps_library_SRCS
main/Buffer.cpp
main/NameValueSet.cpp
main/Util.cpp
main/RA_Client.cpp
main/RA_Conn.cpp
main/RA_Msg.cpp
main/RA_Token.cpp
main/Memory.cpp
main/AuthParams.cpp
apdu/APDU.cpp
apdu/Unblock_Pin_APDU.cpp
apdu/Create_Object_APDU.cpp
apdu/Set_Pin_APDU.cpp
apdu/Set_IssuerInfo_APDU.cpp
apdu/Get_IssuerInfo_APDU.cpp
apdu/Create_Pin_APDU.cpp
apdu/List_Pins_APDU.cpp
apdu/Initialize_Update_APDU.cpp
apdu/Get_Version_APDU.cpp
apdu/Get_Status_APDU.cpp
apdu/Get_Data_APDU.cpp
apdu/External_Authenticate_APDU.cpp
apdu/Generate_Key_APDU.cpp
apdu/Generate_Key_ECC_APDU.cpp
apdu/Read_Buffer_APDU.cpp
apdu/Read_Object_APDU.cpp
apdu/Write_Object_APDU.cpp
apdu/Put_Key_APDU.cpp
apdu/Select_APDU.cpp
apdu/Delete_File_APDU.cpp
apdu/Install_Applet_APDU.cpp
apdu/Format_Muscle_Applet_APDU.cpp
apdu/Load_File_APDU.cpp
apdu/Install_Load_APDU.cpp
apdu/Lifecycle_APDU.cpp
apdu/List_Objects_APDU.cpp
apdu/Import_Key_APDU.cpp
apdu/Import_Key_Enc_APDU.cpp
apdu/APDU_Response.cpp
apdu/Get_Lifecycle_APDU.cpp
msg/RA_Begin_Op_Msg.cpp
msg/RA_End_Op_Msg.cpp
msg/RA_Login_Request_Msg.cpp
msg/RA_Login_Response_Msg.cpp
msg/RA_SecureId_Request_Msg.cpp
msg/RA_SecureId_Response_Msg.cpp
msg/RA_ASQ_Request_Msg.cpp
msg/RA_ASQ_Response_Msg.cpp
msg/RA_New_Pin_Request_Msg.cpp
msg/RA_New_Pin_Response_Msg.cpp
msg/RA_Token_PDU_Request_Msg.cpp
msg/RA_Token_PDU_Response_Msg.cpp
msg/RA_Status_Update_Request_Msg.cpp
msg/RA_Status_Update_Response_Msg.cpp
msg/RA_Extended_Login_Request_Msg.cpp
msg/RA_Extended_Login_Response_Msg.cpp
)

include_directories(${TPS_PRIVATE_INCLUDE_DIRS})

add_library(${TPS_SHARED_LIBRARY} SHARED ${tps_library_SRCS})
target_link_libraries(${TPS_SHARED_LIBRARY} ${TPS_LINK_LIBRARIES})

set_target_properties(
${TPS_SHARED_LIBRARY}
PROPERTIES
OUTPUT_NAME
pki-tps
)

install(
TARGETS
${TPS_SHARED_LIBRARY}
LIBRARY DESTINATION ${LIB_INSTALL_DIR}
)

Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@

#include "prthread.h"
#include "main/NameValueSet.h"
#include "RA_Conn.h"
#include "RA_Token.h"
#include "main/RA_Conn.h"
#include "main/RA_Token.h"

enum RequestType {
OP_CLIENT_ENROLL = 0,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@

#include <stdio.h>
#include "prio.h"
#include "RA_Token.h"
#include "main/RA_Token.h"
#include "main/RA_Msg.h"
#include "main/Buffer.h"
#include "apdu/APDU.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,21 @@
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include "prinrval.h"

#include "prinrval.h"
#include "prmem.h"
#include "prsystem.h"
#include "plstr.h"
#include "prio.h"
#include "prprf.h"
#include "pk11func.h"
#include "nss.h"

#include "main/NameValueSet.h"
#include "main/Util.h"
#include "main/RA_Client.h"
#include "main/RA_Msg.h"
#include "main/RA_Token.h"
#include "authentication/AuthParams.h"
#include "apdu/APDU_Response.h"
#include "apdu/Initialize_Update_APDU.h"
Expand All @@ -54,10 +57,6 @@
#include "msg/RA_ASQ_Response_Msg.h"
#include "msg/RA_Status_Update_Request_Msg.h"
#include "msg/RA_Status_Update_Response_Msg.h"
#include "RA_Token.h"
#include "RA_Client.h"

#include "nss.h"

static PRFileDesc *m_fd_debug = (PRFileDesc *) NULL;
PRBool old_style = PR_TRUE;
Expand Down Expand Up @@ -1632,69 +1631,3 @@ RA_Client::Execute ()
}
}
} /* Execute */

char *
ownPasswd (PK11SlotInfo * slot, PRBool retry, void *arg)
{
return PL_strdup ("password");
}

/**
* User certutil -d . -N to create a database.
* The database should have 'password' as the password.
*/
int
main (int argc, char *argv[])
{
char buffer[513];
SECStatus rv;
PK11SlotInfo *slot = NULL;
PRUint32 flags = 0;
// char *newpw = NULL;

/* Initialize NSPR & NSS */
PR_Init (PR_SYSTEM_THREAD, PR_PRIORITY_NORMAL, 1);
PK11_SetPasswordFunc (ownPasswd);
rv = NSS_Initialize (".", "", "", "", flags);
if (rv != SECSuccess)
{
PR_GetErrorText (buffer);
fprintf (stderr, "unable to initialize NSS library (%d - '%s')\n",
PR_GetError (), buffer);
exit (0);
}
slot = PK11_GetInternalKeySlot ();
if (PK11_NeedUserInit (slot))
{
rv = PK11_InitPin (slot, (char *) NULL, (char *) "password");
if (rv != SECSuccess)
{
PR_GetErrorText (buffer);
fprintf (stderr, "unable to set new PIN (%d - '%s')\n",
PR_GetError (), buffer);
exit (0);
}

}
if (PK11_NeedLogin (slot))
{
rv = PK11_Authenticate (slot, PR_TRUE, NULL);
if (rv != SECSuccess)
{
PR_GetErrorText (buffer);
fprintf (stderr, "unable to authenticate (%d - '%s')\n",
PR_GetError (), buffer);
exit (0);
}
}

/* Start RA Client */
RA_Client client;
client.Execute ();

/* Shutdown NSS and NSPR */
NSS_Shutdown ();
PR_Cleanup ();

return 1;
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include "plstr.h"
#include "main/NameValueSet.h"
#include "main/Util.h"
#include "RA_Conn.h"
#include "main/RA_Conn.h"
#include "apdu/APDU_Response.h"
#include "apdu/List_Objects_APDU.h"
#include "apdu/Create_Object_APDU.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#include "cryptohi.h"
#include "plstr.h"
#include "main/Util.h"
#include "RA_Token.h"
#include "main/RA_Token.h"
#include "apdu/APDU_Response.h"
#include "apdu/Initialize_Update_APDU.h"
#include "apdu/Generate_Key_APDU.h"
Expand Down
1 change: 1 addition & 0 deletions base/tools/src/main/native/tpsclient/tools/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
add_subdirectory(raclient)
Loading

0 comments on commit 904bdac

Please sign in to comment.