blob: aadbc7e7a1635a4c11bd1504656bfc5f4f100047 [file] [log] [blame]
// Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
var X509 = entd.crypto.OpenSSL.X509;
// X.509 certificate (DER).
const CERT_DATA_DER =
"308203B53082029DA003020102020900979D8DA71DBE42FF300D06092A864886F70D01" +
"010505003045310B3009060355040613024155311330110603550408130A536F6D652D" +
"53746174653121301F060355040A1318496E7465726E65742057696467697473205074" +
"79204C7464301E170D3130313131393232343732305A170D3130313231393232343732" +
"305A3045310B3009060355040613024155311330110603550408130A536F6D652D5374" +
"6174653121301F060355040A1318496E7465726E657420576964676974732050747920" +
"4C746430820122300D06092A864886F70D01010105000382010F003082010A02820101" +
"00CB78D8AA4BF290AC26402FF120B22246F63E1A49DB4E05CD2AD580A86E8F4E93C903" +
"EEBC1E6A17419AEEBCAFDD08C7D9A7202E4A6C6F0AAA7F661E6F607B8FB1880D07EBFB" +
"E00930F565576A236CBB8DDED6E9B3E4B9679B2613AAC140D237037DF4CBC91D1551DC" +
"0C1C185A0DC158FBA85D41102C89A6DEFC21B4D4855C12BF6B6563DA8F07A799D9BB3F" +
"F67BC7978A2FF19D4D0E63DA48B0754DCC3444F5E0EA756A9867237E25868A08DA22FC" +
"307BF2A8C06D0FA0D4064B1897298ED150B7EFDF82416569A201854ED392EBA6617115" +
"0C24AD80B1F0F28DEB7C954204D38EAADFE57F0458AE6523ABB2E0F68DCC5FABD55DF8" +
"C965F69368D24E6FFAE284CD0203010001A381A73081A4301D0603551D0E04160414B6" +
"77B9FCA5111F646E91A7DF6B31B600D341D91B30750603551D23046E306C8014B677B9" +
"FCA5111F646E91A7DF6B31B600D341D91BA149A4473045310B30090603550406130241" +
"55311330110603550408130A536F6D652D53746174653121301F060355040A1318496E" +
"7465726E6574205769646769747320507479204C7464820900979D8DA71DBE42FF300C" +
"0603551D13040530030101FF300D06092A864886F70D01010505000382010100A4B0DD" +
"DB579C0AA68A0ABAF6A32D537389C0A25FF85D11D22C84A723B348856081E5A6E99218" +
"AEDEB2BAC9704F906B436EBBA2E2B521EDCC42083C69931E1EF792CFBEA99086ED5B54" +
"A38B121377A31439075FE61E21B1CB36BE25C31D9B23DE59993CEC369F304A596DF218" +
"AB9E55A0476EF1B98D01D787B445AABF0B816C2897C08AA733619B70BCDCA7AEC2EA1B" +
"85C56A968AF24230DF70D3EE2CD93C150169E5A7649B7EE64DC6FFE952CE7613A281AF" +
"9987A3C3A3761D6CBA618AC1744FB9B9B7A59492C8C47917BE68945537B4151DCD73B5" +
"C1241B2CEFEDFFBFE88F60B2C60AA0BCABE27DFF97FE738306DA94A2C3F5FD4DD591ED" +
"28386FAC26D5EF2D";
// X.509 certificate (PEM text).
const CERT_DATA_PEM_TEXT =
"-----BEGIN CERTIFICATE-----\n" +
"MIIDtTCCAp2gAwIBAgIJAJedjacdvkL/MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV\n" +
"BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\n" +
"aWRnaXRzIFB0eSBMdGQwHhcNMTAxMTE5MjI0NzIwWhcNMTAxMjE5MjI0NzIwWjBF\n" +
"MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\n" +
"ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\n" +
"CgKCAQEAy3jYqkvykKwmQC/xILIiRvY+GknbTgXNKtWAqG6PTpPJA+68HmoXQZru\n" +
"vK/dCMfZpyAuSmxvCqp/Zh5vYHuPsYgNB+v74Akw9WVXaiNsu43e1umz5LlnmyYT\n" +
"qsFA0jcDffTLyR0VUdwMHBhaDcFY+6hdQRAsiabe/CG01IVcEr9rZWPajwenmdm7\n" +
"P/Z7x5eKL/GdTQ5j2kiwdU3MNET14Op1aphnI34lhooI2iL8MHvyqMBtD6DUBksY\n" +
"lymO0VC379+CQWVpogGFTtOS66ZhcRUMJK2AsfDyjet8lUIE046q3+V/BFiuZSOr\n" +
"suD2jcxfq9Vd+Mll9pNo0k5v+uKEzQIDAQABo4GnMIGkMB0GA1UdDgQWBBS2d7n8\n" +
"pREfZG6Rp99rMbYA00HZGzB1BgNVHSMEbjBsgBS2d7n8pREfZG6Rp99rMbYA00HZ\n" +
"G6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV\n" +
"BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJedjacdvkL/MAwGA1UdEwQF\n" +
"MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKSw3dtXnAqmigq69qMtU3OJwKJf+F0R\n" +
"0iyEpyOzSIVggeWm6ZIYrt6yuslwT5BrQ267ouK1Ie3MQgg8aZMeHveSz76pkIbt\n" +
"W1SjixITd6MUOQdf5h4hscs2viXDHZsj3lmZPOw2nzBKWW3yGKueVaBHbvG5jQHX\n" +
"h7RFqr8LgWwol8CKpzNhm3C83KeuwuobhcVqloryQjDfcNPuLNk8FQFp5adkm37m\n" +
"Tcb/6VLOdhOiga+Zh6PDo3YdbLphisF0T7m5t6WUksjEeRe+aJRVN7QVHc1ztcEk\n" +
"Gyzv7f+/6I9gssYKoLyr4n3/l/5zgwbalKLD9f1N1ZHtKDhvrCbV7y0=\n" +
"-----END CERTIFICATE-----";
// X.509 certificate (PEM binary).
const CERT_DATA_PEM =
"2D2D2D2D2D424547494E2043455254494649434154452D2D2D2D2D0A4D494944745443" +
"4341703267417749424167494A414A65646A616364766B4C2F4D413047435371475349" +
"623344514542425155414D455578437A414A42674E560A42415954416B46564D524D77" +
"4551594456515149457770546232316C4C564E305958526C4D53457748775944565151" +
"4B4578684A626E526C636D356C644342580A6157526E6158527A494642306553424D64" +
"4751774868634E4D5441784D5445354D6A49304E7A49775768634E4D5441784D6A4535" +
"4D6A49304E7A4977576A42460A4D517377435159445651514745774A42565445544D42" +
"45474131554543424D4B553239745A533154644746305A5445684D4238474131554543" +
"684D59535735300A5A584A755A58516756326C6B5A326C306379425164486B67544852" +
"6B4D494942496A414E42676B71686B6947397730424151454641414F43415138414D49" +
"49420A43674B434151454179336A59716B76796B4B776D51432F78494C49695276592B" +
"476B6E625467584E4B745741714736505470504A412B3638486D6F58515A72750A764B" +
"2F64434D665A70794175536D78764371702F5A683576594875507359674E422B763734" +
"416B773957565861694E737534336531756D7A354C6C6E6D7959540A71734641306A63" +
"446666544C795230565564774D48426861446346592B36686451524173696162652F43" +
"473031495663457239725A5750616A77656E6D646D370A502F5A377835654B4C2F4764" +
"5451356A326B69776455334D4E455431344F70316170686E4933346C686F6F4932694C" +
"384D487679714D427444364455426B73590A6C796D4F3056433337392B43515756706F" +
"67474654744F5336365A686352554D4A4B3241736644796A6574386C55494530343671" +
"332B562F424669755A534F720A737544326A637866713956642B4D6C6C39704E6F306B" +
"35762B754B457A514944415141426F34476E4D49476B4D423047413155644467515742" +
"42533264376E380A705245665A473652703939724D6259413030485A477A423142674E" +
"5648534D45626A42736742533264376E38705245665A473652703939724D6259413030" +
"485A0A4736464A704563775254454C4D416B474131554542684D4351565578457A4152" +
"42674E5642416754436C4E766257557455335268644755784954416642674E560A4241" +
"6F5447456C7564475679626D5630494664705A47647064484D6755485235494578305A" +
"49494A414A65646A616364766B4C2F4D41774741315564457751460A4D414D42416638" +
"774451594A4B6F5A496876634E415145464251414467674542414B5377336474586E41" +
"716D6967713639714D7455334F4A774B4A662B4630520A3069794570794F7A53495667" +
"6765576D365A49597274367975736C7754354272513236376F754B314965334D516767" +
"38615A4D65487665537A3736706B4962740A5731536A6978495464364D554F51646635" +
"6834687363733276695844485A736A336C6D5A504F77326E7A424B57573379474B7565" +
"56614248627647356A5148580A683752467172384C6757776F6C38434B707A4E686D33" +
"4338334B657577756F62686356716C6F7279516A4466634E50754C4E6B384651467035" +
"61646B6D33376D0A5463622F36564C4F64684F6967612B5A683650446F335964624C70" +
"686973463054376D35743657556B736A456552652B614A52564E3751564863317A7463" +
"456B0A47797A7637662B2F364939677373594B6F4C7972346E332F6C2F357A67776261" +
"6C4B4C443966314E315A48744B446876724362563779303D0A2D2D2D2D2D454E442043" +
"455254494649434154452D2D2D2D2D0A";
function testCertExport(x509, source, source_type) {
var x509_export;
// PEM tests.
x509_export = x509.toFormat(X509.X509_FORMAT_PEM);
if (!x509_export)
return println("Failed to export certificate in PEM format.");
if (source_type == X509.X509_FORMAT_PEM)
if (x509_export.toUpperCase() != source.toUpperCase())
return println("Exported PEM data does not match original input.");
// PEM text tests.
x509_export = x509.toFormat(X509.X509_FORMAT_PEM_TEXT);
if (!x509_export)
return println("Failed to export certificate in PEM text format.");
if (source_type == X509.X509_FORMAT_PEM_TEXT)
if (x509_export.replace(/\n/gi, "") != source.replace(/\n/gi, ""))
return println("Exported PEM text data does not match original input.");
// DER tests.
x509_export = x509.toFormat(X509.X509_FORMAT_DER);
if (!x509_export)
return println("Failed to export certificate in DER format.");
if (source_type == X509.X509_FORMAT_DER)
if (x509_export.toUpperCase() != source.toUpperCase())
return println("Exported DER data does not match original input.");
return true;
}
entd.onLoad = function () {
var x509;
// Test certificate in PEM format.
x509 = new entd.crypto.OpenSSL.X509(CERT_DATA_PEM, X509.X509_FORMAT_PEM);
if (!(x509 instanceof X509))
return println("Failed to create X.509 (PEM) certificate object.");
if (!testCertExport(x509, CERT_DATA_PEM, X509.X509_FORMAT_PEM))
return;
if (x509)
x509.dispose();
// Test certificate in PEM text format.
x509 = new entd.crypto.OpenSSL.X509(CERT_DATA_PEM_TEXT,
X509.X509_FORMAT_PEM_TEXT);
if (!(x509 instanceof X509))
return println("Failed to create X.509 (PEM) text certificate object.");
if (!testCertExport(x509, CERT_DATA_PEM_TEXT, X509.X509_FORMAT_PEM_TEXT))
return;
if (x509)
x509.dispose();
// Test certificate in DER format.
x509 = new entd.crypto.OpenSSL.X509(CERT_DATA_DER, X509.X509_FORMAT_DER);
if (!(x509 instanceof X509))
return println("Failed to create X.509 (DER) certificate object.");
if (!testCertExport(x509, CERT_DATA_DER, X509.X509_FORMAT_DER))
return;
if (x509)
x509.dispose();
println("LOOKS OK");
}