FromUnsignedBigInteger() public static method

public static FromUnsignedBigInteger ( byte big ) : ASN1
big byte
return ASN1
Ejemplo n.º 1
0
        /// <summary>
        /// Encodes the RSAParameters as an asn1-encoded RSAPublicKey or RSAPrivateKey struct, as defined by PKCS#1 / rfc3447.
        /// </summary>
        /// <param name="rsa">The RSA.</param>
        /// <returns></returns>
        /// <remarks>Adapted from Mono.Security</remarks>
        public static byte[] EncodeAsAsn1(RSAParameters param)
        {
            ASN1 asn1;

            // See: http://tools.ietf.org/html/rfc3447
            //		- A.1.1 RSA public key syntax
            //		- A.1.2 RSA private key syntax

            if (param.D == null)
            {
                // Emit a RSAPublicKey ASN.1 type.
                asn1 = new ASN1(0x30);
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.Modulus));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.Exponent));
            }
            else
            {
                // Emit a RSAPrivateKey ASN.1 type.
                asn1 = new ASN1(0x30);
                asn1.Add(new ASN1(0x02, new byte[1] {
                    0x00
                }));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.Modulus));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.Exponent));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.D));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.P));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.Q));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.DP));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.DQ));
                asn1.Add(ASN1Convert.FromUnsignedBigInteger(param.InverseQ));
            }

            return(asn1.GetBytes());
        }
Ejemplo n.º 2
0
            /*
             * 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
             * }
             */
            static public byte[] Encode(RSA rsa)
            {
                RSAParameters param = rsa.ExportParameters(true);

                ASN1 rsaPrivateKey = new ASN1(0x30);

                rsaPrivateKey.Add(new ASN1(0x02, new byte[1] {
                    0x00
                }));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.Modulus));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.Exponent));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.D));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.P));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.Q));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.DP));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.DQ));
                rsaPrivateKey.Add(ASN1Convert.FromUnsignedBigInteger(param.InverseQ));

                return(rsaPrivateKey.GetBytes());
            }
Ejemplo n.º 3
0
            static public byte[] Encode(DSA dsa)
            {
                DSAParameters param = dsa.ExportParameters(true);

                return(ASN1Convert.FromUnsignedBigInteger(param.X).GetBytes());
            }