package Ġorg . bouncycastle . k crypto . spec Ċ Ċ import Ġorg . bouncycastle . asn 1 . ASN 1 Object Identifier Ċ import Ġorg . bouncycastle . asn 1 . gm . GM Object Identifiers Ċ import Ġorg . bouncycastle . asn 1 . nist . NIST Object Identifiers Ċ import Ġorg . bouncycastle . asn 1 . pkcs . PKCS Object Identifiers Ċ import Ġorg . bouncycastle . asn 1 . x 5 0 9 . Algorithm Identifier Ċ import Ġorg . bouncycastle . asn 1 . x 9 . X 9 Object Identifiers Ċ import Ġorg . bouncycastle . k crypto . Digest Ċ import Ġorg . bouncycastle . k crypto . ID Ċ import Ġorg . bouncycastle . k crypto . Signing Key Ċ import Ġorg . bouncycastle . k crypto . Verification Key Ċ import Ġorg . bouncycastle . k crypto . spec . as ymmetric .* Ċ Ċ // Ġthese Ġare Ġonly Ġin Ġ 1 . 0 . 2 Ċ private Ġval Ġid _ Ed 2 5 5 1 9 Ġ= ĠASN 1 Object Identifier (" 1 . 3 . 1 0 1 "). branch (" 1 1 2 "). intern () Ċ private Ġval Ġid _ Ed 4 4 8 Ġ= ĠASN 1 Object Identifier (" 1 . 3 . 1 0 1 "). branch (" 1 1 3 "). intern () Ċ Ċ interface ĠSig Alg Spec Ġ: ĠAl g Spec < Algorithm Identifier > Ġ{ ĊĠĠĠĠĊĠĠĠ Ġfun Ġvalidated Spec ( key : ĠSign ing Key ): ĠSig Alg Spec ĊĊĠĠĠ Ġfun Ġvalidated Spec ( key : ĠVerification Key ): ĠSig Alg Spec ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Spec ( alg Id : ĠAlgorithm Identifier , Ġid : ĠID ?): ĠSig Alg Spec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsig Alg Spec Ġ= Ġwhen Ġ( alg Id . algorithm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN IST Object Identifiers . d sa _ with _ sha 2 2 4 Ġ-> ĠDS AS ig Spec ( Digest . SHA 2 2 4 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN IST Object Identifiers . d sa _ with _ sha 2 5 6 Ġ-> ĠDS AS ig Spec ( Digest . SHA 2 5 6 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN IST Object Identifiers . d sa _ with _ sha 3 8 4 Ġ-> ĠDS AS ig Spec ( Digest . SHA 3 8 4 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN IST Object Identifiers . d sa _ with _ sha 5 1 2 Ġ-> ĠDS AS ig Spec ( Digest . SHA 5 1 2 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPKCS Object Identifiers . sha 1 With RSA Encryption Ġ-> ĠPKCS 1 Sig Spec ( Digest . SHA 1 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPKCS Object Identifiers . sha 2 2 4 With RSA Encryption Ġ-> ĠPKCS 1 Sig Spec ( Digest . SHA 2 2 4 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPKCS Object Identifiers . sha 2 5 6 With RSA Encryption Ġ-> ĠPKCS 1 Sig Spec ( Digest . SHA 2 5 6 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPKCS Object Identifiers . sha 3 8 4 With RSA Encryption Ġ-> ĠPKCS 1 Sig Spec ( Digest . SHA 3 8 4 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPKCS Object Identifiers . sha 5 1 2 With RSA Encryption Ġ-> ĠPKCS 1 Sig Spec ( Digest . SHA 5 1 2 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX 9 Object Identifiers . ecd sa _ with _ SHA 1 Ġ-> ĠEC DS AS ig Spec ( Digest . SHA 1 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX 9 Object Identifiers . ecd sa _ with _ SHA 2 2 4 Ġ-> ĠEC DS AS ig Spec ( Digest . SHA 2 2 4 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX 9 Object Identifiers . ecd sa _ with _ SHA 2 5 6 Ġ-> ĠEC DS AS ig Spec ( Digest . SHA 2 5 6 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX 9 Object Identifiers . ecd sa _ with _ SHA 3 8 4 Ġ-> ĠEC DS AS ig Spec ( Digest . SHA 3 8 4 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX 9 Object Identifiers . ecd sa _ with _ SHA 5 1 2 Ġ-> ĠEC DS AS ig Spec ( Digest . SHA 5 1 2 , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid _ Ed 2 5 5 1 9 Ġ-> ĠEd DS AS ig Spec ( alg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid _ Ed 4 4 8 Ġ-> ĠEd DS AS ig Spec ( alg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSM 3 with SM 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠASN 1 Object Identifier (" 1 . 2 . 1 5 6 . 1 0 1 9 7 . 1 . 5 0 1 ") Ġ-> ĠSM 2 Sig Spec ( Digest . SM 3 , Ġid , Ġalg Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" unknown Ġalgorithm : Ġ" Ġ+ Ġalg Id . algorithm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsig Alg Spec ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }