#!/bin/sh

. STlsVars

#########################################
# CERTIFICATE SETUP
#

# produce the certificates to use

# snmpd
HOSTNAME=`hostname`
CAPTURE $NSCERT gencert -t snmpd   --cn $HOSTNAME $NSCERTARGS
SERVERFP=`$NSCERT showcerts --fingerprint --brief snmpd  $NSCERTARGS`
CHECKVALUEISNT "$SERVERFP" "" "generated fingerprint for snmpd certificate"

# user
CAPTURE $NSCERT gencert -t snmpapp --cn 'testuser'  $NSCERTARGS
TESTUSERFP=`$NSCERT showcerts --fingerprint --brief snmpapp $NSCERTARGS`
CHECKVALUEISNT "$TESTUSERFP" "" "generated fingerprint for testuser certificate"

# user 1.5
CAPTURE $NSCERT gencert -t snmpapp2 --cn 'testuser2'  $NSCERTARGS
TESTUSER2FP=`$NSCERT showcerts --fingerprint --brief snmpapp2 $NSCERTARGS`
CHECKVALUEISNT "$TESTUSER2FP" "" "generated fingerprint for testuser certificate"

# user 2
CAPTURE $NSCERT gencert -t otheruser --cn 'otheruser'  $NSCERTARGS
OTHERUSERFP=`$NSCERT showcerts --fingerprint --brief otheruser $NSCERTARGS`
CHECKVALUEISNT "$OTHERUSERFP" "" "generated fingerprint for otheruser certificate"

# user 3
CAPTURE $NSCERT gencert -t invaliduser --cn 'invaliduser'  $NSCERTARGS
INVALIDUSERFP=`$NSCERT showcerts --fingerprint --brief invaliduser $NSCERTARGS`
CHECKVALUEISNT "$INVALIDUSERFP" "" "generated fingerprint for otheruser certificate"

# user 4
CAPTURE $NSCERT gencert -t unmapped --cn 'unmapped'  $NSCERTARGS
UNMAPPEDFP=`$NSCERT showcerts --fingerprint --brief unmapped $NSCERTARGS`
CHECKVALUEISNT "$UNMAPPEDFP" "" "generated fingerprint for unmapped certificate"

# user 5
CAPTURE $NSCERT gencert -t mappeduser --cn 'mappeduser'  $NSCERTARGS
MAPPEDUSERFP=`$NSCERT showcerts --fingerprint --brief mappeduser $NSCERTARGS`
CHECKVALUEISNT "$MAPPEDUSERFP" "" "generated fingerprint for mappeduser certificate"

# user 6: SAN email
CAPTURE $NSCERT gencert -t email --san email:foobaruser@example.com  $NSCERTARGS
EMAILUSERFP=`$NSCERT showcerts --fingerprint --brief email $NSCERTARGS`
CHECKVALUEISNT "$EMAILUSERFP" "" "generated fingerprint for email certificate"

# user 7: SAN dns
CAPTURE $NSCERT gencert -t dns --san DNS:foobar.example.com  $NSCERTARGS
DNSUSERFP=`$NSCERT showcerts --fingerprint --brief dns $NSCERTARGS`
CHECKVALUEISNT "$DNSUSERFP" "" "generated fingerprint for dns certificate"

# user 8: SAN IPv4
CAPTURE $NSCERT gencert -t ipaddr --san IP:127.0.0.1  $NSCERTARGS
IPUSERFP=`$NSCERT showcerts --fingerprint --brief ipaddr $NSCERTARGS`
CHECKVALUEISNT "$IPUSERFP" "" "generated fingerprint for ipaddr certificate"

# user 8.1:  afile
CAPTURE $NSCERT gencert -t afile --cn afileuser $NSCERTARGS
AFILEUSERFP=`$NSCERT showcerts --fingerprint --brief afile $NSCERTARGS`
CHECKVALUEISNT "$AFILEUSERFP" "" "generated fingerprint for afile certificate"


# CA certificate

CAPTURE $NSCERT genca --cn ca-net-snmp.org  $NSCERTARGS
CAFP=`$NSCERT showcas --fingerprint --brief ca-net-snmp.org $NSCERTARGS`
CHECKVALUEISNT "$CAFP" "" "generated fingerprint for ca-net-snmp.org certificate"

# user 9: CA signed user cert
CAPTURE $NSCERT gencert -t causer --with-ca ca-net-snmp.org --san email:user9@test.net-snmp.org --email user9@test.net-snmp.org  $NSCERTARGS
CAUSERFP=`$NSCERT showcerts --fingerprint --brief causer $NSCERTARGS`
CHECKVALUEISNT "$CAUSERFP" "" "generated fingerprint for causer certificate"

CAPTURE $NSCERT gencert -t cadirect9b --with-ca ca-net-snmp.org --san email:user9b@test.net-snmp.org --email user9b@test.net-snmp.org  $NSCERTARGS
CADIRECTFP=`$NSCERT showcerts --fingerprint --brief cadirect9b $NSCERTARGS`
CHECKVALUEISNT "$CADIRECTFP" "" "generated fingerprint for cadirect certificate"

