PKCS-1 {
    iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1)
    modules(0) pkcs-1(1)
}

-- $Revision: 1.1 $

DEFINITIONS EXPLICIT TAGS ::=

BEGIN

-- IMPORTS id-sha256, id-sha384, id-sha512
--     FROM NIST-SHA2 {
--         joint-iso-itu-t(2) country(16) us(840) organization(1)
--         gov(101) csor(3) nistalgorithm(4) modules(0) sha2(1)
--     };

pkcs-1    OBJECT IDENTIFIER ::= {
    iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1
}

rsaEncryption    OBJECT IDENTIFIER ::= { pkcs-1 1 }

id-RSAES-OAEP    OBJECT IDENTIFIER ::= { pkcs-1 7 }

id-pSpecified    OBJECT IDENTIFIER ::= { pkcs-1 9 }

id-RSASSA-PSS    OBJECT IDENTIFIER ::= { pkcs-1 10 }

md2WithRSAEncryption       OBJECT IDENTIFIER ::= { pkcs-1 2 }
md5WithRSAEncryption       OBJECT IDENTIFIER ::= { pkcs-1 4 }
sha1WithRSAEncryption      OBJECT IDENTIFIER ::= { pkcs-1 5 }
sha256WithRSAEncryption    OBJECT IDENTIFIER ::= { pkcs-1 11 }
sha384WithRSAEncryption    OBJECT IDENTIFIER ::= { pkcs-1 12 }
sha512WithRSAEncryption    OBJECT IDENTIFIER ::= { pkcs-1 13 }

id-sha1    OBJECT IDENTIFIER ::= {
    iso(1) identified-organization(3) oiw(14) secsig(3)
    algorithms(2) 26
}

id-md2 OBJECT IDENTIFIER ::= {
    iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2
}

id-md5 OBJECT IDENTIFIER ::= {
    iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5
}

id-mgf1    OBJECT IDENTIFIER ::= { pkcs-1 8 }


RSAPublicKey ::= SEQUENCE {
    modulus           INTEGER,  -- n
    publicExponent    INTEGER   -- e
}

RSAPrivateKey ::= SEQUENCE {
    version           Version,
    modulus           INTEGER,  -- n
    publicExponent    INTEGER,  -- e
    privateExponent   INTEGER,  -- d
    prime1            INTEGER,  -- p
    prime2            INTEGER,  -- q
    exponent1         INTEGER,  -- d mod (p-1)
    exponent2         INTEGER,  -- d mod (q-1)
    coefficient       INTEGER,  -- (inverse of q) mod p
    otherPrimeInfos   OtherPrimeInfos OPTIONAL
}

Version ::= INTEGER { two-prime(0), multi(1) }
    (CONSTRAINED BY {
        -- version must be multi if otherPrimeInfos present --
    })

OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo

OtherPrimeInfo ::= SEQUENCE {
    prime             INTEGER,  -- ri
    exponent          INTEGER,  -- di
    coefficient       INTEGER   -- ti
}

Algorithm ::= SEQUENCE {
	algorithm OBJECT IDENTIFIER,
	parameters ANY DEFINED BY algorithm OPTIONAL
}

AlgorithmNull ::= SEQUENCE {
	algorithm OBJECT IDENTIFIER,
	parameters NULL
}


RSASSA-PSS-params ::= SEQUENCE {
    hashAlgorithm      [0] Algorithm,     --  DEFAULT sha1,
    maskGenAlgorithm   [1] Algorithm,     --  DEFAULT mgf1SHA1,
    saltLength         [2] INTEGER            DEFAULT 20,
    trailerField       [3] TrailerField       DEFAULT trailerFieldBC
}

TrailerField ::= INTEGER { trailerFieldBC(1) }

DigestInfo ::= SEQUENCE {
	digestAlgorithm Algorithm,
	digest OCTET STRING
}

DigestInfoNull ::= SEQUENCE {
	digestAlgorithm AlgorithmNull,
	digest OCTET STRING
}


END  -- PKCS1Definitions