| /* { dg-do compile { target ia64-*-* } } */ |
| /* { dg-options "-O3 -msched-control-spec" } */ |
| typedef long unsigned int size_t; |
| typedef unsigned char uint8_t; |
| typedef unsigned int uint32_t; |
| typedef uint8_t byte; |
| typedef enum pgpArmor_e |
| { |
| PGPARMOR_ERR_CRC_CHECK = -7, PGPARMOR_ERR_BODY_DECODE = |
| -3, PGPARMOR_ERR_UNKNOWN_ARMOR_TYPE = -2, PGPARMOR_ERR_NO_BEGIN_PGP = |
| -1, PGPARMOR_NONE = 0, PGPARMOR_MESSAGE = 1, PGPARMOR_PUBKEY = |
| 5, PGPARMOR_PRIVKEY = 6, PGPARMOR_SECKEY = 7 |
| } |
| pgpArmor; |
| int b64decode (const char *, void **, size_t *); |
| unsigned int pgpCRC (const byte * octets, size_t len) |
| { |
| unsigned int crc = 0xb704ce; |
| int i; |
| while (len--) |
| { |
| for (i = 0; i < 8; i++) |
| { |
| crc <<= 1; |
| if (crc & 0x1000000) |
| crc ^= 0x1864cfb; |
| } |
| } |
| } |
| pgpArmor pgpReadPkts (const char *fn, const byte ** pkt, size_t * pktlen) |
| { |
| const byte *b = ((void *) 0); |
| const char *enc = ((void *) 0); |
| byte *dec; |
| size_t declen; |
| uint32_t crcpkt, crc; |
| int pstate = 0; |
| pgpArmor ec = PGPARMOR_ERR_NO_BEGIN_PGP; |
| { |
| switch (pstate) |
| { |
| case 0: |
| if (b64decode (enc, (void **) &dec, &declen) != 0) |
| { |
| goto exit; |
| } |
| crc = pgpCRC (dec, declen); |
| } |
| } |
| exit:if (ec > PGPARMOR_NONE && pkt) |
| *pkt = b; |
| } |