CAPTURE $NSCERT genca --cn ca2-net-snmp.org  $NSCERTARGS
CA2FP=`$NSCERT showcas --fingerprint --brief ca2-net-snmp.org $NSCERTARGS`
CHECKVALUEISNT "$CA2FP" "" "generated fingerprint for ca2-net-snmp.org certificate"

CAPTURE $NSCERT gencert -t cadirect9c --with-ca ca2-net-snmp.org --san email:user9c@test.net-snmp.org --email user9c@test.net-snmp.org  $NSCERTARGS
CADIRECT9CFP=`$NSCERT showcerts --fingerprint --brief cadirect9c $NSCERTARGS`
CHECKVALUEISNT "$CADIRECT9CFP" "" "generated fingerprint for cadirect9c certificate"

CAPTURE $NSCERT gencert -t cadirect9d --with-ca ca2-net-snmp.org --san email:user9d@test.net-snmp.org --email user9d@test.net-snmp.org  $NSCERTARGS
CADIRECT9DFP=`$NSCERT showcerts --fingerprint --brief cadirect9d $NSCERTARGS`
CHECKVALUEISNT "$CADIRECT9DFP" "" "generated fingerprint for cadirect9d certificate"

#########################################
# AGENT CONFIGURATION
#

CONFIGAGENT '[snmp]' debugTokens tsm
# ,tls,ssl,cert,tsm
CONFIGAGENT '[snmp]' doDebugging 1
CONFIGAGENT '[snmp]' logTimestamp 1
CONFIGAGENT '[snmp]' serverCert $SERVERFP

CONFIGAGENT '[snmp]' trustCert $CAFP
CONFIGAGENT '[snmp]' trustCert $CADIRECT9CFP

# common name mappings
CONFIGAGENT certSecName 9  $TESTUSERFP     --cn
CONFIGAGENT certSecName 10 $TESTUSER2FP    --cn
CONFIGAGENT certSecName 11 $OTHERUSERFP    --cn
CONFIGAGENT certSecName 12 $INVALIDUSERFP  --cn

CONFIGAGENT certSecName 20 $MAPPEDUSERFP --sn aftermapping
CONFIGAGENT certSecName 21 $EMAILUSERFP  --rfc822
CONFIGAGENT certSecName 22 $DNSUSERFP    --dns
CONFIGAGENT certSecName 23 $IPUSERFP     --ip
CONFIGAGENT certSecName 24 afile         --cn

CONFIGAGENT certSecName 100 $CAFP        --rfc822
CONFIGAGENT certSecName 101 $CADIRECTFP  --sn causerdirectmap
CONFIGAGENT certSecName 102 $CADIRECT9CFP  --sn causerdirect9cmap
# intentionally not mapped:
#CONFIGAGENT certSecName 1001 $CADIRECT9DFP  --sn causerdirect9dmap

# *** INTENTIONALLY NOT MAPPING AT ALL: ***
# CONFIGAGENT certSecName 1000 $UNMAPPEDFP ....

CONFIGAPP   serverCert  	  $SERVERFP
CONFIGAPP   defSecurityModel      tsm
CONFIGAPP   logTimestamp          1

CONFIGAGENT  rwuser -s tsm testuser authpriv
CONFIGAGENT  rwuser -s tsm testuser2 authpriv
CONFIGAGENT  rwuser -s tsm otheruser authpriv
CONFIGAGENT  rwuser -s tsm aftermapping authpriv

CONFIGAGENT  rwuser -s tsm foobaruser@example.com authpriv
CONFIGAGENT  rwuser -s tsm foobar.example.com authpriv
CONFIGAGENT  rwuser -s tsm 127.0.0.1 authpriv
CONFIGAGENT  rwuser -s tsm user8@test.net-snmp.org authpriv
CONFIGAGENT  rwuser -s tsm user9@test.net-snmp.org authpriv
CONFIGAGENT  rwuser -s tsm user10@test.net-snmp.org authpriv
CONFIGAGENT  rwuser -s tsm afileuser authpriv
CONFIGAGENT  rwuser -s tsm causerdirectmap authpriv
CONFIGAGENT  rwuser -s tsm causerdirect9cmap authpriv


# this file contains tests common to both tls and dtls usages

# start the agent up
FLAGS="-Dtls -v3 -On $SNMP_FLAGS $SNMP_TRANSPORT_SPEC:$SNMP_TEST_DEST$SNMP_SNMPD_PORT"

STARTAGENT

# shouldn't have config errors
CHECKAGENTCOUNT 0 ": Error:"

######################################################################
# EXTENDED CERTIFICATE SETUP
#
# Perform more steps of configuration that should occur *after* the
# agent has started in order to prevent it from having seen these
# files ahead of time.

