(A,kA),(B,kB) -- key pairs of a fisher
(C,kC) -- key pair of a CA
X,Y -- some certificate text
sign :: Text->Privkey->Signature
check :: Text->Signature->Pubkey->Boolean
fisher --> CA : ((X,A) , sign (X,A) kA)
fisher <-- CA : ( ((X,A) , sign (X,A) kA) , sign ((X,A) , sign (X,A) kA) kC )
fisher --> User : ( ((Y,B) , sign (Y,B) kB) , sign ((X,A) , sign (X,A) kA) kC )
WHERE
check ((Y,B) , sign (Y,B) kB) (sign ((X,A) , sign (X,A) kA) kC) C == true