- XOBWSSL ;ALB/MJK - HWSC :: SSL Integration Tools ; 09/13/10 4:00pm
- ;;1.0;HwscWebServiceClient;;September 13, 2010;Build 31
- ;
- QUIT
- ;
- CHKNAME(XOBCFGN) ; -- match configuration name / used by input transform (18.12 : 3.02)
- QUIT:$$CACH2008() 1 ; skip match checking if Cache 2008/higher, can't check oustide %SYS
- NEW MATCH,STATUS,RS,MORE
- SET MATCH=0
- SET RS=##class(%ResultSet).%New("%Net.SSL.Configuration:ListNames")
- IF $system.Status.IsError(RS.Execute()) GOTO CHKNAMEQ
- ; -- see if there is a match
- FOR SET MORE=RS.Next(.STATUS) QUIT:'MORE!($system.Status.IsError(STATUS)) DO QUIT:MATCH
- . IF XOBCFGN=$GET(RS.Data("Name")) SET MATCH=1 QUIT
- CHKNAMEQ ; -- check name quit point
- QUIT MATCH
- ;
- DISPLAY ; -- display list of SSL configuration names / used by XECUTABLE HELP (18.12 :3.02)
- QUIT:$$CACH2008() ; skip display if Cache 2008/higher, can't check oustide %SYS
- NEW COUNT,RS,STATUS
- SET COUNT=0
- DO EN^DDIOL("Possible SSL configurations are the following:")
- SET RS=##class(%ResultSet).%New("%Net.SSL.Configuration:ListNames")
- IF $system.Status.IsError(RS.Execute()) GOTO DISPLAYQ
- ; -- display the names
- FOR SET MORE=RS.Next(.STATUS) QUIT:'MORE!($system.Status.IsError(STATUS)) DO
- . DO EN^DDIOL("- "_$GET(RS.Data("Name")),"","!?5")
- . SET COUNT=COUNT+1
- DISPLAYQ ; -- display list quit point
- IF COUNT=0 DO EN^DDIOL("<No SSL configurations defined>","","!?5")
- QUIT
- ;
- GETCFG(XOBCFGN) ; -- get %Net.SSL.Configuration instance
- NEW STATUS,RS,MORE,CFG
- SET CFG=""
- SET RS=##class(%ResultSet).%New("%Net.SSL.Configuration:Extent")
- IF $system.Status.IsError(RS.Execute()) GOTO GETCFGQ
- ; -- see if there is a match
- FOR SET MORE=RS.Next(.STATUS) QUIT:'MORE!($system.Status.IsError(STATUS)) DO QUIT:CFG]""
- . SET CFG=##class(%Net.SSL.Configuration).%OpenId(RS.Data("ID"))
- . IF XOBCFGN=CFG.Name QUIT
- . SET CFG=""
- GETCFGQ ; -- get SSL config instance exit point
- QUIT CFG
- ;
- SHOW(XOBCFGN) ; -- simple display of SSL Configuration
- QUIT:$$CACH2008() ; skip if Cache 2008/higher, can't check oustide %SYS
- NEW CFG
- SET CFG=$$GETCFG(XOBCFGN)
- IF CFG="" GOTO SHOWQ
- WRITE !,"SSL Configuration Name: ",!?5," > ",CFG.Name
- WRITE !,"File containing X.509 certificate(s) of trusted CAs: ",!?5," > ",$$GETSTR(CFG.CAFile)
- WRITE !,"Directory containing file(s) with X.509 certificate(s) of trusted CA: ",!?5," > ",$$GETSTR(CFG.CAPath)
- WRITE !,"File containing this configuration's X.509 certificate: ",!?5," > ",$$GETSTR(CFG.CertificateFile)
- WRITE !,"Ciphersuites: ",!?5," > ",$$GETSTR(CFG.CipherList)
- WRITE !,"File containing this configuration's private key: ",!?5," > ",$$GETSTR(CFG.PrivateKeyFile)
- WRITE !,"Private key type: ",!?5," > ",$$GETSTR($SELECT(CFG.PrivateKeyType=1:"DSA",CFG.PrivateKeyType=2:"RSA",1:""))
- WRITE !,"Intended role for this configuration: ",!?5," > ",$$GETSTR($SELECT(CFG.Role=0:"client",CFG.Role=1:"server",1:""))
- WRITE !,"Peer certificate verification level: " DO
- . ; -- client role
- . IF CFG.Role=0 WRITE !?5," > ",$$GETSTR($SELECT(CFG.VerifyPeer=0:"none",CFG.VerifyPeer=1:"required",1:"")) QUIT
- . ; -- server role
- . IF CFG.Role=1 WRITE !?5," > ",$$GETSTR($SELECT(CFG.VerifyPeer=0:"none",CFG.VerifyPeer=1:"request",CFG.VerifyPeer=3:"required",1:"")) QUIT
- WRITE !,"Maximum number of CA certificates allowed in peer certificate chain: ",!?5," > ",$$GETSTR(CFG.VerifyDepth)
- SHOWQ ;
- QUIT
- ;
- GETSTR(STR) ;
- QUIT $SELECT(STR]"":STR,1:"<null>")
- ;
- CACH2008() ; quit 1 if OS is 2008 or higher
- NEW XOBVER
- SET XOBVER=$$VERSION^%ZOSV()
- IF +$P(XOBVER,".")>2007 QUIT 1
- QUIT 0