# this user's fingerprint should not be recognized 
CAPTURE $NSCERT gencert -t unknownuser --san email:unknownuser@example.com  $NSCERTARGS
UNKNOWNUSER=`$NSCERT showcerts --fingerprint --brief unknownuser $NSCERTARGS`
CHECKVALUEISNT "$UNMAPPEDFP" "" "generated fingerprint for unknownuser certificate"

# this user's fingerprint should not be directly recognized, but it's
# CA should.

# user 10: CA signed cert
CAPTURE $NSCERT gencert -D -t unknowncauser --cn unknowncauser@net-snmp.org --email unknowncauser@net-snmp.org  --with-ca ca-net-snmp.org --san email:user10@test.net-snmp.org $NSCERTARGS
UNKNOWNCAUSERFP=`$NSCERT showcerts --fingerprint --brief unknowncauser $NSCERTARGS`
CHECKVALUEISNT "$UNKNOWNCAUSERFP" "" "generated fingerprint for unknowncauser certificate"

######################################################################
# ACTUAL TESTS
#
# Run the actual list of tests
#

# using user 1 - a common name mapped certificate
# (using the default "snmpapp" certificate because we don't specify another)
DOSETTEST user1SnmpApp "$FLAGS"

# now rerun the test after specifying our default using the (same) fingerprint
CONFIGAPP   clientCert  	  $TESTUSER2FP
DOSETTEST user1ClientPub "$FLAGS"

# using user 2 - a common name mapped certificate with a direct -T FP request
DOSETTEST user2DashTFPFlag "-T our_identity=$OTHERUSERFP $FLAGS"

CHECKAGENTCOUNT 4  "otheruser"

# using user 2, specifying the file name instead of the fingerprint
DOSETTEST user2DashTFileFlag "-T our_identity=otheruser $FLAGS"

CHECKAGENTCOUNT 8  "otheruser"

# using user 3 - an invalid certificate (mapped but not authorized)
DOFAILSETTEST "invalidUnauthorizedCert" "-T our_identity=$INVALIDUSERFP $FLAGS"

CHECK "authorizationError"

# using user 4 - an unmapped certificate
DOFAILSETTEST "unmappedCertificate" "-T our_identity=$UNMAPPEDFP $FLAGS"

CHECK "failed rfc5343"

# Check *their* certificate with a different one than expected; should fail
DOFAILSETTEST "incorectServerCertificate" "-r 0 -T our_identity=$OTHERUSERFP -T their_identity=$OTHERUSERFP $FLAGS"

CHECK "failed to verify ssl certificate"

# using user 5 - a completely remapped certificate (direct specified secname)
DOSETTEST user5RemappedSecname "-T our_identity=$MAPPEDUSERFP $FLAGS"

# using user 6 - a subjectAltName=email certificate mapping
DOSETTEST user6SANEmail "-T our_identity=$EMAILUSERFP $FLAGS"

# using user 7 - a subjectAltName=dns certificate mapping
DOSETTEST user7SANDNS "-T our_identity=$DNSUSERFP $FLAGS"

# using user 8 - a subjectAltName=ipv4 certificate mapping
DOSETTEST user8SANIP "-T our_identity=$IPUSERFP $FLAGS"

# using user 8 - test that certmapping works from a local filename
DOSETTEST afileuser "-T our_identity=afile $FLAGS"

# using user 9 - a CA signed certificate
DOSETTEST user9CASignedCert "-T our_identity=$CAUSERFP -T trust_cert=$CAFP $FLAGS"

# using user 9b - a CA signed certificate with a user-based fp mapping
DOSETTEST user9bCASignedDirectMap "-T our_identity=$CADIRECTFP $FLAGS"

# using user 9c - a CA2 signed certificate with a user-based fp mapping
DOSETTEST user9cCASignedDirectMap "-T our_identity=$CADIRECT9CFP $FLAGS"

# using user 9d - a CA2 signed certificate no user-based fp mapping
DOFAILSETTEST user9dCASignedDirectMap "-T our_identity=$CADIRECT9DFP $FLAGS"

# using user unknown - the server will not have seen this fingerprint at all
CAPTURE "snmpget -T our_identity=$UNKNOWNUSER -T trust_cert=$CAFP $FLAGS .1.3.6.1.2.1.1.6.0"

# different types of failure messaages for tls/dtls...
if [ $SNMP_TRANSPORT_SPEC = dtlsudp ]; then
    CHECK              "failed rfc5343 contextEngineID probing"
    CHECKAGENTCOUNT  1 "TLS Error: no certificate returned"
else
    CHECK              "failed to ssl_connect"
    CHECKAGENTCOUNT  1 "Failed SSL_accept"
fi

# using the user without a known fingerprint but with a known CA
DOSETTEST userNewFromCA " -T trust_cert=$CAFP -T our_identity=$UNKNOWNCAUSERFP $FLAGS"

STOPAGENT

FINISHED
